连接到 Microsoft Azure 以收集配置和资源数据

您可以将 Security Command Center Enterprise 层级连接到 Microsoft Azure 环境,以执行以下操作:

  • 启用与错误配置相关的发现结果检测。
  • 识别从公共互联网到高价值 Microsoft Azure 资产的潜在攻击路径。
  • 将 Microsoft Azure 资源的合规性与各种标准和基准进行对比。

通过 Security Command Center 与 Microsoft Azure 的连接,您的团队可以在一个位置管理和修正 Google Cloud 和 Azure 中的错误配置。

您可以使用Google Cloud 服务代理和 Microsoft Azure 用户分配的托管式身份(可访问您要监控的 Azure 资源)在 Security Command Center 与 Azure 之间配置信任连接。您可以在 Microsoft Azure 环境中管理和控制信任配置。

您可以为每个 Google Cloud 组织创建一个 Azure 连接。

Security Command Center 会使用此连接定期收集有关您定义的 Microsoft Azure 资源的数据。我们会根据 Google Cloud 隐私权声明,以与服务数据相同的方式处理这些数据。 连接器使用 API 调用来收集 Azure 资产数据。这些 API 调用可能会产生 Microsoft Azure 费用。

在扫描期间,数据收集流水线依赖于服务代理,以使用用户分配的托管式身份向 Microsoft Azure 环境进行身份验证。

下图展示了 Security Command Center 与 Azure 之间如何建立信任关系。

Azure 和 Security Command Center 配置。

本文档介绍了如何设置与 Microsoft Azure 的连接。概括来讲,步骤如下:

  1. 执行准备工作中的前提步骤。

  2. 创建 Azure 连接器,并配置要扫描的订阅和位置。您需要 Microsoft Azure 租户 ID 才能执行这些步骤。这会创建服务代理 ID。

  3. 配置 Azure 环境,以创建具有以下角色的专用用户分配的托管式身份:

    • Microsoft Azure 根管理组范围内的读取者,用于读取资源、订阅和管理组层次结构。

    • Microsoft Azure 根管理组范围内的 Key Vault Reader,用于读取有关密钥保管库和相关证书、密钥和 Secret 的元数据。

    • Microsoft Azure 根管理组范围内的存储 Blob 数据读取者,用于读取有关资源的元数据。如果您计划在配置 Azure 连接器时启用为 Sensitive Data Protection 发现服务授予权限,请授予此角色。

    • Microsoft Entra ID 中的目录读取者,用于读取群组和成员资格。

    • Microsoft Entra ID 中的安全读取者,用于读取授权政策。

    根管理组的默认显示名称为 Tenant root group

    Security Command Center 需要这些权限才能识别资源层次结构中位于订阅更高级别的管理组、具有成员资格的组和角色定义。

    您还可以使用有关服务代理的信息,为用户分配的受管身份配置联合身份凭据。

    您可以手动执行这些步骤,也可以使用 Terraform。手动执行这些步骤时,您需要服务代理 ID。

  4. 完成配置 Azure 连接器并测试连接。您可以使用有关用户分配的受管身份的信息来执行这些步骤。

Azure 连接器不会注入 Security Command Center Enterprise 中 SIEM 精选检测功能所需的 Azure 日志。如需了解相关信息,请参阅连接到 Microsoft Azure 以收集日志数据

准备工作

以下部分介绍了在配置 Security Command Center 与 Microsoft Azure 之间的连接之前需要满足的前提条件、做出的决策以及了解的信息。

查看 Microsoft Azure 功能

请确保您熟悉 Microsoft Azure 中的以下概念和功能:

为数据收集做好规划

规划数据收集策略时,请执行以下操作。在执行本文档中的步骤时,您需要用到此信息。

  • 创建或确定要在其中创建用户分配的托管身份的资源组。在配置期间,您需要资源组名称。

    RESOURCE_GROUP_NAME 变量替换为资源组名称,以便在本文档的后续步骤中填充相应值。

  • 确定要收集哪些资源的数据。如果您计划仅从特定订阅或区域收集数据,请在规划阶段确定并记录这些信息。

    您还可以将 Azure 连接器配置为自动发现所有订阅和区域中的资源。

