连接到 AWS 以进行漏洞检测和风险评估

您可以将 Security Command Center Enterprise 层级连接到 AWS 环境,以便完成以下操作:

  • 查看并修复来自 AWS 的发现结果(包括威胁和漏洞)
  • 为 AWS 创建和管理安全状况
  • 识别从公共互联网到高价值 AWS 资产的潜在攻击路径
  • 对照各种标准和基准绘制 AWS 资源的合规性

通过将 Security Command Center 连接到 AWS,您的安全运维团队可以在同一个位置管理和修复 Google Cloud 和 AWS 中的威胁和漏洞。

如需让 Security Command Center 监控您的 AWS 组织,您必须使用 Google Cloud 服务代理和有权访问您要监控的资源的 AWS 帐号来配置连接。Security Command Center 使用此连接定期从您定义的所有 AWS 帐号和区域中收集资产元数据。

本文档介绍如何设置与 AWS 的连接。设置连接时,您可以进行以下配置:

  • AWS 中可直接访问您要监控的 AWS 资源的一系列帐号。在 Google Cloud 控制台中,这些帐号称为“收款方帐号”
  • AWS 中的帐号,具有允许向收集器帐号进行身份验证的适当政策和角色。在 Google Cloud 控制台中,此帐号称为“委托帐号”委托帐号收款方帐号必须位于同一 AWS 组织中。
  • Google Cloud 中的服务代理,可连接到委托帐号以进行身份验证。
  • 用于从 AWS 资源收集资产数据的流水线。

此连接不适用于 Security Command Center 的 SIEM 功能(可让您注入 AWS 日志以进行威胁检测)。

下图展示了此配置。租户项目是自动创建的项目,包含您的资产数据收集流水线实例。

AWS 和 Security Command Center 配置。

准备工作

请先完成这些任务,然后再完成此页面中的其余任务。

激活 Security Command Center Enterprise 层级

完成设置指南中的第 1 步和第 2 步,以激活 Security Command Center 企业版层级。

设置权限

如需获取使用 AWS 连接器所需的权限,请让管理员为您授予 Cloud Asset Owner (roles/cloudasset.owner) IAM 角色。如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

创建 AWS 账号

确保您已创建以下 AWS 资源:

配置 Security Command Center

  1. 在 Google Cloud 控制台中,前往设置页面。

    转到设置

  2. 验证您正在查看的是已启用 Security Command Center Enterprise 层级的组织。

  3. 点击第 3 步:设置 Amazon Web Services (AWS) 连接器

  4. 委托帐号 ID 中,输入您可以用作委托帐号的 AWS 帐号的 AWS 帐号 ID。

  5. (可选)查看高级选项。

  6. 点击继续

  7. 完成下列操作之一:

    • 下载适用于委派角色和收集器角色的 CloudFormation 模板。
    • 如果您配置了高级选项或需要更改默认 AWS 角色名称(aws-delegated-roleaws-collector-role),请选择使用 AWS 控制台。复制服务代理 ID、委派角色名称和收集器角色名称。

    创建连接后,您便无法更改角色名称。

请勿点击创建。请改为配置您的 AWS 环境

配置 AWS 环境

您可以使用以下某种方法设置 AWS 环境:

使用 CloudFormation 模板设置您的 AWS 环境

如果您下载了 CloudFormation 模板,请按照以下步骤设置您的 AWS 环境。

  1. 登录 AWS 受托帐号控制台。请确保您登录的是用于假定其他收款方 AWS 帐号的委托帐号。
  2. 转到 AWS CloudFormation Template 控制台。
  3. 点击堆栈 > 带有新资源(标准)
  4. 上传委派角色模板文件,然后点击下一步
  5. 输入堆栈名称。如果您更改了委托角色的角色名称,请更新相应参数。点击下一步
  6. 根据组织的要求,更新堆栈选项,然后点击下一步
  7. 检查相应信息,然后点击提交。等待堆栈创建完毕。如果出现问题,请参阅问题排查

    如果您选择逐个添加 AWS 帐号(通过停用帐号的自动发现功能),则可以为每个 AWS 帐号创建单独的堆栈,而不是创建单个堆栈集。

  8. 使用 AWS 管理帐号或已注册为委派管理员的任何成员帐号,点击 Stackset > Create StackSet

  9. 点击服务管理权限

  10. 上传收集器角色模板文件。点击下一步

  11. 指定 StackSet 详细信息页面上,输入堆栈集名称和说明。验证并更新受托人帐号 ID 和角色名称。 点击下一步

  12. 根据贵组织的要求,配置堆栈集选项。点击下一步

  13. 设置部署选项页面上,完成以下操作:

    1. 选择您的部署目标。您可以部署到整个 AWS 组织,也可以部署到包含要从中收集数据的所有 AWS 帐号的组织单元。

    2. 指定要在其中创建角色和政策的 AWS 区域。 由于角色属于全球性资源,因此您无需指定多个区域。

    3. 根据需要更改其他设置,然后点击下一步

  14. 检查相应更改,然后点击提交。如果您收到错误,请参阅问题排查

  15. 部署单独的堆栈以在管理帐号下预配收集器角色,因为 AWS CloudFormation 堆栈集不会在管理帐号下创建堆栈实例。如需了解详情,请参阅 DeploymentTargets

