企业多账号场景下订阅资源的配置变更事件

更新时间:
复制 MD 格式

当企业在云上有多个账号时,安全应急团队或运维团队需要实时了解整个企业的云上资源动态,订阅重要或高风险资源的配置变更信息,以便及时监控和维护这些资源。企业通过资源目录对多个账号中的资源进行统一管理后,可以通过配置审计将资源的配置变更事件投递到事件总线EventBridge,还可以通过函数计算中2.0的触发器将事件总线EventBridge中的资源配置变更事件投递到函数计算。

应用场景

某企业统一管理多账号中资源的配置变更事件的应用场景如下图所示。应用场景

某企业的管理账号通过一个成员(日志账号A)查看其他成员(业务账号B和业务账号C)中资源的配置变更事件,本文以查看前缀为sg-的RAM角色的配置变更事件为例进行介绍。

前提条件

数据规划

本文以访问控制的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投递事件的权限。

  1. 创建RAM角色并授权事件总线EventBridge。

    1. 登录RAM控制台。

    2. 在左侧导航栏,选择身份管理 > 角色。

    3. 在角色页面,单击创建角色。

    4. 选择信任主体类型为云账号,保持信任主体名称为默认(即当前云账号),然后单击确认。

    5. 单击确认在创建角色页面,输入角色名称为account-eb-role完成角色创建。

    6. 单击新增授权,在新增授权面板的权限策略页签中搜索选中AliyunEventBridgePutEventsPolicy,其他参数保持默认值,单击 确认新增授权。

  2. 修改信任策略。

    1. 在角色页面,单击目标RAM角色名称。

    2. 单击信任策略页签,然后单击编辑信任策略。

    3. 修改信任策略内容。

      业务账号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"
      }
    4. 单击确定 保存信任策略。

步骤二:业务账号配置事件总线

业务账号B创建事件总线规则b-eb-filter-ram-role,业务账号C创建事件总线规则c-eb-filter-ram-role。业务账号B和业务账号C中的资源变更事件通过角色account-eb-role路由到日志账号A的事件总线EventBridge中。

  1. 登录事件总线EventBridge控制台。

  2. 在左侧导航栏,单击事件总线。

  3. 在顶部菜单栏,选择地域,例如:华东2(上海)。

  4. 在事件总线页面,单击云服务专用事件总线区域的创建规则。

  5. 在创建规则页面,设置事件总线规则的相关参数。

    1. 在配置基本信息页面,输入事件总线名称,单击下一步。

    2. 在配置事件模式页面,事件源类型选择阿里云官方事件源、事件源选择acs.ram访问控制、事件类型选择ram:Config:ConfigurationItemChangeNotification(访问控制配置变更通知)、模式内容输入以下信息,然后单击下一步。

      仅当访问控制中前缀为sg-的资源(RAM角色或RAM用户)的配置变更时,事件总线EventBridge才会记录事件。事件模式内容如下:

      {
          "source": [
              "acs.ram"
          ],
          "data": {
              "resourceName": [
                  {
                      "prefix": "sg-"
                  }
              ]
          },
          "type": [
              "ram:Config:ConfigurationItemChangeNotification"
          ]
      }
    3. 在配置事件目标页面,服务类型选择EventBridge事件总线、目标类型选择跨账号总线、选择地域、账号ID输入日志账号A的ID、总线名称输入default、角色配置输入account-eb-role、事件为完整事件,然后单击创建。

步骤三:日志账号配置函数计算

日志账号A在函数计算中创建函数,并通过触发器将资源的配置变更事件投递到函数计算中。

  1. 新建服务。

    1. 登录函数计算控制台。

    2. 在左侧导航栏,单击服务及函数。

    3. 在顶部菜单栏,选择地域,例如:华东2(上海)。

    4. 在服务列表页面,单击创建服务。

    5. 在创建服务面板,名称输入eb_event_action。

    6. 单击确定。

  2. 创建函数。

    1. 在服务eb_event_action的函数管理页面,单击创建函数。

    2. 在创建函数页面,设置函数的基本信息和触发器。

      • 在基本信息区域:函数名称输入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访问函数计算。

    3. 单击创建。

  3. 显示函数调用日志。

    1. 在函数eb_event_trigger的函数代码页签,将文件index.py中的logger.info('hello world')修改为logger.info(event)。

    2. 单击左上角的部署代码。

步骤四:业务账号变更资源

业务账号B创建一个RAM角色sg-01,业务账号C创建一个RAM角色sg-02。具体操作,请参见创建可信实体为阿里云账号的RAM角色。

