日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

通過輕量消息隊列(原 MNS)通知機制實現不合規資源的自動修復

當配置審計發現資源配置有變更且不合規時,以事件通知的形式將告警推送到您指定的輕量消息隊列(原 MNS)主題。當您收到不合規告警時,通過函數計算2.0實現不合規資源的自動修復。

前提條件

應用場景

您在配置審計控制臺通過規則模板“test-oss-bucket-public-read-prohibited”創建一條資源類型為“OSS存儲空間”的規則,配置審計自動審計當前賬號下所有OSS存儲空間的資源,其中一條資源的合規結果為不合規,如下圖所示。Bucket不合規

數據規劃

本文以修復對象存儲OSS的存儲空間的讀寫權限為例,為您介紹通過配置審計的MNS通知機制實現不合規資源自動修復的操作方法。相關數據規劃如下表所示。

云服務

參數

示例

配置審計

規則模板

oss-bucket-public-read-prohibited

規則名稱

test-oss-bucket-public-read-prohibited

輕量消息隊列(原 MNS)

主題名稱

MNSTestConfig

主題地域

華東2(上海)

對象存儲OSS

OSS Bucket

config-snapshot

Bucket ACL

公共讀

函數計算

服務

resource_repair

服務的系統模板權限

AliyunOSSFullAccess

函數

oss_repair_acl_trigger

觸發器

ConfigRuleNonComplianceMNSTrigger

說明

由于配置審計部署在華東2(上海),為了減少網絡損耗,建議輕量消息隊列(原 MNS)的主題地域選擇華東2(上海)

操作流程

通過配置審計的MNS通知機制實現不合規資源自動修復的操作流程如下圖所示。修復流程