如需完成集成流程,请参阅完成集成流程

手动配置 AWS 账号

如果您无法使用 CloudFormation 模板(例如,您使用的是不同的角色名称或自定义集成),则可以手动创建所需的 AWS IAM 政策和 AWS IAM 角色。

您必须为委派帐号和收集器帐号创建 AWS IAM 政策和 AWS IAM 角色。

为委派角色创建 AWS IAM 政策

如需为委派角色(委派政策)创建 AWS IAM 政策,请完成以下步骤:

  1. 登录 AWS 受托帐号控制台

  2. 点击政策 > 创建政策

  3. 点击 JSON 并粘贴以下内容:

    {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Action": "sts:AssumeRole",
              "Resource": "arn:aws:iam::*:role/COLLECTOR_ROLE_NAME",
              "Effect": "Allow"
          },
          {
              "Action": [
                  "organizations:List*",
                  "organizations:Describe*"
              ],
              "Resource": "*",
              "Effect": "Allow"
          }
      ]
    
    }
    

    COLLECTOR_ROLE_NAME 替换为您在配置 Security Command Center 时复制的收集器角色名称(默认值为 aws-collector-role)。

  4. 点击下一步

  5. 政策详情部分中,输入政策的名称和说明。

  6. 点击创建政策

为 AWS 和 Google Cloud 之间的信任关系创建 AWS IAM 角色

创建用于在 AWS 和 Google Cloud 之间建立可信关系的委托角色。此角色使用在为委派角色创建 AWS IAM 政策中创建的委派政策。

  1. 以可创建 IAM 角色和政策的 AWS 用户身份登录 AWS 委托帐号控制台

  2. 依次点击角色 > 创建角色

  3. 对于可信实体类型,点击 Web Identity

  4. 对于 Identity Provider,点击 Google

  5. 对于目标设备,请输入您在配置 Security Command Center 时复制的服务帐号 ID。点击下一步

  6. 如需向委派的角色授予对收集器角色的访问权限,请将权限政策附加到该角色。搜索在为委派的角色创建 AWS IAM 政策中创建的委派政策并将其选中。

  7. 角色详情部分中,输入您在配置 Security Command Center 时复制的委托角色名称(默认名称为 aws-delegated-role)。

  8. 点击创建角色

创建用于资产数据收集的 AWS IAM 政策

如需创建用于资产数据收集的 AWS IAM 政策(收集器政策),请完成以下步骤:

  1. 登录 AWS 收集器帐号控制台

  2. 点击政策 > 创建政策

  3. 点击 JSON 并粘贴以下内容:

    {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "ce:GetCostAndUsage",
                  "dynamodb:DescribeTableReplicaAutoScaling",
                  "identitystore:ListGroupMemberships",
                  "identitystore:ListGroups",
                  "identitystore:ListUsers",
                  "lambda:GetFunction",
                  "lambda:GetFunctionConcurrency",
                  "logs:ListTagsForResource",
                  "s3express:GetBucketPolicy",
                  "s3express:ListAllMyDirectoryBuckets",
                  "wafv2:GetIPSet"
              ],
              "Resource": [
                  "*"
              ]
          },
          {
              "Effect": "Allow",
              "Action": [
                  "apigateway:GET"
              ],
              "Resource": [
                  "arn:aws:apigateway:*::/usageplans",
                  "arn:aws:apigateway:*::/usageplans/*/keys",
                  "arn:aws:apigateway:*::/vpclinks/*"
              ]
          }
      ]
    
    }
    
  4. 点击下一步

  5. 政策详情部分中,输入政策的名称和说明。

  6. 点击创建政策

  7. 针对每个收款方帐号重复上述步骤。

为每个账号创建用于收集数据的 AWS IAM 角色

创建允许 Security Command Center 从 AWS 获取资产数据的收集器角色。此角色使用在创建资产数据收集的 AWS IAM 政策中创建的收集器政策。

  1. 以能够为收集器帐号创建 IAM 角色的用户身份登录 AWS 收集器帐号控制台

  2. 依次点击角色 > 创建角色

  3. 对于可信实体类型,点击自定义信任政策

  4. 自定义信任政策部分,粘贴以下内容:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::DELEGATE_ACCOUNT_ID:role/DELEGATE_ACCOUNT_ROLE"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    替换以下内容:

  5. 如需授予收集器角色对您的 AWS 资产配置数据的访问权限,请将权限政策附加到该角色。搜索在创建资产数据收集的 AWS IAM 政策中创建的自定义收集器政策并将其选中。

  6. 搜索并选择以下受管理的政策:

    • arn:aws:iam::aws:policy/job-function/ViewOnlyAccess
    • arn:aws:iam::aws:policy/SecurityAudit
  7. 角色详情部分中,输入您在配置 Security Command Center 时复制的收集器角色名称

  8. 点击创建角色

  9. 针对每个收款方帐号重复上述步骤。

如需完成集成流程,请参阅完成集成流程