步骤五:日志账号查看资源的配置变更事件

日志账号A查看业务账号B和业务账号C资源的配置变更事件。查看方式如下:

  • 通过事件总线EventBridge控制台查看

    1. 登录事件总线EventBridge控制台。

    2. 在顶部菜单栏,选择地域,例如:华东2(上海)。

    3. 在左侧导航栏,单击事件总线。

    4. 单击default对应操作列的事件追踪。

    5. 选择目标时间范围、事件源为acs.ram访问控制和事件类型为ram:Config:ConfigurationItemChangeNotification,单击查询。

    6. 单击目标事件对应操作列的事件详情。

      • 业务账号B创建的RAM角色sg-01的事件详情。

        {
          "datacontenttype": "application/json;charset=utf-8",
          "aliyunaccountid": "120735510766xxx",
          "aliyunpublishtime": "2022-07-22T06:53:07.015Z",
          "data": {
              "resourceEventType": "DISCOVERED",
              "resourceCreateTime": "1658472670000",
              "resourceId": "30795126548622xxx",
              "captureTime": "1658472779000",
              "configuration": "{&quot;UpdateDate&quot;:&quot;2022-07-22T06:51:10Z&quot;,&quot;MaxSessionDuration&quot;:3600,&quot;RoleNaxxx",
              "dataType": "ConfigurationItemChangeNotification",
              "resourceName": "sg-01",
              "availabilityZone": "",
              "version": "1",
              "tags": "",
              "accountId": "117752840358xxx",
              "relationshipDiff": "",
              "resourceStatus": "",
              "regionId": "cn-shanghai",
              "requestId": "fd009075-680f-4abe-b35b-bce1d7a12bc2",
              "configAggregators": "106251666735xxx:ca-cpce7086a0f400e9xxx",
              "resourceGroupId": "",
              "relationship": "",
              "configurationDiff": "{&quot;UpdateDate&quot;:[null,&quot;2022-07-22T06:51:10Z&quot;],&quot;MaxSessionDuration&quot;:[null,xxx",
              "resourceType": "ACS::RAM::Role"
      • 业务账号C创建的RAM角色sg-02的事件详情。

        {
          "datacontenttype": "application/json;charset=utf-8",
          "aliyunaccountid": "120735510766xxx",
          "aliyunpublishtime": "2022-07-22T06:54:08.625Z",
          "data": {
            "resourceEventType": "DISCOVERED",
            "resourceCreateTime": "1658472717000",
            "resourceId": "37363303286450xxx",
            "captureTime": "1658472842000",
            "configuration": "{&quot;UpdateDate&quot;:&quot;2022-07-22T06:51:57Z&quot;,&quot;MaxSessionDuration&quot;:3600,&quot;RoleNa...",
            "dataType": "ConfigurationItemChangeNotification",
            "resourceName": "sg-02",
            "availabilityZone": "",
            "version": "1",
            "tags": "",
            "accountId": "152652840280xxx",
            "relationshipDiff": "",
            "resourceStatus": "",
            "regionId": "cn-shanghai",
            "requestId": "fca6b021-604d-4eef-af81-14da1ec25df5",
            "configAggregators": "106251666735xxx:ca-cpce7086a0f400e9xxx",
            "resourceGroupId": "",
            "relationship": "",
            "configurationDiff": "{&quot;UpdateDate&quot;:[null,&quot;2022-07-22T06:51:57Z&quot;],&quot;MaxSessionDuration&quot;:[null,...",
            "resourceType": "ACS::RAM::Role"
          }
        }
  • 通过函数计算控制台查看

    1. 登录函数计算控制台。

    2. 在顶部菜单栏,选择地域,例如:华东2(上海)。

    3. 在左侧导航栏,单击服务及函数。

    4. 单击目标服务名称eb_event_action。

    5. 单击目标函数名称eb_event_trigger。

    6. 在函数日志页签,选择目标时间范围。

      说明

      当您初次查看函数的调用日志时,需要单击一键启用,启用日志功能。

      • 业务账号B创建的RAM角色sg-01的事件详情。

        c-62da482e-fb62c30acf8e4c41    2022-07-22 14:53:07 2022-07-22 14:53:07 fd009075-680f-4abe-b35b-bce1d7a1  [INFO] b'{"id":"fd009075-680f-4abe-b35b-bce1d7a1","source":"acs.ram","specversion":"1.0","type":"ram:ConfigurationItemChangeNotification","datacontenttype":"application/json;charset=utf-8","time":"2022-07-22T06:52:59Z","aliyunaccountid":"120735510766","aliyunpublishtime":"2022-07-22T06:53:07.015Z","aliyunoriginalaccountid":"117752840358","aliyuneventbusname":"default","aliyunregionid":"cn-shanghai","data":{"resourceEventType":"DISCOVERED","resourceCreateTime":"1658472670000","resourceId":"307951265438622","captureTime":"1658472779000","configuration":"{"UpdateDate":"2022-07-22T06:51:10Z","MaxSessionDuration":3600,"RoleName":"sg-01","Description":"","AssumeRolePolicyDocument":"{"Statement":[{"\n"sts:AssumeRole"],"Effect":"Allow","\n"Principal":{"RAM":["acs:ram::117752840358 :root"]}}],"Version":"1"}","Arn":"acs:ram::117752840358 :role/sg-01","RoleId":"307951265438622","CreateDate":"2022-07-22T06:51:10Z"}","dataType":"ConfigurationItemChangeNotification","resourceName":"sg-01","availabilityZone":"","version":"1","tags":"","accountId":"117752840358","relationshipDiff":"","resourceStatus":"","regionId":"cn-shanghai","requestId":"fd009075-680f-4abe-b35b-bce1d7a1","configAggregators":"106251666735 :ca-cpce7086a0f400e9","resourceGroupId":"","relationship":"","configurationDiff":"{"UpdateDate":{null,"2022-07-22T06:51:10Z"},"MaxSessionDuration":{null,3600},"RoleName":{null,"sg-01"},"AssumeRolePolicyDocument":{null,""},"Statement":{null,""}"\n"Action":["sts:AssumeRole"],"Effect":"Allow","\n"Principal":{"RAM":["acs:ram::117752840358"]},"Version":"1","Arn":{null,"acs:ram::117752840358 :role/sg-01"},"RoleId":{null,"307951265438622"},"CreateDate":{null,"2022-07-22T06:51:10Z"}}","resourceType":"ACS::RAM::Role"}}'
      • 业务账号C创建的RAM角色sg-02的事件详情。

        e-62da482e-fb62c30acf8e4c41  2022-07-22 14:54:08 2022-07-22 14:54:08 fca6b021-604d-4eef-af81-14da1ec2  [INFO] b'{"id":"fca6b021-604d-4eef-af81-14da1ec2","source":"acs.ram","specversion":"1.0","type":"ram:Config:ConfigurationItemChangeNotification","datacontenttype":"application/json;charset=utf-8","time":"2022-07-22T06:54:022","aliyunaccountid":"120735510766","aliyunpublishtime":"2022-07-22T06:54:08.625Z","aliyunoriginalaccountid":"152652840280","aliyuneventbusname":"default","aliyunregionid":"cn-shanghai","data":{"resourceEventType":"DISCOVERED","resourceCreateTime":"165847217000","resourceId":"37363303286450","captureTime":"165847284000","configuration":"{"UpdateDate":"2022-07-22T06:51:57Z","MaxSessionDuration":3600,"RoleName":"sg-02","Description":"","AssumeRolePolicyDocument":"{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"RAM":["acs:ram::152652840280:root"]}}],"Version":"1"}","Arn":"acs:ram::152652840280:role/sg-02","RoleId":"37363303286450","CreateDate":"2022-07-22T06:51:57Z"}","dataType":"ConfigurationItemChangeNotification","resourceName":"sg-02","availabilityZone":"","version":"1","tags":"","accountId":"152652840280","relationshipDiff":"","resourceStatus":"","regionId":"cn-shanghai","requestId":"fca6b021-604d-4eef-af81-14da1ec2","configAggregators":"10625166735","ca-cpce7086a0f400e9","resourceGroupId":"","relationship":"","configurationDiff":"{"UpdateDate":[null,"2022-07-22T06:51:57Z"],"MaxSessionDuration":[null,3600],"RoleName":[null,"sg-02"],"AssumeRolePolicyDocument":[null,"{"Statement":[{"Action":"sts:AssumeRole","Effect":"Allow","Principal":{"RAM":["acs:ram::152652840280:root"]}}],"Version":"1"}"],"Arn":[null,"acs:ram::152652840280:role/sg-02"],"RoleId":[null,"37363303286450"],"CreateDate":[null,"2022-07-22T06:51:57Z"]}","resourceType":"ACS::RAM::Role"}}'