操作步驟

  1. 登錄配置審計控制臺,設置資源合規事件投遞到輕量消息隊列(原 MNS)的指定主題(Topic),例如:MNSTestConfig。

  2. 新建服務。

    1. 登錄函數計算控制臺

    2. 在左側導航欄,單擊服務及函數

    3. 在頂部菜單欄,選擇地域,例如:華東2(上海)

    4. 服務列表頁面,單擊創建服務

    5. 創建服務面板,名稱輸入resource_repair

    6. 單擊確定

  3. 授權目標服務修改OSS存儲空間的權限。

    1. 在服務resource_repair的左側導航欄,單擊服務詳情

    2. 角色配置區域,單擊編輯

    3. 選擇一個包含權限策略AliyunOSSFullAccess的服務角色。

      如果您沒有符合要求的服務角色,請單擊創建新的服務角色,在訪問控制RAM控制臺創建角色,該角色的可信實體類型必須選擇阿里云服務授信服務必須選擇函數計算,權限策略必須選擇AliyunOSSFullAccess。具體操作,請參見創建可信實體為阿里云服務的RAM角色

    4. 單擊保存

  4. 新建函數。

    1. 在服務resource_repair的左側導航欄,單擊函數管理

    2. 單擊創建函數

    3. 創建函數頁面,函數名稱輸入oss_repair_acl_trigger運行環境選擇Python 3.6,其他參數保持默認值。

    4. 單擊創建

  5. 配置函數的環境變量。

    1. 在函數oss_repair_acl_trigger函數代碼頁簽,單擊函數配置頁簽。

    2. 環境變量區域,單擊編輯

    3. 單擊添加變量,輸入該環境變量的變量名稱和變量值。

      • 變量prepareRuleName

        prepareRuleName與函數計算自動修復代碼中參數ENV_RULE_NAME的取值保持一致。

      • test-oss-bucket-public-read-prohibited

        test-oss-bucket-public-read-prohibited為配置審計中的規則名稱。

    4. 單擊確定

  6. 新建觸發器。

    1. 在函數oss_repair_acl_trigger函數配置頁簽,單擊觸發器管理頁簽。

    2. 單擊創建觸發器

    3. 選擇觸發器類型輕量消息隊列

    4. 設置輕量消息隊列(原 MNS)觸發器的相關參數。

      參數設置如下:

      • 名稱輸入ConfigRuleNonComplianceMNSTrigger

      • MNS地域選擇華東2(上海)

      • 主題選擇MNSTestConfig

      • Event格式選擇STREAM

      • 角色名稱選擇AliyunMNSNotificationRole

    5. 單擊確定

      新建觸發器完成后,當配置審計對目標資源進行評估時,您會接收到該資源的不合規事件通知。

  7. 配置自動修復代碼。

    1. 在函數oss_repair_acl_trigger觸發器管理頁簽,單擊函數代碼頁簽。

    2. 單擊文件index.py

    3. 拷貝并粘貼如下代碼至文件index.py

      # -*- coding: utf-8 -*-
      import logging
      import json
      import os
      import base64
      import binascii
      import oss2
      from aliyunsdkcore.acs_exception.exceptions import ClientException, ServerException
      
      IDENTIFIER = 'evaluationResultIdentifier'
      QUALIFIER = 'evaluationResultQualifier'
      RULE_NAME = 'configRuleName'
      ENV_RULE_NAME = 'prepareRuleName'
      RESOURCE_ID = 'resourceId'
      REGION_ID = 'regionId'
      FAIL = 'fail'
      SUCC = 'success'
      
      logger = logging.getLogger()
      
      
      def handler(event, context):
          logger.info("mns_topic trigger event = {}".format(event))
          decoded = None
          if event:
              try:
                  decoded = base64.b64decode(event)
              except binascii.Error as ex:
                  logger.exception('mns_topic trigger event malformed!')
                  return FAIL
          if not decoded:
              return FAIL
          notify_json = json.loads(decoded)
          if notify_json and IDENTIFIER in notify_json:
              evaluationResultIdentifier = notify_json.get(IDENTIFIER)
              if QUALIFIER in evaluationResultIdentifier and RULE_NAME in evaluationResultIdentifier.get(QUALIFIER):
                  evaluationResultQualifier = evaluationResultIdentifier.get(QUALIFIER)
                  configRuleName = evaluationResultQualifier.get(RULE_NAME)
                  # os.environ.get(ENV_RULE_NAME) 獲取您設置的規則名稱,例如:test-oss-bucket-public-read-prohibited。
                  if configRuleName == os.environ.get(ENV_RULE_NAME):
                      if RESOURCE_ID in evaluationResultQualifier and REGION_ID in evaluationResultQualifier:
                          bucket_name = evaluationResultQualifier.get(RESOURCE_ID)
                          region = evaluationResultQualifier.get(REGION_ID)
                          if region and bucket_name:
                              try:
                                  remedy_by_fc_assume(context, region, bucket_name)
                              except Exception as ex:
                                  logger.exception('remedy fail!')
          return FAIL
      
      
      def remedy_by_fc_assume(context, region, bucket_name):
          creds = context.credentials
          auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
          bucket = oss2.Bucket(auth, 'http://oss-' + region + '.aliyuncs.com', bucket_name)
          bucket.put_bucket_acl(oss2.BUCKET_ACL_PRIVATE)
          logger.info('bucket {bucket_name} in {region} acl remedy succ.'.format(bucket_name=bucket_name, region=region))
      說明

      本段代碼以規則名稱prepareRuleName為例,為您介紹不合規資源的自動修復方法。如需通過其他參數修復,請參見資源不合規事件內容示例

    4. 單擊左上角的部署代碼

  8. 十分鐘后,查看修復結果。

    說明

    當資源配置無變更,且審計結果為不合規時,您還需要手動執行審計,然后再執行此步驟。手動執行審計的操作方法,請參見手動執行審計

    • 通過配置審計控制臺查看OSS Bucket合規

    • 通過OSS控制臺查看OSS Bucket合規