Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um serviço que é executado no Google Cloud normalmente se autentica para Microsoft Entra ID com um segredo de aplicativo Microsoft Entra armazenado para que ele possa alcançar Azure recursos. Você deve proteger e girar esse segredo, e o serviço enfrenta uma interrupção se o segredo expirar antes de substituí-lo.
A federação de identidade da carga de trabalho remove esse segredo armazenado. Você configura um aplicativo Microsoft Entra para confiar no token de ID que o Google emite em uma conta de serviço do Google Cloud e seu serviço troca seu token emitido pelo Google por um token de acesso Microsoft Entra em vez de armazenar uma credencial.
Neste tutorial, você identifica uma conta de serviço do Google Cloud, federa com um aplicativo Microsoft Entra e troca um token de ID emitido pelo Google por um token de acesso Microsoft Entra que sua carga de trabalho usa para chamar um recurso de Azure, como Armazenamento de Blobs do Azure.
O tutorial tem três partes sequenciais que são criadas para um cenário concluído. Cada parte depende da saída da parte antes dela.
Neste tutorial, você:
- Identifique uma conta de serviço do Google Cloud e obtenha sua ID exclusiva.
- Configure um aplicativo Microsoft Entra para confiar no token emitido pelo Google.
- Exchange um token de ID do Google para um token de acesso Microsoft Entra e acessar um recurso de Azure.
O diagrama a seguir mostra o fluxo de federação de identidade de carga de trabalho: uma carga de trabalho obtém um token de um provedor de identidade externo, troca-o com o plataforma de identidade da Microsoft por um token de acesso e usa esse token de acesso para alcançar um recurso de Azure. Neste tutorial, o provedor de identidade externo é o Google Cloud e o token é um token de ID emitido pelo Google.
Pré-requisitos
- Um locatário Microsoft Entra e uma assinatura Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
- Um projeto do Google Cloud e uma carga de trabalho que é executada em um serviço do Google Cloud que pode obter um token de ID para uma conta de serviço, como o Mecanismo de Aplicativo ou o Mecanismo de Computação.
- Acesso ao console do Google Cloud com permissão para exibir contas de serviço no IAM &admin.
- A ferramenta de linha de comando CLI do Azure (
az) instalada e configurada para alcançar seu locatário. Você também pode concluir as etapas de Microsoft Entra no centro de administração do Microsoft Entra. - Permissão para adicionar uma credencial de identidade federada a um registro de aplicativo ou identidade gerenciada. Para adicionar uma credencial federada a um registro de aplicativo, sua conta deve ser um proprietário do aplicativo ou manter uma das funções Administrador de Aplicativos, Desenvolvedor de Aplicativos ou Administrador de Aplicativos na Nuvem ou ter a
microsoft.directory/applications/credentials/updatepermissão.
Parte 1: Identificar uma conta de serviço do Google Cloud
Sua carga de trabalho do Google Cloud precisa de uma identidade para a qual o Google possa emitir tokens. As contas de serviço do Google Cloud fornecem essa identidade. Use a conta de serviço padrão do projeto do Google Cloud ou crie uma conta de serviço dedicada para sua carga de trabalho.
O Google emite tokens de ID para uma conta de serviço em que a sub declaração (assunto) é a ID exclusiva da conta de serviço e a iss declaração (emissor) é https://accounts.google.com. Você usa os dois valores para configurar a confiança no aplicativo Microsoft Entra na Parte 2.
No console do Google Cloud, acesse IAM &admin>Service Accounts.
Selecione a conta de serviço em que a carga de trabalho é executada.
Nos detalhes da conta de serviço, localize sua ID Exclusiva e copie o valor. Esse valor é a declaração
subnos tokens que o Google emite para a conta de serviço.
Registre a ID exclusiva como <service-account-unique-id>. Use-o como o assunto da credencial de identidade federada na Parte 2.
Parte 2: Configurar um aplicativo Microsoft Entra para confiar no token do Google
Nesta parte, você adiciona uma credencial de identidade federada a um aplicativo Microsoft Entra para que Microsoft Entra ID confie nos tokens de ID que o Google emite para sua conta de serviço. Uma credencial de identidade federada precisa de três entradas:
-
subject: deve corresponder àsubdeclaração no token emitido pelo Google – a ID exclusiva da conta de serviço.<service-account-unique-id> -
issuer: deve corresponder àissdeclaração. Para o Google Cloud, esse valor éhttps://accounts.google.com. O emissor deve estar em conformidade com a especificação de descoberta do OpenID Connect, pois Microsoft Entra ID usa a URL do emissor para buscar as chaves que validam o token. -
audiences: deve corresponder àauddeclaração. Use o valorapi://AzureADTokenExchangerecomendado Microsoft.
Um aplicativo Microsoft Entra dá suporte a um número limitado de credenciais de identidade federadas. Para obter o limite atual e outras restrições, consulte considerações e restrições importantes para credenciais de identidade federadas.
Crie um arquivo nomeado
credential.jsoncom o conteúdo a seguir. Substitua<service-account-unique-id>pela ID exclusiva copiada na Parte 1.{ "name": "AccessFromGoogle", "issuer": "https://accounts.google.com", "subject": "<service-account-unique-id>", "audiences": ["api://AzureADTokenExchange"], "description": "Federated credential for a Google Cloud workload" }Adicione a credencial de identidade federada ao registro do aplicativo. Substitua
<your-app-id>pela ID do Aplicativo (cliente) do registro do aplicativo.az ad app federated-credential create --id <your-app-id> --parameters credential.json
Você também pode adicionar a credencial federada no centro de administração do Microsoft Entra. Vá para https://accounts.google.com como o emissor e a ID exclusiva da conta de serviço como o assunto. Para obter as etapas detalhadas, consulte Configurar um aplicativo para confiar em um provedor de identidade externo.
Para configurar a credencial em uma identidade gerenciada atribuída pelo usuário em vez de um registro de aplicativo, use o comando a seguir. Você precisa da função Proprietário ou Colaborador na identidade gerenciada. Para obter as etapas detalhadas, consulte Configurar uma identidade gerenciada atribuída pelo usuário para confiar em um provedor de identidade externo.
az identity federated-credential create \
--name AccessFromGoogle \
--identity-name <your-identity-name> \
--resource-group <your-resource-group> \
--issuer https://accounts.google.com \
--subject <service-account-unique-id> \
--audience api://AzureADTokenExchange
Conceda ao aplicativo ou acesso de identidade gerenciada aos recursos de Azure que sua carga de trabalho chama, como uma atribuição de função em sua conta de armazenamento.
Parte 3: Exchange um token do Google para um token de acesso Microsoft Entra
Nesta parte, sua carga de trabalho obtém um token de ID emitido pelo Google para sua conta de serviço e o troca por um token de acesso Microsoft Entra, que ele usa para chamar um recurso de Azure.
Um serviço do Google Cloud, como o Mecanismo de Aplicativo ou o Mecanismo de Computação, solicita um token de ID para sua conta de serviço do servidor de metadados do Google. O Google gerencia as chaves de assinatura, portanto, sua carga de trabalho não precisa de chaves armazenadas.
Solicite um token de ID do Google do servidor de metadados. O público-alvo na solicitação deve corresponder ao público que você configurou na credencial de identidade federada.
api://AzureADTokenExchangeO snippet de Node.js a seguir solicita o token e o retorna como uma cadeia de caracteres. O conceito é o mesmo em qualquer idioma.async function getGoogleIdToken() { const endpoint = "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/identity?audience=api://AzureADTokenExchange"; const headers = { "Metadata-Flavor": "Google" }; const response = await fetch(endpoint, { method: "GET", headers }); return response.text(); }Exchange o token de ID do Google para um token de acesso Microsoft Entra usando
ClientAssertionCredentialo SDK de Identidade do Azure.ClientAssertionCredentialrecebe um retorno de chamada que retorna a declaração federada – nesse caso, o token de ID do Google. Forneça sua ID de locatário Microsoft Entra comotenantIde a ID do aplicativo (cliente) do registro de aplicativo comoclientId.import { ClientAssertionCredential } from "@azure/identity"; const credential = new ClientAssertionCredential(tenantId, clientId, getGoogleIdToken);Use a credencial com qualquer cliente SDK do Azure. Por exemplo, para chamar Armazenamento de Blobs do Azure:
const { BlobServiceClient } = require("@azure/storage-blob"); const blobClient = new BlobServiceClient(blobUrl, credential);
Quando o cliente precisa de um token, ele invoca o retorno de chamada para buscar um novo token de ID do Google, troca o token do Google com plataforma de identidade da Microsoft por um token de acesso e armazena em cache o token de acesso resultante. Como ClientAssertionCredential fornece a declaração federada por meio de um retorno de chamada, sua carga de trabalho nunca armazena um segredo.
ClientAssertionCredentialestá disponível nos SDKs de Identidade do Azure, incluindo .NET, Java, JavaScript, Python e Go. As bibliotecas MSAL também dão suporte a declarações de cliente se você precisar de controle de nível inferior sobre a troca de tokens.
Sua carga de trabalho do Google Cloud agora pode acessar Microsoft Entra recursos protegidos sem segredos armazenados.
Limpar os recursos
Se você não precisar mais dos recursos criados neste tutorial, remova-os para evitar encargos contínuos:
Exclua a credencial de identidade federada do registro do aplicativo:
az ad app federated-credential delete \ --id <your-app-id> \ --federated-credential-id AccessFromGoogleSe você criou uma conta de serviço dedicada do Google Cloud para este tutorial, exclua-a no console do Google Cloud emContas de ServiçoIAM &Admin>.
Remova as atribuições de função que você adicionou para conceder ao aplicativo ou acesso de identidade gerenciada aos recursos de Azure.
Conteúdo relacionado
- Federação de identidade de carga de trabalho
- Configurar um aplicativo para confiar em um provedor de identidade externo
- Configurar uma identidade gerenciada atribuída pelo usuário para confiar em um provedor de identidade externo
- Considerações e restrições importantes para credenciais de identidade federadas
- Criar um federatedIdentityCredential (Microsoft Graph)