在 Google Cloud中设置权限

在 Google Cloud中,如需创建和管理与第三方云提供商的连接,您必须在组织中获得 Cloud Asset Owner (roles/cloudasset.owner) 角色。如需详细了解如何授予角色,请参阅管理访问权限

在 Microsoft Azure 中设置权限

如需执行手动配置 Microsoft Azure使用 Terraform 配置 Microsoft Azure 中的步骤,您必须拥有至少创建了一个资源组的 Azure 身份,并且拥有以下权限才能为 Microsoft Azure 和 Microsoft Entra 配置 IAM 政策。

  • 根管理组范围内的 Microsoft.Authorization/roleAssignments/write 权限。以下任一内置角色均具有此权限:基于角色的访问权限控制管理员用户访问权限管理员

  • 将在其中创建用户分配的托管身份的资源组范围内的以下权限:

    • Microsoft.ManagedIdentity/userAssignedIdentities/write
    • Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/write

    这些权限可在内置的受管身份贡献者角色中获得。

  • Microsoft Entra 权限,microsoft.directory/roleAssignments/allProperties/allTasks。 此权限适用于 Microsoft Entra 内置角色特权角色管理员

您必须拥有提升的访问权限,才能在根管理组的范围内设置权限。如需了解如何为全局管理员提升访问权限,请参阅提升访问权限以管理所有 Azure 订阅和管理组

启用并配置 Security Command Center Azure 连接器

请执行以下操作来创建和配置 Azure 连接器。

  1. 请确保您拥有在 Google Cloud中设置权限部分中定义的权限。

  2. 确保您拥有包含 36 个字符的 Microsoft Azure 租户 ID

  3. 打开设置页面上的连接器标签页。

    前往“连接器”

  4. 选择您已在其中激活 Security Command Center Enterprise 的组织。

  5. 依次点击添加连接器 > Microsoft Azure

  6. 配置连接器页面上,输入 Azure 租户 ID

  7. 如需让 Sensitive Data Protection 分析您的 Azure 数据,请保持选中为 Sensitive Data Protection 发现服务授予权限。此选项会在用户定义的受管身份的 Terraform 模板中添加 Storage Blob Data Reader 角色。

  8. 选择以下任一选项:

    • 自动添加订阅:Security Command Center 会自动发现并添加订阅。 您可以选择通过将订阅 ID 添加到排除 Azure 订阅字段来排除这些订阅 ID,使其不被收集。
    • 逐个添加订阅:Security Command Center 不会自动发现订阅。您必须使用 Add Azure Subscription 字段定义至少一个订阅。
  9. 选择要从中收集数据的 Azure 位置部分下,您可以选择一个或多个 Microsoft Azure 位置来收集数据。将此字段留空可从所有位置收集数据。从菜单中选择某个位置后,未选择的位置会被排除。

    建议的设置是自动发现您的 Azure 订阅并使用所有 Microsoft Azure 位置。

  10. 点击下一步。系统会打开连接到 Azure 页面。

  11. 保持连接到 Azure 页面处于打开状态,然后继续执行配置 Microsoft Azure 环境

    配置 Microsoft Azure 后,您将返回此页面以完成 Azure 连接器的配置。

配置 Microsoft Azure 环境

完成以下任一部分:

手动配置 Microsoft Azure

以下部分介绍了配置 Azure 环境的高级手动步骤,该环境可在 Security Command Center 与 Microsoft Azure 之间建立信任关系。此程序并非详尽无遗。每个部分都提供了指向 Microsoft Azure 文档的链接,其中介绍了如何完成相应任务。

前提条件