完成集成流程

  1. 在 Google Cloud 控制台中,前往添加 Amazon Web Services 连接器页面。

    转到 Amazon Web Services 连接器

  2. 点击测试连接器,验证 Security Command Center 是否可以连接到您的 AWS 环境。如果连接成功,Google Cloud 服务代理可以承担受托人角色,并且委派角色具有承担收集器角色所需的所有权限。如果连接不成功,请参阅排查测试连接时出现的错误

  3. 点击创建

自定义配置

本部分介绍自定义 Security Command Center 与 AWS 之间连接的一些方法。您可以在 Google Cloud 控制台添加 Amazon Web Services 连接器页面的高级选项(可选)部分中找到这些选项。

默认情况下,Security Command Center 会自动在所有 AWS 区域中发现您的 AWS 帐号。该连接使用 AWS Security Token Service 的默认全球端点以及您正监控的 AWS 服务的默认每秒查询次数 (QPS)。通过这些高级选项,您可以自定义默认设置。

选项 说明
指定要使用的 AWS 账号 您可以让 Security Command Center 自动发现 AWS 帐号,也可以提供 AWS 帐号列表,供 Security Command Center 用于查找资源。
指定要排除的 AWS 账号 如果您让 Security Command Center 自动发现账号,则可以提供 Security Command Center 无法用于查找资源的 AWS 账号列表。
指定要监控的 AWS 区域 您可以选择一个或多个 AWS 区域供 Security Command Center 进行监控。将 AWS 区域字段留空可监控所有区域。
替换 AWS 服务的默认每秒查询次数 (QPS) 您可以更改 QPS 以控制 Security Command Center 的配额限制。请将替换值设置为小于该服务的默认值且大于或等于 1。默认值为最大值。如果您更改了 QPS,Security Command Center 可能会在提取数据时遇到问题。因此,我们不建议您更改此值。
更改 AWS Security Token Service 的端点 您可以为 AWS Security Token Service 指定特定端点(例如 https://sts.us-east-2.amazonaws.com)。将 AWS Security Token Service (AWS STS)(可选)字段留空以使用默认的全球端点 (https://sts.amazonaws.com)。

问题排查

本部分介绍在将 Security Command Center 与 AWS 集成时可能会遇到的一些常见问题。

资源已经存在

当您尝试创建 AWS IAM 政策和 AWS IAM 角色时,AWS 环境中会出现此错误。如果您的 AWS 帐号中已存在该角色,而您又要尝试再次创建该角色,就会出现此问题。

如需解决此问题,请完成以下操作:

  • 检查您要创建的角色或政策是否已存在,以及是否满足本指南中列出的要求。
  • 如有必要,请更改角色名称以避免冲突。

政策中的主账号无效

如果您创建收集器角色,但委托角色尚不存在,则 AWS 环境中可能会出现此错误。

如需解决此问题,请完成为委派角色创建 AWS IAM 政策中的步骤,并等到委派角色创建完毕后再继续操作。

AWS 中的限制

AWS 按帐号或区域限制每个 AWS 帐号的 API 请求次数。为确保 Security Command Center 从 AWS 收集资产元数据时不会超出这些限制,Security Command Center 会以固定的 QPS 上限为每个 AWS 服务收集数据,如 AWS 服务的 API 文档中所述。

如果您的 AWS 环境中因 QPS 消耗而遇到请求限制,您可以通过完成以下操作缓解此问题:

  • AWS 连接器设置页面中,为遇到请求限制问题的 AWS 服务设置自定义 QPS。

  • 限制 AWS 收集器角色的权限,以便系统不再收集来自该特定服务的数据。这种缓解技术可防止攻击路径模拟对 AWS 正常运行。

在 AWS 中撤消所有权限会立即停止数据收集器进程。删除 AWS 连接器不会立即停止数据收集器进程,但会在完成后重新开始。

排查测试连接时出现的错误

在测试 Security Command Center 与 AWS 之间的连接时,可能会发生这些错误。

AWS_FAILED_TO_ASSUME_DELEGATED_ROLE

连接无效,因为 Google Cloud 服务代理无法承担委派角色。

如需解决此问题,请考虑以下事项:

AWS_FAILED_TO_LIST_ACCOUNTS

连接无效,因为自动发现已启用,并且委派角色无法获取组织中的所有 AWS 帐号。

此问题表示,某些资源缺少允许对委派角色执行 organizations:ListAccounts 操作的政策。如需解决此问题,请验证缺少哪些资源。如需验证委托政策的设置,请参阅为委托角色创建 AWS IAM 政策

AWS_INVALID_COLLECTOR_ACCOUNTS

连接无效,因为存在无效的收集器账号。错误消息包含有关可能原因的更多信息,其中包括:

AWS_FAILED_TO_ASSUME_COLLECTOR_ROLE

收集器帐号无效,因为委派角色不能担任收集器帐号中的收集器角色。

如需解决此问题,请考虑以下事项:

AWS_COLLECTOR_ROLE_POLICY_MISSING_REQUIRED_PERMISSION

连接无效,因为收集器政策缺少一些必需的权限设置。

要解决此问题,请考虑以下原因:

后续步骤