

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 配置微软 Azure 以与 Amazon Inspector 集成
<a name="inspector-azure-setup-azure"></a>

Azure 设置过程将你的 Azure 环境配置为允许 Amazon Inspector 进行身份验证和接收资源变更通知。Amazon Inspector 在创建连接器期间会生成一个自定义的安装脚本。该脚本执行以下步骤。

**注意**  
如果你已经完成了 AWS Security Hub CSPM 或 AWS Security Hub CSPM CSPM 的 Azure 环境设置，则会共享相同的应用程序注册。该脚本检测现有注册，并在不修改现有配置的情况下为 Amazon Inspector 添加所需的联合身份凭证。

安装脚本执行一系列任务。以下各节描述了脚本执行的每项任务。如果您的组织限制脚本执行，则可以以本主题为指导，手动执行这些任务。

在中注册新应用程序Microsoft Entra ID。此应用程序充当 AWS 使用联合凭据向 Azure 环境进行身份验证的身份。不需要客户机密钥。

```
$ az ad app create --display-name "AWSSecurityHubIntegration"
```

记下输出中的**应用程序（客户端）ID**（`appId`属性）。在 Amazon Inspector 控制台中创建连接器时，您将提供此值。

为注册的应用程序创建服务主体。您可以使用 Azure 角色分配向服务主体授予权限。服务主体在你的 Azure 环境中执行操作。

```
$ az ad sp create --id {{application-client-id}}
```

上{{application-client-id}}一步中的应用程序（客户端）ID 在哪里。

在应用程序上配置联合身份凭证，使其 AWS 能够在没有客户端密钥的情况下进行身份验证。这将在和 Azure 之间建立 OIDC 信任 AWS 。不存储任何长期存在的机密或凭证。

```
$ az ad app federated-credential create \
  --id {{application-client-id}} \
  --parameters '{
    "name": "AWSConfigFederation",
    "issuer": "{{token-issuer-url}}",
    "subject": "arn:aws:iam::{{account-id}}:role/aws-service-role/thirdparty.config.amazonaws.com/AWSServiceRoleForConfigThirdParty",
    "audiences": ["api://AzureADTokenExchange"],
    "description": "Federation for AWS Config third-party cloud resource discovery"
  }'
```

关键值：
+ **颁发者**-您来自 IAM 出站联合身份验证的令牌发行者 URL。这遵循格式`https://{{uuid}}.tokens.sts.global.api.aws`。
+ **主题**-您的`AWSServiceRoleForConfigThirdParty`服务相关角色的 ARN。 AWS 账户 AWS 创建连接器时会自动创建此服务相关角色。
+ **受众** —`api://AzureADTokenExchange`（工作负载身份联合的标准值）。

将**读**者角色分配给租户根管理组范围内的服务主体。这将授予对租户中所有订阅中的所有 Azure 资源的只读访问权限。

```
$ az role assignment create \
  --assignee {{application-client-id}} \
  --role "Reader" \
  --scope "/providers/Microsoft.Management/managementGroups/{{tenant-id}}"
```

**注意**  
如果此步骤失败，请在 Microsoft Entra ID > 属性中确认 *Azure 资源的访问管理*设置为 **“是**”。然后退出并重新登录以刷新您的令牌。

向应用程序授予所需Microsoft Graph的 API 权限（应用程序类型）：`Directory.Read.All``AuditLog.Read.All`、和`Policy.Read.All`。然后授予管理员同意。

AWS Config 使用 Azure 事件中心接收 Azure 环境中资源配置变更的近乎实时的通知。安装脚本创建 Event Hub 基础架构并对其进行标记以供发现。

```
$ az group create \
  --name "aws-securityhub-integration" \
  --location {{event-hub-region}}

$ az eventhubs namespace create \
  --resource-group "aws-securityhub-integration" \
  --name "aws-securityhub-{{account-id}}" \
  --location {{event-hub-region}} \
  --sku Standard

$ az eventhubs eventhub create \
  --resource-group "aws-securityhub-integration" \
  --namespace-name "aws-securityhub-{{account-id}}" \
  --name "activitylog" \
  --message-retention 1 \
  --partition-count 4

$ az eventhubs eventhub consumer-group create \
  --resource-group "aws-securityhub-integration" \
  --namespace-name "aws-securityhub-{{account-id}}" \
  --eventhub-name "activitylog" \
  --name "AWSConfig"
```

创建事件中心后，标记要发现的命名空间并分配数据接收者角色：

```
$ az tag create \
  --resource-id {{namespace-resource-id}} \
  --tags "AWSConfig-{{account-id}}-{{region}}=activitylog"

$ az role assignment create \
  --assignee {{application-client-id}} \
  --role "Azure Event Hubs Data Receiver" \
  --scope {{namespace-resource-id}}
```

关键配置：
+ **命名空间 SKU**-标准（使用者组必填）。
+ **事件中心名称** —`activitylog`.
+ **消费者群体** —`AWSConfig`.
+ **标签**-`AWSConfig-{{account-id}}-{{region}}` 带值`activitylog`。使用此标签 AWS Config 可以自动发现事件中心。
+ **角色分配**-命名空间上的 Azure 事件中心数据接收器。

**注意**  
标签格式{{account-id}}是`AWSConfig-{{account-id}}-{{region}}`您的 12 位 AWS 账户标识符，{{region}}也是您创建连接器所在的 AWS 区域（例如`us-east-1`）。

将 Azure 配置为将活动日志和Entra ID审核日志导出到事件中心。

**活动日志导出：**

在每个订阅上配置诊断设置，将活动日志导出到事件中心。安装脚本会自动为所有受监控的订阅进行配置。活动日志捕获订阅级别的活动，包括角色分配和资源更改。

**Entra ID审计日志导出：**

将诊断设置配置Microsoft Entra ID为可将审核日志导出到同一个事件中心。导航至 *Microsoft Entra ID> 监控 > 诊断设置 > 添加诊断设置*。启用它们**AuditLogs**并将其路由到您的事件中心。

要运行 Azure 安装脚本，请执行以下操作：

1. 打开已通过 Azure 租户身份验证的 Azure CLI 的终端 (`az login`)。您必须拥有目标订阅的 “贡献者” 和 “所有者” 权限。

1. 从 Amazon Inspector 控制台复制安装脚本（在创建连接器期间生成）。

1. 运行安装脚本。该脚本完成了上述 Azure 环境设置。

1. 脚本成功完成后，返回 Amazon Inspector 控制台完成连接器的创建。

**重要**  
如果您稍后更改连接器范围（例如，添加新的 Azure 区域），则控制台会重新生成安装脚本，以便在新区域中配置事件中心基础架构。必须重新运行更新的脚本。