第 1 步:在资源组中创建用户分配的托管身份

  1. 按照管理用户分配的托管式身份中的步骤创建用户分配的托管式身份。

    创建身份时,请指定以下内容:

    • 订阅:选择将管理身份的订阅。
    • 资源组:指定将管理身份的资源组名称,RESOURCE_GROUP_NAME。您在规划数据收集时确定了这一点。
    • 区域:选择一个区域,例如 East US
    • 名称:输入用户分配的托管式身份的名称,例如:gcp-managed-identity。将变量 USER_ASSIGNED_MANAGED_IDENTITY_NAME 替换为身份名称,系统会在本文档中需要该变量的步骤中填充该变量。
  2. 记录以下信息。您将在后续步骤中使用此文件。

    • 客户端 ID:分配给身份的 36 字符值。
    • 对象(正文)ID:分配给身份的 36 字符值。
    • 身份名称:您为名称定义的值。

第 2 步:为用户分配的受管理身份创建联合凭据

如需在用户分配的受管身份中添加联合凭据,请按照将用户分配的受管身份配置为信任外部身份提供方中的步骤操作。

按照其他签发方场景中所述的指南操作,并设置以下内容:

  • 联合凭据场景:选择其他:配置由外部 OpenID Connect 提供商管理的身份,以作为此应用访问 Microsoft Azure 资源
  • 颁发者网址:输入 https://accounts.google.com
  • Subject identifier:输入您在创建 Security Command Center Azure 连接器时生成的服务代理 ID。
  • 名称:输入联合凭据的名称,例如:gcp-managed-identity-fic
  • 受众群体:输入 https://cloud.google.com

第 3 步:分配 Microsoft Azure 内置角色

按照使用 Azure 门户分配 Azure 角色中的步骤操作,将以下 Microsoft Azure 内置角色分配给用户分配的托管身份:

  • 保险柜读取者
  • Reader
  • Storage Blob Data Reader

在根管理组范围内授予这些角色。

第 4 步:分配 Microsoft Entra ID 内置角色

按照向用户分配 Microsoft Entra 角色中的步骤操作,将以下 Microsoft Entra ID 内置角色分配给用户分配的托管身份:

  • 目录读取器
  • Security Reader

完成后,继续执行完成 Azure 连接器配置部分。

使用 Terraform 配置 Microsoft Azure

以下步骤概括介绍了如何使用 Terraform 配置 Microsoft Azure。此程序并非详尽无遗。如需详细了解如何使用 Terraform 预配资源,请参阅 Azure 上的 Terraform 文档

  1. 打开您在创建 Azure 连接器时保持打开的连接到 Azure 页面。

  2. 点击下载 Terraform 模板。这会下载包含多个 JSON 文件的 azure_terraform.zip 文件。

  3. 登录 Microsoft Azure,然后使用 BASH 或 Azure PowerShell 打开 Azure Cloud Shell。

  4. 根据组织政策配置 Terraform,具体操作请参阅以下说明之一:

  5. azure_terraform.zip 文件复制到您的 Azure Cloud Shell 环境,然后提取内容。您将看到以下文件:main.tf.jsonoutputs.tf.jsonproviders.tf.jsonvariables.tf.json

  6. 在单独的目录中创建这些文件的副本。

    1. 创建一个新目录来测试示例 Terraform 代码,并将其设为当前目录。
    2. 在新创建的目录中,创建提取的 JSON 文件的副本,并使用与原始文件相同的名称:

      • 创建一个名为 main.tf.json 的新文件,然后复制并粘贴提取的 main.tf.json 文件中的代码。
      • 创建一个名为 providers.tf.json 的新文件,然后复制并粘贴提取的 providers.tf.json 文件中的代码。
      • 创建一个名为 outputs.tf.json 的新文件,然后复制并粘贴提取的 outputs.tf.json 文件中的代码。
      • 创建一个名为 variables.tf.json 的新文件,然后复制并粘贴提取的 variables.tf.json 文件中的代码。
  7. 运行以下命令以初始化 Terraform 部署。

    terraform init -upgrade
    
  8. 运行以下命令以创建执行计划。

    terraform plan -out main.tfplan -var="resource_group_name=RESOURCE_GROUP_NAME" -var="user_assigned_managed_identity_name=USER_ASSIGNED_MANAGED_IDENTITY_NAME"
    

    替换以下内容:

    • RESOURCE_GROUP_NAME:将创建用户分配的受管身份的 Microsoft Azure 资源组的名称。
    • USER_ASSIGNED_MANAGED_IDENTITY_NAME:要创建的用户分配的托管式身份的名称。如果未指定,则默认值为 google-cloud-managed-identity
  9. 执行以下命令,将执行计划应用于 Microsoft Azure 基础架构。

    terraform apply main.tfplan
    
  10. 继续学习完成 Azure 连接器配置部分。

