

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 Microsoft Azure 與 Security Hub 整合
<a name="securityhub-v2-azure-setup-azure"></a>

完成[先決條件任務](securityhub-v2-azure-prereqs.md)後，您可以將 Microsoft Azure 環境設定為支援與 AWS Security Hub 整合。為了協助您執行此操作，Security Hub 主控台會產生為您的組態自訂的設定指令碼。

若要產生指令碼，請執行下列動作：

1. 開啟位於 https：//[https://console.aws.amazon.com/securityhub/v2](https://console.aws.amazon.com/securityhub/v2) 的 AWS Security Hub 主控台。

1. 在導覽窗格中選擇**整合**。

1. 選擇**建立 Azure 連接器**。

1. 完成連接器組態 （租戶 ID、範圍和名稱），然後複製產生的設定指令碼。

若要執行指令碼，請使用 Azure CLI 並使用全域管理員帳戶進行驗證 (`az login`)。

當您執行指令碼時，它會執行一系列任務。下列各節說明指令碼執行的每個任務。如果您的組織限制指令碼執行，您可以使用此主題做為指南，手動執行這些任務。設定 Azure 環境之後，您可以將 [Security Hub 設定為與 Azure 整合](securityhub-v2-azure-setup-securityhub-v2.md)。

步驟 1-7 設定所有 Security Hub 功能使用的共用基礎：應用程式註冊、聯合登入資料、Azure 角色指派、Microsoft Graph 許可、Event Hub 和日誌匯出。步驟 8–10 為特定功能設定額外的 Azure 資源：
+ **漏洞管理 (Amazon Inspector)** – 在 Azure VMs 上設定 Azure Container Registry (ACR) 儲存庫事件匯出和系統指派的受管身分。
+ **威脅偵測 (Microsoft Defender for Cloud)** – 設定 Microsoft Defender for Cloud 以持續將安全提醒匯出至 Event Hub。

**注意**  
單一 Azure 應用程式註冊會跨 AWS 安全服務共用。如果您也使用 Security Hub CSPM 或 Amazon Inspector for Azure，它們會使用相同的應用程式註冊。您不需要為每個 AWS 服務建立個別的註冊。

