當企業在云上有多個賬號時,安全應急團隊或運維團隊需要實時了解整個企業的云上資源動態,訂閱重要或高風險資源的配置變更信息,以便及時監控和維護這些資源。企業通過資源目錄對多個賬號中的資源進行統一管理后,可以通過配置審計將資源的配置變更事件投遞到事件總線EventBridge,還可以通過函數計算中2.0的觸發器將事件總線EventBridge中的資源配置變更事件投遞到函數計算。
應用場景
某企業統一管理多賬號中資源的配置變更事件的應用場景如下圖所示。
某企業的管理賬號通過一個成員(日志賬號A)查看其他成員(業務賬號B和業務賬號C)中資源的配置變更事件,本文以查看前綴為sg-
的RAM角色的配置變更事件為例進行介紹。
前提條件
資源目錄的管理賬號已將日志賬號A、業務賬號B和業務賬號C加入資源目錄。具體操作,請參見創建成員或邀請阿里云賬號加入資源目錄。
請確保您已開通函數計算服務。具體操作,請參見快速創建函數。
請確保您已開通事件總線EventBridge服務。具體操作,請參見開通事件總線EventBridge并授權。
數據規劃
本文以訪問控制的RAM角色的配置變更事件為例,為您介紹通過配置審計、事件總線EventBridge和函數計算實現訂閱資源的配置變更事件的方法,相關數據規劃如下表所示。
云服務 | 操作賬號 | 參數 | 示例 |
資源管理 | 管理賬號 | 日志賬號A(RAM用戶) | - |
業務賬號B(RAM用戶) | - | ||
業務賬號C(RAM用戶) | - | ||
事件總線 | 業務賬號B | 規則名稱 | b-eb-filter-ram-role |
業務賬號C | 規則名稱 | c-eb-filter-ram-role | |
函數計算 | 日志賬號A | 服務 | eb_event_action |
服務的系統模板權限 | AliyunFCDefaultRolePolicy | ||
函數 | eb_event_trigger | ||
觸發器 | ConfigurationItemChangeTrigger | ||
訪問控制 | 日志賬號A | RAM角色 | account-eb-role |
業務賬號B | RAM角色 | sg-01 | |
業務賬號C | RAM角色 | sg-02 |
操作流程
企業在多賬號場景下,訂閱資源的配置變更事件的操作流程如下圖所示。
步驟一:日志賬號創建RAM角色
日志賬號A通過事件總線EventBridge提供的跨賬號事件路由的能力,將業務賬號B和業務賬號C的事件投遞到日志賬號A的事件總線EventBridge中,日志賬號A可以集中查看業務賬號B和業務賬號C的資源配置變更事件。
首先日志賬號A需要完成跨賬號投遞事件的角色授權,即創建RAM角色(account-eb-role),并授權事件總線EventBridge向業務賬號A投遞事件的權限。
創建RAM角色并授權事件總線EventBridge。
修改信任策略。
在角色頁面,單擊目標RAM角色名稱。
單擊信任策略頁簽,然后單擊編輯信任策略。
修改信任策略內容。
業務賬號B和業務賬號C授信于日志賬號A后,日志賬號A的事件總線EventBridge可以扮演該RAM角色。信任策略示例如下:
{ "Statement":[ { "Action":"sts:AssumeRole", "Effect":"Allow", "Principal":{ "Service":[ "<業務賬號B的ID>@eventbridge.aliyuncs.com", "<業務賬號C的ID>@eventbridge.aliyuncs.com" ] } } ], "Version":"1" }
單擊保存信任策略。
步驟二:業務賬號配置事件總線
業務賬號B創建事件總線規則b-eb-filter-ram-role,業務賬號C創建事件總線規則c-eb-filter-ram-role。業務賬號B和業務賬號C中的資源變更事件通過角色account-eb-role路由到日志賬號A的事件總線EventBridge中。
在左側導航欄,單擊事件總線。
在頂部菜單欄,選擇地域,例如:華東2(上海)。
在事件總線頁面,單擊云服務專用事件總線區域的創建規則。
在創建規則頁面,設置事件總線規則的相關參數。
在配置基本信息頁面,輸入事件總線名稱,單擊下一步。
在配置事件模式頁面,事件源類型選擇阿里云官方事件源、事件源選擇acs.ram訪問控制、事件類型選擇ram:Config:ConfigurationItemChangeNotification(訪問控制配置變更通知)、模式內容輸入以下信息,然后單擊下一步。
僅當訪問控制中前綴為
sg-
的資源(RAM角色或RAM用戶)的配置變更時,事件總線EventBridge才會記錄事件。事件模式內容如下:{ "source": [ "acs.ram" ], "data": { "resourceName": [ { "prefix": "sg-" } ] }, "type": [ "ram:Config:ConfigurationItemChangeNotification" ] }
在配置事件目標頁面,服務類型選擇EventBridge事件總線、目標類型選擇跨賬號總線、選擇地域、賬號ID輸入日志賬號A的ID、總線名稱輸入default、角色配置輸入account-eb-role、事件為完整事件,然后單擊創建。
步驟三:日志賬號配置函數計算
日志賬號A在函數計算中創建函數,并通過觸發器將資源的配置變更事件投遞到函數計算中。
新建服務。
登錄函數計算控制臺。
在左側導航欄,單擊服務及函數。
在頂部菜單欄,選擇地域,例如:華東2(上海)。
在服務列表頁面,單擊創建服務。
在創建服務面板,名稱輸入eb_event_action。
單擊確定。
創建函數。
在服務eb_event_action的函數管理頁面,單擊創建函數。
在創建函數頁面,設置函數的基本信息和觸發器。
在基本信息區域:函數名稱輸入eb_event_trigger,運行環境選擇Python 3.6,其他參數保持默認值。
在配置觸發器區域:觸發器類型選擇云產品事件觸發器下的訪問控制,名稱輸入ConfigurationItemChangeTrigger,事件類型選擇選中全部事件類型。事件模式內容如下:
{ "source": [ "acs.ram" ], "type": [ "ram:ActionTrail:AliyunServiceEvent", "ram:ActionTrail:ApiCall", "ram:ActionTrail:ConsoleOperation", "ram:Config:ConfigurationItemChangeNotification", "ram:Config:NonCompliantNotification" ] }
其他參數保持默認值。
說明如果函數計算初次訪問事件總線EventBridge,則需要根據提示授權,允許事件總線EventBridge訪問函數計算。
單擊創建。
顯示函數調用日志。
在函數eb_event_trigger的函數代碼頁簽,將文件index.py中的
logger.info('hello world')
修改為logger.info(event)
。單擊左上角的部署代碼。
步驟四:業務賬號變更資源
業務賬號B創建一個RAM角色sg-01,業務賬號C創建一個RAM角色sg-02。具體操作,請參見創建可信實體為阿里云賬號的RAM角色。
步驟五:日志賬號查看資源的配置變更事件
日志賬號A查看業務賬號B和業務賬號C資源的配置變更事件。查看方式如下:
通過事件總線EventBridge控制臺查看
在頂部菜單欄,選擇地域,例如:華東2(上海)。
在左側導航欄,單擊事件總線。
單擊default對應操作列的事件追蹤。
選擇目標時間范圍、事件源為acs.ram訪問控制和事件類型為ram:Config:ConfigurationItemChangeNotification,單擊查詢。
單擊目標事件對應操作列的事件詳情。
業務賬號B創建的RAM角色sg-01的事件詳情。
業務賬號C創建的RAM角色sg-02的事件詳情。
通過函數計算控制臺查看
登錄函數計算控制臺。
在頂部菜單欄,選擇地域,例如:華東2(上海)。
在左側導航欄,單擊服務及函數。
單擊目標服務名稱eb_event_action。
單擊目標函數名稱eb_event_trigger。
在函數日志頁簽,選擇目標時間范圍。
說明當您初次查看函數的調用日志時,需要單擊一鍵啟用,啟用日志功能。
業務賬號B創建的RAM角色sg-01的事件詳情。
業務賬號C創建的RAM角色sg-02的事件詳情。