完成 Azure 连接器配置

  1. 确保您拥有以下有关 Microsoft Azure 用户分配的托管式身份的信息:

    • 客户端 ID:分配给身份的 36 字符值。
    • 对象(正文)ID:分配给身份的 36 字符值。

    如需了解如何查找此信息,请参阅列出用户分配的受管身份

  2. 打开您在创建 Azure 连接器时保持打开的连接到 Azure 页面。

  3. Azure 托管式身份详情部分下,输入以下内容:

    • 托管式身份客户端 ID:这是客户端 ID
    • 托管式身份对象 ID:这是对象(正文)ID
  4. 点击继续

  5. 测试连接器页面中,点击测试连接器,以验证 Security Command Center 是否可以连接到 Microsoft Azure 环境。

    如果连接成功, Google Cloud 服务代理可以代入 Microsoft Azure 用户分配的托管式身份,并拥有所需的 Microsoft Azure 和 Microsoft Entra 权限。如果连接失败,请参阅排查测试连接时出现的错误

  6. 点击保存。系统会显示连接器页面。

连接器开始扫描并收集您指定的 Azure 订阅和位置中的数据。调查结果最长可能需要 24 小时才会显示。

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

以下部分介绍了在测试 Security Command Center 与 Microsoft Azure 之间的连接时可能会出现的错误,以及如何解决每种错误。

AZURE_ENABLED_SUBSCRIPTIONS_NOT_FOUND 错误

Azure 连接器在 Azure 租户 ID 字段所标识的租户中未找到已启用的订阅。检查以下内容:

  • 如果选择了 Add subscriptions automatically,请检查租户是否包含处于 Enabled 状态且未显示在 Exclude Azure subscriptions 字段中的订阅。
  • 如果选择了逐个添加订阅,请检查您指定的订阅是否处于 Enabled 状态。

AZURE_FAILED_TO_ASSUME_MANAGED_IDENTITY 错误

连接无效,因为 Google Cloud 服务代理无法承担 Microsoft Azure 用户分配的受管身份。可能的原因如下:

  • 连接中指定的用户分配的受管身份不存在或配置不正确。
  • 连接中指定的用户分配的代管式身份可能缺少信任 Google Cloud 服务代理所需的联合身份凭据。

如需解决此问题,请执行以下操作:

AZURE_MANAGED_IDENTITY_MISSING_REQUIRED_PERMISSION 错误

连接无效,因为 Azure 用户分配的受管身份缺少必需的 Microsoft Azure 或 Microsoft Entra 角色。错误消息中包含缺少的角色。

如需解决此问题,请查看您在配置 Microsoft Azure 内置角色Microsoft Entra 内置角色时设置的设置,确保配置正确无误。

AZURE_MANAGED_IDENTITY_ASSUMPTION_FAILED_AND_MISSING_REQUIRED_PERMISSION 错误

连接无效,因为 Google Cloud 服务代理无法承担 Microsoft Azure 用户分配的托管身份,同时缺少一些必需的 Microsoft Azure 或 Microsoft Entra 角色。

错误消息包含有关用户分配的受管身份无法承担哪个范围以及缺少哪些角色的详细信息。

如需解决此问题,请执行以下操作:

其他问题排查提示

以下部分介绍了这些行为以及解决这些行为的可能步骤。

针对已删除的 Azure 资源返回了发现结果

删除 Azure 资源后,最长可能需要 40 小时才能从 Security Command Center 资产清单系统中移除该资源。如果您选择通过删除资源来解决发现结果,则可能会在此时间段内看到系统报告该发现结果,因为相应资源尚未从 Security Command Center 资源清单系统中移除。

后续步骤