全部產品
Search
文件中心

Cloud Config:設定自訂修正

更新時間:Jul 13, 2024

當您選擇從模板建立規則或自訂建立規則時,均可以設定自訂修正,通過Function ComputeFC修正不合規資源。當該條規則綁定的資源被判定為不合規時,可以執行修正,快速修正不合規資源。

前提條件

請確保您已開通Function ComputeFC。具體操作,請參見開通服務

背景資訊

本文以從模板選擇規則模板運行中的ECS執行個體未綁定公網地址建立規則為例,為您介紹設定自訂修正和執行修正的方法。

規則模板運行中的ECS執行個體未綁定公網地址用於檢測運行中的ECS執行個體是否直接綁定IPv4公網地址。如果ECS執行個體檢測結果為“不合規”(即綁定公網IP地址),則大量停止有公網IP的ECS執行個體。

操作步驟

  1. 登入配置審計控制台

  2. (可選)在左上方選擇目標帳號組。

    僅資來源目錄下的管理帳號需要執行該操作。單個阿里雲帳號不涉及。

  3. 在左側導覽列,選擇合規審計 > 規則

  4. 規則頁面,單擊建立規則

  5. 選擇建立方式頁面,先選擇基於模板建立,再從模板中選擇規則運行中的ECS執行個體未綁定公網地址,然後單擊下一步

  6. 設定基本屬性頁面,各參數均保持預設值,單擊下一步

  7. 設定生效範圍頁面,各參數均保持預設值,單擊下一步

  8. 修正設定頁面,開啟設定修正開關,先選擇自訂修正,再選擇觸發方式手動觸發,然後選擇函數ARN,最後單擊提交

    重要
    • 由於自動修正會根據您的預設參數自動修改不合規資源的配置資訊,可能會影響業務的連續性,因此系統預設觸發方式手動觸發,推薦您使用預設設定。

    • 當您確保本次修正不會對業務造成影響時,可以選擇觸發方式自動觸發,當配置審計檢測到不合規資源時,會自動執行修正。

    單擊前往創建新的函數,在Function Compute控制台上建立服務和函數。具體操作,請參見快速建立函數

    建立函數時,函數類型選擇事件函數運行環境選擇python 3,其他參數均可根據實際需求設定,函數程式碼範例如下:

    #!/usr/bin/env python
    # -*- encoding: utf-8 -*-
    import json
    from aliyunsdkcore.client import AcsClient
    from aliyunsdkcore.acs_exception.exceptions import ClientException
    from aliyunsdkcore.acs_exception.exceptions import ServerException
    from aliyunsdkcore.auth.credentials import AccessKeyCredential
    from aliyunsdkcore.auth.credentials import StsTokenCredential
    from aliyunsdkecs.request.v20140526.StopInstanceRequest import StopInstanceRequest
    from aliyunsdkcore.auth.credentials import AccessKeyCredential
    from aliyunsdkcore.auth.credentials import StsTokenCredential
    from aliyunsdkkms.request.v20160120.DecryptRequest import DecryptRequest
    
    # -*- coding: utf-8 -*-
    
    import logging
    import json
    
    logger = logging.getLogger()
    
    
    def handler(event, context):
        get_resources_non_compliant(event, context)
    
    
    def get_resources_non_compliant(event, context):
        resources = parse_json(event)
        for resource in resources:
            remediation(resource, context)
    
    
    def parse_json(content):
        """
        Parse string to json object
        :param content: json string content
        :return: Json object
        """
        try:
            return json.loads(content)
        except Exception as e:
            logger.error('Parse content:{} to json error:{}.'.format(content, e))
            return None
    
    
    def remediation(resource, context):
        logger.info(resource)
        region_id = resource['regionId']
        account_id = resource['accountId']
        resource_id = resource['resourceId']
        resource_type = resource['resourceType']
        config_rule_id = resource['configRuleId']
        if resource_type == 'ACS::ECS::Instance' and config_rule_id == 'cr-f8a1626622af005d****':
            print(region_id, account_id, resource_id, resource_type, config_rule_id)
            stop_ecs_instance(context, region_id, resource_id)
    
    def stop_ecs_instance(context, resource_region_id, resource_id):
        logger.info("注意:開始停機操作{}{}".format(resource_region_id, resource_id))
    
        creds = context.credentials
        client = AcsClient(creds.access_key_id, creds.access_key_secret, region_id=resource_region_id)
    
        request = StopInstanceRequest()
        request.set_accept_format('json')
        request.set_InstanceId("i-hp3f6lofgrnml5mt****")
        request.set_StoppedMode("KeepCharging")
        request.add_query_param('SecurityToken', creds.security_token)
    
        response = client.do_action_with_exception(request)
        logger.info(response)
    說明

    自訂修正的最新函數程式碼範例,請參見aliyun-config-remediation.py

    本函數代碼中的主要函數如下:

    • handler:為配置審計觸發的預設函數入口,即自訂修正觸發時調用的函數。handler在建立函數時進行設定。

    • get_resources_non_compliant:解析不合規資源。

    • remediation:為自訂修正入口,可以根據您的檢測需求設定。例如:規則模板“運行中的ECS執行個體未綁定公網地址”,如果檢測結果為“不合規”(即綁定公網IP地址),則修正為停機操作。

  9. 手動執行修正。

    1. 規則頁面,單擊目標規則對應修正模板列的修正詳情

    2. 修正詳情頁簽,單擊修正詳情正後方的執行手動修正

      執行結果清單地區,您可以查看修正執行結果。對於修正失敗的資源,您還可以查看失敗原因。

      說明

      修正詳情頁簽,單擊修正模板正後方的函數ARN,進入Function Compute控制台的目標函數的函數代碼頁簽。

相關文檔

在多帳號情境下,函數代碼及授權配置,請參見企業多帳號情境下實現不合規資源自動修正