**Topics**
+ [步驟 1：註冊應用程式](#securityhub-v2-azure-setup-azure-registration)
+ [步驟 2：建立服務主體](#securityhub-v2-azure-setup-azure-sp)
+ [步驟 3：設定聯合登入資料](#securityhub-v2-azure-setup-azure-federation)
+ [步驟 4：指派 RBAC 角色](#securityhub-v2-azure-setup-azure-rbac)
+ [步驟 5：設定圖形 API 許可](#securityhub-v2-azure-setup-azure-graph)
+ [步驟 6：設定 Event Hub](#securityhub-v2-azure-setup-azure-eventhub)
+ [步驟 7：設定日誌匯出](#securityhub-v2-azure-setup-azure-export)
+ [步驟 8：設定 ACR 匯出](#securityhub-v2-azure-setup-azure-acr)
+ [步驟 9：啟用 VM 受管身分](#securityhub-v2-azure-setup-azure-vm-identity)
+ [步驟 10：匯出 Defender 警示](#securityhub-v2-azure-setup-azure-defender)

## 步驟 1：註冊 Azure 應用程式
<a name="securityhub-v2-azure-setup-azure-registration"></a>

在 Microsoft Entra ID 中註冊新的應用程式。此應用程式做為 AWS 使用聯合登入資料對您的 Azure 環境進行身分驗證的身分。不需要用戶端秘密。

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

請注意來自輸出**的應用程式 （用戶端） ID** `appId` ( 屬性）。在 Security Hub 主控台中建立連接器時，您會提供此值。

## 步驟 2：建立服務主體
<a name="securityhub-v2-azure-setup-azure-sp"></a>

為已註冊的應用程式建立服務主體。您可以使用 Azure 角色指派來授予許可給服務委託人。服務主體會在您的 Azure 環境中執行動作。

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

其中 {{application-client-id}} 是上一個步驟的應用程式 （用戶端） ID。

將註冊上的應用程式 ID URI 設定為 `api://{{application-client-id}}`。 AWS 需要此識別符才能與應用程式交換聯合字符。如果沒有此 URI， 就 AWS 無法產生有效的聯合字符對象，而且每個功能都無法向 Azure 進行身分驗證。

```
$ az ad app update \
  --id {{application-client-id}} \
  --identifier-uris "api://{{application-client-id}}"
```

## 步驟 3：設定聯合身分憑證
<a name="securityhub-v2-azure-setup-azure-federation"></a>

在應用程式上設定聯合身分憑證，讓 在沒有用戶端秘密的情況下 AWS 進行身分驗證。這會在 AWS 和 Azure 之間建立 OIDC 信任。不會儲存任何長期秘密或登入資料。

Security Hub Azure 整合使用每個功能一個 AWS IAM 角色進行身分驗證：資源組態探索、漏洞管理和威脅偵測。為每個角色新增聯合身分憑證，讓每個功能都能向 Azure 進行身分驗證。 會在您 AWS 建立連接器時自動建立服務連結角色。`Inspector2SSMFederationRole` 用於 VM 掃描的 不是服務連結角色；您可以將其建立為 Amazon Inspector VM 掃描設定的一部分，如[步驟 9](#securityhub-v2-azure-setup-azure-vm-identity) 中所述。


| 功能 | 主旨 (IAM 角色 ARN) | 
| --- | --- | 
| 資源組態探索 (AWS Config) | arn:aws:iam::{{account-id}}:role/aws-service-role/thirdparty.config.amazonaws.com/AWSServiceRoleForConfigThirdParty | 
| 漏洞管理 （檢查器） | arn:aws:iam::{{account-id}}:role/aws-service-role/thirdparty.inspector2.amazonaws.com/AWSServiceRoleForAmazonInspector2ThirdParty | 
| 漏洞管理 – VM 掃描 (Amazon EC2 Systems Manager) | arn:aws:iam::{{account-id}}:role/Inspector2SSMFederationRole-{{tenant-id}} | 
| 威脅偵測 (Security Hub) | arn:aws:iam::{{account-id}}:role/aws-service-role/securityhubv2.amazonaws.com/AWSServiceRoleForSecurityHubV2 | 

對上表中的每個主體執行以下命令一次，每次變更 `name`和 `subject`值。每個登入資料的 `issuer`和 `audiences`值都相同。

```
$ az ad app federated-credential create \
  --id {{application-client-id}} \
  --parameters '{
    "name": "{{credential-name}}",
    "issuer": "{{token-issuer-url}}",
    "subject": "{{service-linked-role-arn}}",
    "audiences": ["api://AzureADTokenExchange"],
    "description": "AWS federation for Security Hub Azure integration"
  }'
```

索引鍵值：
+ **發行者** – 來自 IAM Outbound Identity Federation 的字符發行者 URL。這遵循格式 `https://{{uuid}}.tokens.sts.global.api.aws`。
+ **主旨** – 上表中的 IAM 角色 ARN。Amazon EC2 Systems Manager 角色中的{{租用戶 ID}} 是您的 Azure 租用戶 ID。
+ **對象 – **`api://AzureADTokenExchange`（工作負載聯合身分的標準值）。
+ **名稱** – 應用程式中唯一的任何名稱。

## 步驟 4：指派 RBAC 角色
<a name="securityhub-v2-azure-setup-azure-rbac"></a>

將下列內建角色指派給租用戶根管理群組範圍內的服務主體。在此範圍內指派它們會將許可傳播到租用戶中的每個訂閱。
+ **讀取器** – 授予所有 Azure 資源的唯讀存取權，因此 Security Hub 可以探索和評估您的資源組態。
+ **貢獻者** – 授予 Amazon Inspector 掃描 Azure 虛擬機器、函數應用程式和容器映像是否有漏洞所需的寫入存取權。
+ **Azure Event Hubs 資料接收者** – 允許 AWS 從 Event Hub 讀取事件。

**重要**  
租用戶根管理群組範圍的**貢獻者**角色會授予對 Azure 資源的高權限、全租用戶的寫入存取權。Security Hub 需要此存取權，Amazon Inspector 才能掃描您的運算資源是否有漏洞。例如，Inspector 使用 Contributor 提供的虛擬機器執行命令許可。透過 Amazon EC2 Systems Manager Automation，Inspector 會在您的 Azure VMs 上執行命令，以安裝和操作 VM Scanner 代理程式。

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

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

$ az role assignment create \
  --assignee {{application-client-id}} \
  --role "Azure Event Hubs Data Receiver" \
  --scope "/providers/Microsoft.Management/managementGroups/{{tenant-id}}"
```

**注意**  
如果此步驟失敗，請確認 Microsoft Entra ID > 屬性中 *Azure 資源的存取管理*設定為**是**。然後登出並重新登入以重新整理您的字符。

## 步驟 5：設定 Microsoft Graph API 許可
<a name="securityhub-v2-azure-setup-azure-graph"></a>

將下列 Microsoft Graph API 許可 （應用程式類型） 授予應用程式，然後授予管理員同意：
+ `Directory.Read.All`
+ `AuditLog.Read.All`
+ `Policy.Read.All`

```
$ az ad app permission admin-consent --id {{application-client-id}}
```

## 步驟 6：設定 Azure Event Hub
<a name="securityhub-v2-azure-setup-azure-eventhub"></a>

AWS Config 使用 Azure Event Hub 接收 Azure 環境中資源組態變更的近乎即時通知。設定指令碼會建立 Event Hub 基礎設施並將其標記為探索。Event Hub 探索使用以標籤為基礎的解析度：Security Hub 會使用 格式在 Event Hub 命名空間上尋找標籤`AWSConfig-{{account-id}}-{{region}}`，以識別您整合的正確 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 3 \
  --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"
```

建立 Event Hub 之後，標記要探索的命名空間，並指派資料接收者角色。使用 `az tag update` 搭配 ，`--operation merge`以便在命名空間上保留任何其他標籤 （例如[步驟 10 ](#securityhub-v2-azure-setup-azure-defender)的威脅偵測探索標籤）：

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

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

**注意**  
在標籤格式 中`AWSConfig-{{account-id}}-{{region}}`，{{account-id}} 是您的 12 位數 AWS 帳戶 ID，而 {{region}} 是您要建立連接器 AWS 區域 的 （例如 `us-east-1`)。這些值會識別擁有此 Event Hub 整合的 AWS 帳戶 和 區域。

金鑰組態：
+ **命名空間 SKU** – 標準 （取用者群組需要）。
+ **Event Hub 名稱** – `activitylog`。
+ **取用者群組** – `AWSConfig`。
+ **標籤** – `AWSConfig-{{account-id}}-{{region}}`值為 `activitylog`。此標籤可讓 自動 AWS Config 探索 Event Hub。
+ **角色指派** – 命名空間上的 Azure Event Hubs Data Receiver。

對於威脅偵測，設定也會建立具有`AWSSecurityHub`取用者群組的個別 `defender-alerts` Event Hub，並以直接`AWSSecurityHub-{{account-id}}-{{region}}`識別 Security Hub 讀取的格式新增第二個探索標籤。如需詳細資訊，請參閱[步驟 10](#securityhub-v2-azure-setup-azure-defender)。

## 步驟 7：設定活動日誌和 Entra ID 稽核日誌匯出
<a name="securityhub-v2-azure-setup-azure-export"></a>

設定 Azure 將活動日誌和 Microsoft Entra ID 日誌匯出至 Event Hub。

**活動日誌匯出：**

在每個訂閱上設定診斷設定，將活動日誌匯出至 Event Hub。設定指令碼會自動為所有受監控的訂閱設定此項目。活動日誌會擷取訂閱層級的活動，包括角色指派和資源變更。

**Microsoft Entra ID 日誌匯出：**

在 Microsoft Entra ID 上設定診斷設定，將日誌匯出至相同的 Event Hub。導覽至 *Microsoft Entra ID > 監控 > 診斷設定 > 新增診斷設定*。啟用 **AuditLogs**、**SignInLogs** 和 **NonInteractiveUserSignInLogs**，並將其路由到您的 Event Hub。

## 步驟 8：設定 Azure Container Registry 匯出
<a name="securityhub-v2-azure-setup-azure-acr"></a>

Security Hub 透過 Amazon Inspector 掃描 Azure Container Registry (ACR) 容器映像是否有漏洞。若要這樣做，Inspector 需要將 ACR 儲存庫事件匯出至與登錄檔位於相同 Azure 區域中的 Event Hub。如需 ACR 匯出設定，請參閱《[Amazon Inspector 使用者指南》中的設定 Amazon Inspector 以與 Microsoft Azure 整合](https://docs.aws.amazon.com/inspector/latest/user/inspector-azure.html)。 *Amazon Inspector *

## 步驟 9：在 Azure VMs 上啟用受管身分
<a name="securityhub-v2-azure-setup-azure-vm-identity"></a>

Security Hub 透過 Inspector 掃描 Azure 虛擬機器。每個目標 Azure VM 必須啟用系統指派的受管身分。若要將此身分自動新增至您的 VMs，請在租用戶根管理群組範圍中指派兩個使用 `modify`效果的 Azure 政策：
+ 對於沒有身分的 VM，政策會新增系統指派的受管身分。
+ 對於只有使用者指派身分的 VM，政策會新增系統指派的受管身分，同時保留現有的使用者指派身分。

已有系統指派受管身分的 VM 保持不變。由於政策使用 `modify`效果，因此它們會調整身分就位，而不會重新部署 VM。

Inspector 使用 Amazon EC2 Systems Manager Automation 在 Azure VM 上部署和管理 Inspector VMs Scanner 代理程式。這需要額外 AWS的端設定，包括 Microsoft Entra ID 的 IAM OIDC 身分提供者和數個 IAM 角色。如需完整的 VM 掃描設定，請參閱《[Amazon Inspector 使用者指南》中的設定 Amazon Inspector 與 Microsoft Azure 整合](https://docs.aws.amazon.com/inspector/latest/user/inspector-azure-setup-inspector.html)。 *Amazon Inspector *

## 步驟 10：匯出 Microsoft Defender 以進行雲端提醒
<a name="securityhub-v2-azure-setup-azure-defender"></a>

Security Hub 擷取 Microsoft Defender for Cloud 威脅偵測警示，並將其映射至開放網路安全結構描述架構 (OCSF) 格式。若要傳遞這些提醒，請建立專用 `defender-alerts` Event Hub 並設定 Microsoft Defender for Cloud，以持續將安全提醒匯出至其中。

在[步驟 6 ](#securityhub-v2-azure-setup-azure-eventhub)的 Event Hub 命名空間中，建立 `defender-alerts` Event Hub、Security Hub 要讀取的`AWSSecurityHub`取用者群組，以及具有 Microsoft Defender for Cloud 用來傳送提醒之**傳送**許可的中樞範圍共用存取簽章 (SAS) 授權規則：

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

$ az eventhubs eventhub consumer-group create \
  --resource-group "aws-securityhub-integration" \
  --namespace-name "aws-securityhub-{{account-id}}" \
  --eventhub-name "defender-alerts" \
  --name "AWSSecurityHub"

$ az eventhubs eventhub authorization-rule create \
  --resource-group "aws-securityhub-integration" \
  --namespace-name "aws-securityhub-{{account-id}}" \
  --eventhub-name "defender-alerts" \
  --name "DefenderExportSend" \
  --rights Send
```

然後，將第二個探索標籤合併到命名空間，以便 Security Hub 探索`defender-alerts`中樞。使用 `az tag update`搭配 ，`--operation merge`以便保留[步驟 6 ](#securityhub-v2-azure-setup-azure-eventhub)的`AWSConfig`探索標籤：

```
$ az tag update \
  --resource-id {{namespace-resource-id}} \
  --operation merge \
  --tags "AWSSecurityHub-{{account-id}}-{{region}}=defender-alerts"
```

最後，設定 Microsoft Defender for Cloud 將**安全提醒**資料類型持續匯出至 `defender-alerts` Event Hub。在 Azure 入口網站中，前往 *Microsoft Defender for Cloud > Environment 設定*，選取訂閱，選擇*持續匯出 > Event Hub*，選取**安全性提醒**，然後選擇 `defender-alerts` Event Hub 和 `DefenderExportSend` SAS 規則。

**注意**  
如果您以程式設計方式 （透過 Azure Resource Manager API、ARM 範本或 Azure 政策） 而不是在入口網站中設定連續匯出，請使用 `DefenderExportSend` SAS 連線字串來驗證 Event Hub 的匯出。`az eventhubs eventhub authorization-rule keys list` 使用 擷取`DefenderExportSend`規則的 ，並將其設定為匯出動作的連線字串。如需詳細資訊，請參閱 Microsoft Azure 文件中的[設定持續匯出](https://learn.microsoft.com/en-us/azure/defender-for-cloud/continuous-export)。

**注意**  
完成這些任務後，請等待約 15-30 分鐘讓組態生效。然後，在 Security Hub 中建立連接器之前，請確認您的 Event Hub 正在接收訊息 (*IncomingMessages* 指標）。