Pré-requisitos do Azure
Conclua as etapas a seguir no ambiente do Azure. Você precisa dos seguintes valores dos pré-requisitos da AWS:
-
URL do emissor: o URL do emissor do AWS OIDC da seção anterior.
-
Assunto: o ARN do perfil de federação do Systems Manager para Azure, por exemplo:
arn:aws:iam::ACCOUNT_ID:role/service-role/SSM-AzureRole-connector-name-id8
Para configurar o lado do Azure da federação
-
Criar uma aplicação do Azure Entra ID
Crie um registro de aplicação no Microsoft Entra ID (antigo Azure Active Directory). Anote o ID da aplicação (cliente) na saída.
az ad app create --display-name "AWSSSMAzureIntegration" --query appId -
Criar uma entidade principal de serviço para a aplicação
Crie uma entidade principal de serviço associada à aplicação. Anote o ID da entidade principal do serviço na saída.
az ad sp create --idAPPLICATION_ID -
Adicionar uma credencial de identidade federada
Adicione uma credencial de identidade federada à aplicação que confia no emissor do AWS OIDC. Isso permite que o Azure aceite tokens emitidos pela AWS em nome do perfil de federação do Systems Manager Azure (consulte Perfil de federação do Azure).
az ad app federated-credential create \ --idAPPLICATION_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\"] }"Substitua:
-
APPLICATION_ID: o ID da aplicação (cliente) da Etapa 1. -
AWS_OIDC_ISSUER_URL: o URL do emissor do AWS OIDC (por exemplo,https://a1667813-695b-5415-b0f7-d473d62bb123.tokens.sts.global.api.aws). -
ACCOUNT_ID: seu ID da Conta da AWS. -
CONNECTOR_NAME: o nome de exibição limpo do seu Cloud Connector. -
ID8: os primeiros oito caracteres do UUID atribuídos ao perfil de federação do Azure. Você pode encontrar isso no nome do perfil após criar o Cloud Connector no Console de gerenciamento da AWS ou especificá-lo ao criar o perfil manualmente (consulte Perfil de federação do Azure).
-
-
Criar o perfil personalizado de Run Command para VMs
Crie um perfil personalizado que conceda as permissões mínimas necessárias para que o Systems Manager execute comandos nas VMs do Azure. Substitua
SUBSCRIPTION_IDpelo ID de assinatura do Azure que você deseja gerenciar.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" ] }'Para o escopo no nível de locatário (todas as assinaturas no locatário), use um escopo de grupo de gerenciamento:
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" ] }'Para verificar se o perfil foi criado:
az role definition list --name "AWSSSMVMExtensionRole-SUBSCRIPTION_ID" --output table -
Atribua o perfil de Run Command para VMs à entidade principal do serviço
Atribua o perfil personalizado à entidade principal do serviço que você criou na Etapa 2. O escopo determina quais recursos do Azure o Systems Manager pode gerenciar.
Para o escopo no nível de assinatura (repita para cada assinatura):
az role assignment create \ --assigneeSERVICE_PRINCIPAL_ID\ --role "AWSSSMVMExtensionRole-SUBSCRIPTION_ID" \ --scope "/subscriptions/SUBSCRIPTION_ID"Para o escopo no nível de grupo de gerenciamento:
az role assignment create \ --assigneeSERVICE_PRINCIPAL_ID\ --role "AWSSSMVMExtensionRole-TENANT_ID" \ --scope "/providers/Microsoft.Management/managementGroups/TENANT_ID" -
Criar uma aplicação do Azure Entra ID para
Crie outro registro de aplicação para usar ao registrar o estado dos recursos do Azure. Anote o ID da aplicação (cliente) na saída.
az ad app create \ --display-name "AWSConfigAzureIntegration-ACCOUNT_ID-TENANT_ID_PREFIX" \ --query appIdCrie uma entidade principal de serviço para a aplicação:
az ad sp create --idCONFIG_APPLICATION_ID -
Adicionar uma credencial de identidade federada para
Adicione uma credencial de identidade federada à aplicação. O assunto é o ARN do perfil vinculado ao serviço (criado automaticamente quando você cria o conector do Config em uma etapa posterior).
az ad app federated-credential create \ --idCONFIG_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\"] }" -
Atribuir o perfil de leitor à entidade principal do serviço
Atribua o perfil de leitor integrado do Azure à entidade principal do serviço no nível de locatário (grupo de gerenciamento). Isso permite descobrir os recursos do Azure.
az role assignment create \ --assigneeCONFIG_SERVICE_PRINCIPAL_ID\ --role "acdd72a7-3385-48ef-bd42-f606fba81ae7" \ --scope "/providers/Microsoft.Management/managementGroups/TENANT_ID" -
Crie um Hub de Eventos para streaming do log de atividades do Azure
Usa um Hub de Eventos do Azure para receber eventos do log de atividades que indicam alterações nos recursos. Crie um namespace, hub e grupo de consumidores do Hub de Eventos em uma de suas assinaturas do Azure.
# 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"Substitua
EVENT_HUB_NAMESPACEpor um nome globalmente exclusivo (por exemplo,awsconfig-) eACCOUNT_ID-REGIONHOSTING_SUBSCRIPTION_IDpela assinatura do Azure que hospedará os recursos do Hub de Eventos. -
Atribua o perfil de receptor de dados dos Hubs de Eventos à entidade principal serviço
Permita que a entidade principal do serviço leia do Hub de Eventos:
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 \ --assigneeCONFIG_SERVICE_PRINCIPAL_ID\ --role "a638d3c7-ab3a-418d-83e6-5f17a39d4fde" \ --scope "$EVENT_HUB_ID" -
Configurar a exportação do log de atividades para o Hub de Eventos
Para cada assinatura do Azure que você deseja monitorar, crie uma configuração de diagnóstico que exporte eventos do log de atividades para o Hub de Eventos:
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}] } }"Repita essa etapa para cada assinatura que deseja monitorar.
Depois de concluir a configuração do Azure, anote os valores a seguir. Você precisará deles ao criar o Cloud Connector:
-
ID do locatário: seu ID do diretório (locatário) do Azure AD.
-
ID do SSM Application (cliente): o ID da aplicação do Systems Manager Azure AD (Etapa 1).
-
ID do Config Application (cliente): o ID da aplicação do Azure AD (Etapa 6).
-
IDs de assinaturas: as assinaturas do Azure que você deseja gerenciar.
-
Nome do host do namespace do Hub de Eventos: o nome do host totalmente qualificado do namespace do Hub de Eventos (por exemplo,
).EVENT_HUB_NAMESPACE.servicebus.windows.net