View a markdown version of this page

Azure 先決條件 - AWS Systems Manager

• 2026 年 4 月 30 日之後將不再提供 AWS Systems Manager CloudWatch Dashboard。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板,就像現在一樣。如需詳細資訊,請參閱 Amazon CloudWatch Dashboard 文件

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

Azure 先決條件

完成 Azure 環境中的下列步驟。您需要 AWS 先決條件中的下列值:

  • 發行者 URL — 上一節的 AWS OIDC 發行者 URL。

  • 主旨 — Systems Manager Azure 聯合角色的 ARN,例如: arn:aws:iam::ACCOUNT_ID:role/service-role/SSM-AzureRole-connector-name-id8

設定聯合的 Azure 端
  1. 建立 Azure Entra ID 應用程式

    在 Microsoft Entra ID (先前稱為 Azure Active Directory) 中建立應用程式註冊。記下輸出中的應用程式 (用戶端) ID

    az ad app create --display-name "AWSSSMAzureIntegration" --query appId
  2. 為應用程式建立服務主體

    建立與應用程式相關聯的服務主體。請注意輸出中的服務主體 ID

    az ad sp create --id APPLICATION_ID
  3. 新增聯合身分憑證

    將聯合身分憑證新增至信任 AWS OIDC 發行者的應用程式。這可讓 Azure 接受由 AWS 代表 Systems Manager Azure 聯合角色發行的權杖 (請參閱 Azure 聯合角色)。

    az ad app federated-credential create \ --id APPLICATION_ID \ --parameters "{ \"name\": \"aws-ssm-federation\", \"issuer\": \"AWS_OIDC_ISSUER_URL\", \"subject\": \"arn:aws:iam::ACCOUNT_ID:role/service-role/SSM-AzureRole-CONNECTOR_NAME-ID8\", \"audiences\": [\"api://AzureADTokenExchange\"] }"

    取代:

    • APPLICATION_ID — 步驟 1 中的應用程式 (用戶端) ID。

    • AWS_OIDC_ISSUER_URL — OIDC AWS 發行者 URL (例如 https://a1667813-695b-5415-b0f7-d473d62bb123.tokens.sts.global.api.aws)。

    • ACCOUNT_ID — 您的 AWS 帳戶 ID。

    • CONNECTOR_NAME — Cloud Connector 的已淨化顯示名稱。

    • ID8 — 指派給 Azure 聯合角色之 UUID 的前八個字元。您可以在 中建立 Cloud Connector 之後,在角色名稱中找到, AWS 管理主控台或在手動建立角色時指定它 (請參閱 Azure 聯合角色)。

  4. 建立 VM Run Command 自訂角色

    建立自訂角色,授予 Systems Manager 在 Azure VMs 上執行命令所需的最低許可。將 SUBSCRIPTION_ID 取代為您要管理的 Azure 訂閱 ID。

    az role definition create --role-definition '{ "Name": "AWSSSMVMExtensionRole-SUBSCRIPTION_ID", "Description": "Allows AWS Systems Manager to run commands on Azure VMs", "Actions": [ "Microsoft.Compute/virtualMachines/read", "Microsoft.Compute/virtualMachines/runCommand/action", "Microsoft.Compute/virtualMachines/runCommands/*" ], "AssignableScopes": [ "/subscriptions/SUBSCRIPTION_ID" ] }'

    對於租戶層級範圍 (租戶中的所有訂閱),請改用管理群組範圍:

    az role definition create --role-definition '{ "Name": "AWSSSMVMExtensionRole-TENANT_ID", "Description": "Allows AWS Systems Manager to run commands on Azure VMs", "Actions": [ "Microsoft.Compute/virtualMachines/read", "Microsoft.Compute/virtualMachines/runCommand/action", "Microsoft.Compute/virtualMachines/runCommands/*" ], "AssignableScopes": [ "/providers/Microsoft.Management/managementGroups/TENANT_ID" ] }'

    若要驗證已建立角色:

    az role definition list --name "AWSSSMVMExtensionRole-SUBSCRIPTION_ID" --output table
  5. 將 VM Run Command 角色指派給服務主體

    將自訂角色指派給您在步驟 2 中建立的服務主體。範圍決定 Systems Manager 可以管理哪些 Azure 資源。

    對於訂閱層級範圍 (每個訂閱重複):

    az role assignment create \ --assignee SERVICE_PRINCIPAL_ID \ --role "AWSSSMVMExtensionRole-SUBSCRIPTION_ID" \ --scope "/subscriptions/SUBSCRIPTION_ID"

    對於管理群組層級範圍:

    az role assignment create \ --assignee SERVICE_PRINCIPAL_ID \ --role "AWSSSMVMExtensionRole-TENANT_ID" \ --scope "/providers/Microsoft.Management/managementGroups/TENANT_ID"
  6. 為 建立 Azure Entra ID 應用程式 AWS Config

    為 建立單獨的應用程式註冊, AWS Config 以便在記錄 Azure 資源狀態時使用。記下輸出中的應用程式 (用戶端) ID

    az ad app create \ --display-name "AWSConfigAzureIntegration-ACCOUNT_ID-TENANT_ID_PREFIX" \ --query appId

    為 AWS Config 應用程式建立服務主體:

    az ad sp create --id CONFIG_APPLICATION_ID
  7. 新增 的聯合身分憑證 AWS Config

    將聯合身分憑證新增至 AWS Config 應用程式。主旨是 AWS Config 服務連結角色 ARN (在後續步驟中建立 Config 連接器時自動建立)。

    az ad app federated-credential create \ --id CONFIG_APPLICATION_ID \ --parameters "{ \"name\": \"aws-config-federation\", \"issuer\": \"AWS_OIDC_ISSUER_URL\", \"subject\": \"arn:aws:iam::ACCOUNT_ID:role/aws-service-role/thirdparty.config.amazonaws.com/AWSServiceRoleForConfigThirdParty\", \"audiences\": [\"api://AzureADTokenExchange\"] }"
  8. 將 Reader 角色指派給 AWS Config 服務主體

    將 Azure 內建讀取器角色指派給租用戶 (管理群組) 層級 AWS Config 的服務主體。這可讓 AWS Config 探索 Azure 資源。

    az role assignment create \ --assignee CONFIG_SERVICE_PRINCIPAL_ID \ --role "acdd72a7-3385-48ef-bd42-f606fba81ae7" \ --scope "/providers/Microsoft.Management/managementGroups/TENANT_ID"
  9. 建立適用於 Azure 活動日誌串流的 Event Hub

    AWS Config 使用 Azure Event Hub 來接收指出資源變更的活動日誌事件。在其中一個 Azure 訂閱中建立 Event Hub 命名空間、中樞和取用者群組。

    # Create a resource group for the Event Hub az group create \ --subscription "HOSTING_SUBSCRIPTION_ID" \ --name "AWSConfigAzureResources" \ --location eastus # Create an Event Hub namespace with a discovery tag az eventhubs namespace create \ --subscription "HOSTING_SUBSCRIPTION_ID" \ --resource-group "AWSConfigAzureResources" \ --name "EVENT_HUB_NAMESPACE" \ --location eastus \ --sku Standard \ --tags "AWSConfig-ACCOUNT_ID-AWS_REGION=activitylog" # Create the Event Hub az eventhubs eventhub create \ --subscription "HOSTING_SUBSCRIPTION_ID" \ --resource-group "AWSConfigAzureResources" \ --namespace-name "EVENT_HUB_NAMESPACE" \ --name "activitylog" \ --partition-count 4 # Create the consumer group for AWS Config az eventhubs eventhub consumer-group create \ --subscription "HOSTING_SUBSCRIPTION_ID" \ --resource-group "AWSConfigAzureResources" \ --namespace-name "EVENT_HUB_NAMESPACE" \ --eventhub-name "activitylog" \ --name "AWSConfig"

    EVENT_HUB_NAMESPACE 取代為全域唯一名稱 (例如 awsconfig-ACCOUNT_ID-REGION),並將 HOSTING_SUBSCRIPTION_ID 取代為將託管 Event Hub 資源的 Azure 訂閱。

  10. 將 Event Hubs Data Receiver 角色指派給 AWS Config 服務主體

    允許 AWS Config 服務主體從 Event Hub 讀取:

    EVENT_HUB_ID=$(az eventhubs eventhub show \ --subscription "HOSTING_SUBSCRIPTION_ID" \ --resource-group "AWSConfigAzureResources" \ --namespace-name "EVENT_HUB_NAMESPACE" \ --name "activitylog" \ --query id \ -o tsv) az role assignment create \ --assignee CONFIG_SERVICE_PRINCIPAL_ID \ --role "a638d3c7-ab3a-418d-83e6-5f17a39d4fde" \ --scope "$EVENT_HUB_ID"
  11. 設定活動日誌匯出至 Event Hub

    針對您要監控的每個 Azure AWS Config 訂閱,建立診斷設定,將活動日誌事件匯出至 Event Hub:

    az provider register \ --namespace Microsoft.Insights \ --subscription "SUBSCRIPTION_ID" az rest --method PUT \ --url "https://management.azure.com/subscriptions/SUBSCRIPTION_ID/providers/Microsoft.Insights/diagnosticSettings/EVENT_HUB_NAMESPACE?api-version=2021-05-01-preview" \ --body "{ \"properties\": { \"eventHubAuthorizationRuleId\": \"/subscriptions/HOSTING_SUBSCRIPTION_ID/resourceGroups/AWSConfigAzureResources/providers/Microsoft.EventHub/namespaces/EVENT_HUB_NAMESPACE/authorizationRules/RootManageSharedAccessKey\", \"eventHubName\": \"activitylog\", \"logs\": [{\"category\": \"Administrative\", \"enabled\": true}] } }"

    針對您要監控的每個訂閱重複此步驟。

完成 Azure 設定後,請注意下列值。您在建立 Cloud Connector 時需要它們:

  • 租戶 ID — Azure AD 目錄 (租戶) ID。

  • SSM 應用程式 (用戶端) ID — Systems Manager Azure AD 應用程式的應用程式 ID (步驟 1)。

  • Config 應用程式 (用戶端) ID — AWS Config Azure AD 應用程式的應用程式 ID (步驟 6)。

  • 訂閱 IDs — 您要管理的 Azure 訂閱。

  • Event Hub 命名空間主機名稱 — Event Hub 命名空間的完整主機名稱 (例如 EVENT_HUB_NAMESPACE.servicebus.windows.net)。