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 AWS Config
Crie outro registro de aplicação para o AWS Config 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 AWS Config:
az ad sp create --idCONFIG_APPLICATION_ID -
Adicionar uma credencial de identidade federada para AWS Config
Adicione uma credencial de identidade federada à aplicação AWS Config. O assunto é o ARN do perfil vinculado ao serviço AWS Config (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 AWS Config
Atribua o perfil de leitor integrado do Azure à entidade principal do serviço AWS Config no nível de locatário (grupo de gerenciamento). Isso permite que o AWS Config descubra 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
O AWS Config 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 do serviço AWS Config
Permita que a entidade principal do serviço AWS Config 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 que o AWS Config monitore, 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 AWS Config 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