您可以将 Security Command Center Enterprise 层级连接到 Microsoft Azure 环境,以执行以下操作:
- 启用检测与错误配置相关的发现结果。
- 识别从公共互联网到您的高价值 Microsoft Azure 资产的潜在攻击路径。
- 将 Microsoft Azure 资源与各种标准和基准进行对应,以便了解其合规性。
通过将 Security Command Center 与 Microsoft Azure 连接,您的团队可以在一个位置管理和修复 Security Command Center 和 Azure 中的错误配置。 Google Cloud
您可以使用 Google Cloud 服务代理和有权访问您要监控的 Azure 资源的 Microsoft Azure 用户分配的托管式身份,在 Security Command Center 和 Azure 之间配置信任连接。您可以在 Microsoft Azure 环境中管理和控制信任配置。
您可以为每个组织创建一个 Azure 连接。 Google Cloud
Security Command Center 会使用此连接定期收集您定义的 Microsoft Azure 资源的数据。我们会根据 Google Cloud 隐私权声明,以与服务数据相同的方式处理此类数据。该连接器使用 API 调用来收集 Azure 资产数据。这些 API 调用可能会产生 Microsoft Azure 费用。
在扫描期间,数据收集流水线依赖于服务代理,以使用用户分配的托管式身份向 Microsoft Azure 环境进行身份验证。
下图展示了如何在 Security Command Center 和 Azure 之间建立信任。
本文档介绍了如何设置与 Microsoft Azure 的连接。大致步骤如下:
执行准备工作中的前提步骤。
创建 Azure 连接器,并配置要扫描的订阅和位置。您需要 Microsoft Azure 租户 ID 才能执行这些步骤。这会创建服务代理 ID。
配置 Azure 环境,以创建具有以下角色的专用用户分配的受管身份:
Microsoft Azure 根管理组范围内的读取器,用于读取资源、订阅和管理组层次结构。
Microsoft Azure 根管理组范围内的 Key Vault Reader,用于读取有关密钥库及其相关证书、密钥和 Secret 的元数据。
Microsoft Azure 根管理组范围内的 Storage Blob Data Reader,用于读取资源的元数据。如果您计划在配置 Azure 连接器时启用为 Sensitive Data Protection 发现服务授予权限,请授予此角色。
Microsoft Entra ID 中的目录读取器,用于读取群组和成员资格。
Microsoft Entra ID 中的安全读取器,用于读取授权政策。
根管理组的默认显示名称为
Tenant root group
。Security Command Center 需要这些权限才能识别位于资源层次结构中高于订阅级别的管理组、具有成员资格的群组和角色定义。
您还可以使用服务代理的相关信息为用户分配的受管身份配置联合身份凭据。
您可以手动执行相应步骤,也可以使用 Terraform。手动执行这些步骤时,您需要使用服务代理 ID。
完成 Azure 连接器的配置并测试连接。您需要使用用户分配的受管身份的相关信息来执行这些步骤。
Azure 连接器不会提取 Security Command Center Enterprise 中 SIEM 精选检测功能所需的 Azure 日志。如需了解相关信息,请参阅连接到 Microsoft Azure 以收集日志数据。
准备工作
以下部分介绍了在配置 Security Command Center 与 Microsoft Azure 之间的连接之前需要满足的前提条件、做出的决策以及需要的信息。
查看 Microsoft Azure 功能
请确保您熟悉 Microsoft Azure 中的以下概念和功能:
Azure 中的工作负载身份联合、联合凭据以及在用户分配的受管身份上配置联合身份。
使用 Microsoft Azure 门户、Azure CLI 或 Terraform 创建和管理资源组。
为数据收集做好规划
规划数据收集策略时,请执行以下操作。您在执行本文档中的步骤时需要用到此信息。
创建或指定您将在其中创建用户定义的受管身份的资源组。您需要在配置过程中提供资源组名称。
将 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 内置角色 Privileged Role Administrator 中使用。
您必须拥有提升的访问权限,才能在根管理组的范围内设置权限。如需了解为全局管理员提升访问权限的步骤,请参阅提升访问权限以管理所有 Azure 订阅和管理组。
启用并配置 Security Command Center Azure 连接器
请执行以下操作来创建和配置 Azure 连接器。
确保您拥有在 Google Cloud中设置权限部分中定义的权限。
确保您拥有包含 36 个字符的 Microsoft Azure 租户 ID。
打开设置页面上的连接器标签页。
选择您已在其中激活 Security Command Center Enterprise 的组织。
依次点击添加连接器 > Microsoft Azure。
在配置连接器页面上,输入 Azure 租户 ID。
如需让 Sensitive Data Protection 分析您的 Azure 数据,请选中为 Sensitive Data Protection 发现服务授予权限。此选项会在用户定义的受管身份的 Terraform 模板中添加 Storage Blob Data Reader 角色。
选择以下任一选项:
- 自动添加订阅:Security Command Center 会自动发现并包含订阅。您可以选择将订阅 ID 添加到排除 Azure 订阅字段,以免系统收集这些 ID。
- 逐个添加订阅:Security Command Center 不会自动发现订阅。您必须使用 Add Azure Subscription 字段定义至少一个订阅。
在选择要从中收集数据的 Azure 位置部分下,可选择一个或多个要从中收集数据的 Microsoft Azure 位置。将此字段留空即可从所有位置收集数据。从菜单中选择某个位置后,系统会排除已取消选择的位置。
建议的设置是自动发现您的 Azure 订阅并使用所有 Microsoft Azure 位置。
点击下一步。系统随即会打开连接到 Azure 页面。
让连接到 Azure 页面保持打开状态,然后继续执行配置 Microsoft Azure 环境。
配置 Microsoft Azure 后,您将返回此页面以完成 Azure 连接器的配置。
配置 Microsoft Azure 环境
填写以下任一部分:
手动配置 Microsoft Azure
以下部分概要介绍了配置 Azure 环境(用于在 Security Command Center 和 Microsoft Azure 之间建立信任)的手动步骤。此流程并非详尽无遗。每个部分都提供了指向 Microsoft Azure 文档的链接,其中介绍了如何完成相应任务。
前提条件
确保您拥有在 Microsoft Azure 中设置权限部分中定义的权限。
确保您拥有服务代理 ID,该 ID 是在您创建 Security Command Center Azure 连接器时生成的。
第 1 步:在资源组中创建用户分配的受管身份
按照管理用户分配的受管身份中的步骤创建用户分配的受管身份。
创建身份时,请指定以下内容:
- 订阅:选择要管理身份的订阅。
- 资源组:指定将用于管理身份的资源组名称 RESOURCE_GROUP_NAME。您在规划数据收集时就已确定这一点。
- 区域:选择一个区域,例如
East US
。 - 名称:为用户分配的托管式身份输入一个名称,例如
gcp-managed-identity
。将变量 USER_ASSIGNED_MANAGED_IDENTITY_NAME 替换为身份名称,系统会在本文档的步骤中根据需要填充该名称。
记录以下信息。您将在后续步骤中使用此信息。
- 客户端 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 文档。
打开您在创建 Azure 连接器时留开的连接到 Azure 页面。
点击下载 Terraform 模板。这会下载包含多个 JSON 文件的
azure_terraform.zip
文件。登录 Microsoft Azure,然后使用 BASH 或 Azure PowerShell 打开 Azure Cloud Shell。
根据您的组织政策,使用以下说明之一配置 Terraform:
将
azure_terraform.zip
文件复制到您的 Azure Cloud Shell 环境,然后解压缩内容。您会看到以下文件:main.tf.json
、outputs.tf.json
、providers.tf.json
和variables.tf.json
。在单独的目录中创建这些文件的副本。
- 创建一个新目录来测试 Terraform 示例代码,并将其设为当前目录。
在新创建的目录中,为提取的 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
文件中提取的代码。
- 创建一个名为
运行以下命令以初始化 Terraform 部署。
terraform init -upgrade
运行以下命令以创建执行计划。
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
。
运行以下命令,将执行计划应用于 Microsoft Azure 基础架构。
terraform apply main.tfplan
继续阅读完成 Azure 连接器配置部分。
完成 Azure 连接器配置
确保您已了解有关 Microsoft Azure 用户分配的托管式身份的以下信息:
- 客户端 ID:分配给身份的 36 个字符的值。
- 对象(主账号)ID:分配给身份的 36 个字符的值。
如需了解如何查找此类信息,请参阅列出用户分配的受管身份。
打开您在创建 Azure 连接器时留开的连接到 Azure 页面。
在 Azure 托管式身份详情部分下,输入以下内容:
- 托管式身份客户端 ID:即客户端 ID。
- 托管式身份对象 ID:这是对象(主账号)ID。
点击继续。
在测试连接器页面中,点击测试连接器以验证 Security Command Center 是否可以连接到 Microsoft Azure 环境。
如果连接成功, Google Cloud 服务代理可以假定 Microsoft Azure 用户分配的受管身份,并拥有所需的 Microsoft Azure 和 Microsoft Entra 权限。如果连接失败,请参阅排查测试连接时出现的错误。
点击保存。系统随即会显示连接器页面。
连接器会开始扫描您指定的 Azure 订阅和位置,并从中收集数据。结果最长可能需要 24 小时才会显示。
排查测试连接时出现的错误
以下部分介绍了在测试 Security Command Center 与 Microsoft Azure 之间的连接时可能会出现的错误,以及如何解决每种错误。
AZURE_ENABLED_SUBSCRIPTIONS_NOT_FOUND 错误
Azure 连接器未在 Azure 租户 ID 字段标识的租户中找到已启用的订阅。检查以下内容:
- 如果选择了自动添加订阅,请检查租户是否包含处于
Enabled
状态且未显示在排除 Azure 订阅字段中的订阅。 - 如果选择了逐个添加订阅,请检查您指定的订阅是否处于
Enabled
状态。
AZURE_FAILED_TO_ASSUME_MANAGED_IDENTITY 错误
连接无效,因为服务代理无法承担 Microsoft Azure 用户分配的受管理身份。 Google Cloud 可能的原因如下:
- 关联中指定的用户分配的受管身份不存在,或者配置不正确。
- 连接中指定的用户分配的受管式身份可能缺少信任服务代理所需的联合身份凭据 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 角色。
错误消息包含有关用户分配的受管身份未能假冒哪个范围以及缺少哪些角色的详细信息。
如需解决此问题,请执行以下操作:
- 查看您在在资源组中创建用户分配的受管身份时分配的设置,确保关联中的身份存在且设置正确无误。
- 查看您在配置 Microsoft Azure 内置角色和 Microsoft Entra 内置角色时设置的设置,确保配置正确无误。
其他问题排查提示
以下部分介绍了相应行为和可能的解决步骤。
系统会针对已删除的 Azure 资源返回查找结果
删除 Azure 资源后,最长可能需要 40 小时才能从 Security Command Center 资产目录系统中移除该资源。如果您选择通过删除资源来解决发现结果,则可能会在此时间段内看到报告的发现结果,因为资源尚未从 Security Command Center 资产目录系统中移除。
后续步骤
如果您是首次设置 Security Command Center Enterprise,请继续执行控制台中设置指南的第 4 步。
除此之外,您还可以实现以下目的:
- 查看和修复 Azure 数据中的发现结果。
- 在 Security Operations 控制台中查看与发现结果相关的资源。
- 查看 Azure 资源的攻击路径模拟。