Configure a federação de identidades de cargas de trabalho com o Active Directory

Este guia descreve como usar a federação de identidades da carga de trabalho para permitir que as cargas de trabalho usem credenciais do Active Directory para autenticar no Trusted Cloud by S3NS.

Se estiver a executar cargas de trabalho do Windows Server num ambiente do Active Directory, estas cargas de trabalho podem ter acesso às credenciais do Active Directory. Por exemplo:

  • Um serviço do Windows pode ser configurado para iniciar sessão como utilizador do domínio.
  • Uma aplicação IIS pode ser configurada para ser executada como uma conta de serviço gerida por um grupo (gMSA).

Ao usar a federação de identidades da carga de trabalho em combinação com os serviços de federação do Active Directory (AD FS), pode permitir que estas cargas de trabalho troquem as respetivas credenciais do Kerberos do Active Directory por credenciais Trusted Cloud de curta duração. As cargas de trabalho podem usar estas credenciais de curta duração para aceder às APIs Trusted Cloud.

A troca de credenciais do Active Directory por credenciais Trusted Cloud de curta duração funciona encadeando duas trocas de tokens:

  1. Uma carga de trabalho usa o OpenID Connect (OIDC), o SAML-POST ou o WS-Trust para pedir um token OIDC ou uma afirmação SAML do AD FS. Para se autenticar no AD FS, a carga de trabalho usa a autenticação integrada do Windows (IWA) e as respetivas credenciais do Active Directory existentes.
  2. Em seguida, a carga de trabalho usa a federação de identidades da carga de trabalho para trocar o token OIDC ou a declaração SAML por um token do serviço de tokens de segurança e, opcionalmente, para se fazer passar por uma Trusted Cloud conta de serviço.

Este documento mostra como pode automatizar este processo de uma forma que não exija alterações à sua aplicação através do Workload Authenticator para Windows.

Prepare o AD FS

Só tem de efetuar estes passos uma vez.

Selecione um protocolo

A forma de preparar o AD FS depende do protocolo que quer usar:

  • SAML: pode permitir que as cargas de trabalho usem SAML ou WS-Trust para obter afirmações SAML.

    Para usar SAML ou WS-Trust, cria uma parte fidedigna no AD FS e configura um conjunto de identidades de cargas de trabalho para confiar em afirmações emitidas para esta parte fidedigna.

    Uma carga de trabalho pode usar o respetivo utilizador do Active Directory para se autenticar no AD FS através da associação SAML-POST ou do WS-Trust. Em seguida, o AD FS emite uma declaração SAML que contém informações sobre o utilizador do Active Directory da carga de trabalho e informações adicionais, como as associações a grupos.

    A utilização de SAML ou WS-Trust requer o AD FS 3.0, o AD FS para Windows Server 2016 ou uma versão mais recente do AD FS.

  • OIDC: pode permitir que as cargas de trabalho usem o OIDC para obter tokens OIDC.

    Para usar o OIDC, cria um cliente OIDC (aplicação nativa) e um recurso OIDC (API Web) no AD FS. Em seguida, configura um Workload Identity Pool para confiar nos tokens de acesso emitidos para a API Web.

    Uma carga de trabalho pode usar o respetivo utilizador do Active Directory e a concessão do OAuth para autenticar no AD FS.client_credentials Em seguida, o AD FS emite um token de acesso, mas não um token de ID.

    O token de acesso contém informações sobre a aplicação cliente OIDC, mas não inclui informações sobre o utilizador do Active Directory da carga de trabalho nem as respetivas associações a grupos.

    Uma vez que os tokens de acesso não contêm informações sobre o utilizador do Active Directory, a utilização do OIDC pode ser menos flexível do que a utilização do SAML ou do WS-Trust.

    A utilização do OIDC requer o AD FS para o Windows Server 2016 ou uma versão mais recente do AD FS.

Para iniciar sessão, o seu IDP tem de fornecer informações de autenticação assinadas: os IDPs OIDC têm de fornecer um JWT e as respostas do IDP SAML têm de ser assinadas.

Pré-requisitos da IWA

Esta secção descreve os pré-requisitos da IWA necessários para usar este guia.

Se nunca usou a IWA com o AD FS, certifique-se de que cumpre os seguintes pré-requisitos:

Registe a carga de trabalho

Para registar a sua carga de trabalho no AD FS, faça o seguinte:

OIDC

Para permitir que as cargas de trabalho usem o OIDC, precisa de dois registos de aplicações no AD FS:

  • Um registo de aplicação do tipo aplicação nativa ou aplicação de servidor.

  • Um registo de aplicação do tipo API Web que corresponde a um fornecedor do Workload Identity Pool no Trusted Cloud.

Registar a aplicação cliente

Crie uma aplicação cliente que represente a carga de trabalho. Se tiver várias cargas de trabalho que precisam de acesso à Trusted Cloud, pode ter de criar várias aplicações cliente.

Para registar uma aplicação cliente no AD FS, faça o seguinte:

  1. Abra o snap-in MMC do AD FS e navegue para Grupos de aplicações.
  2. Clique em Adicionar grupo de aplicações.
  3. Na página Boas-vindas, faça o seguinte:

    1. No campo de texto, introduza um nome para o cliente.
    2. Selecione Aplicação de servidor.
    3. Clicar em Seguinte.
  4. Na página Aplicação de servidor, faça o seguinte:

    1. No campo de texto text-field, introduza um identificador de cliente (ID de cliente) e um URI de redirecionamento.

      Se planeia usar apenas o tipo de autorização client_credentials, o URI de redirecionamento não é usado e pode usar um URI, como http://localhost/.

    2. Clicar em Seguinte.

  5. Na página Configure as credenciais da aplicação, faça o seguinte:

    1. Escolha como o cliente faz a autenticação. Para usar a IWA, defina a opção Autenticação integrada do Windows como ativada.
    2. Selecione o utilizador do domínio para o qual a sua aplicação está configurada para ser executada.
    3. Clicar em Seguinte.
  6. Na página Resumo, reveja as definições e clique em Seguinte.

  7. Clique em Fechar para ignorar a caixa de diálogo.

Criar uma aplicação de API Web para o Workload Identity Pool

Crie outro registo de aplicação do tipo API Web. Esta aplicação corresponde a um fornecedor do Workload Identity Pool e usa-o para configurar uma relação de confiança com Trusted Cloud.

Para criar a aplicação no AD FS, faça o seguinte:

  1. Abra o snap-in MMC do AD FS e navegue para Grupos de aplicações.
  2. Clique em Adicionar grupo de aplicações.
  3. Na página de boas-vindas, introduza um nome, como Workload Identity Federation (test environment), e selecione API Web. Em seguida, clique em Seguinte.
  4. Na página Configurar API Web, introduza um identificador de parte fidedigna para a API Web.

    Em vez de definir um identificador de parte fidedigna personalizado, pode usar o URI seguinte como identificador de parte fidedigna:

    https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_POOL_ID/providers/WORKLOAD_PROVIDER_ID
    

    Substitua o seguinte:

    • PROJECT_NUMBER: o número do projeto do projeto que usa para criar o conjunto de identidades da carga de trabalho. Trusted Cloud
    • WORKLOAD_POOL_ID: um ID à sua escolha que identifica o Workload Identity Pool. Tem de usar o mesmo ID quando criar o Workload Identity Pool mais tarde.
    • WORKLOAD_PROVIDER_ID: um ID à sua escolha que identifica o fornecedor do Workload Identity Pool. Tem de usar o mesmo ID quando criar o fornecedor do Workload Identity Pool mais tarde.

    A formatação do URI desta forma garante que o identificador da parte fidedigna identifica exclusivamente um fornecedor do Workload Identity Pool.

    Precisa do identificador da parte fidedigna mais tarde quando configurar o fornecedor do Workload Identity Pool.

  5. Clicar em Seguinte.

  6. Na página Aplicar política de controlo de acesso, selecione uma política de acesso adequada e, de seguida, clique em Seguinte.

  7. Na página Configurar autorizações da aplicação, adicione a aplicação cliente que criou anteriormente. Em seguida, clique em Seguinte.

  8. Na página Resumo, reveja as definições e clique em Seguinte.

  9. Clique em Fechar para ignorar a caixa de diálogo.

SAML ou WS-Trust

Crie uma relação de confiança de entidade confiável no AD FS:

  1. Abra o snap-in MMC do AD FS.
  2. Navegue para Relações de confiança de partes fidedignas.
  3. Clique em Adicionar confiança de parte fidedigna.
  4. Na página Boas-vindas do assistente Adicionar confiança de parte fidedigna, faça o seguinte:
    1. Selecione Com reconhecimento de reivindicações
    2. Clique em Iniciar.
  5. Na página Selecionar origem de dados, faça o seguinte:
    1. Selecione Introduzir dados sobre a entidade fidedigna manualmente.
    2. Clicar em Seguinte.
  6. Na página Especifique o nome a apresentar, faça o seguinte:

    1. Introduza um nome para a confiança.
    2. Clicar em Seguinte.
  7. Na página Configurar certificado, clique em Seguinte. Embora a Workload Identity Federation suporte SAML encriptado, não é descrita neste procedimento. Para saber mais, consulte as instruções da CLI gcloud em Crie o Workload Identity Pool e o fornecedor, mais adiante neste guia.

  8. Na página Configurar URL, faça o seguinte:

    SAML

    Use as seguintes definições:

    • Defina a opção Ativar compatibilidade com o protocolo WebSSO SAML 2.0 como ativada
    • No campo URL do serviço SSO SAML 2.0 da parte fidedigna, introduza o seguinte URL:

      https://sts.s3nsapis.fr/v1/token
      

    WS-Trust

    Manter as predefinições

  9. Clicar em Seguinte.

  10. Na página Configurar identificadores, introduza um identificador de parte fidedigna.

    Em vez de definir um identificador de parte fidedigna personalizado, pode usar o seguinte URI como identificador de parte fidedigna:

    https://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_POOL_ID/providers/WORKLOAD_PROVIDER_ID
    

    Substitua o seguinte:

    • PROJECT_NUMBER: o número do projeto do projeto que usa para criar o conjunto de identidades da carga de trabalho. Trusted Cloud
    • WORKLOAD_POOL_ID: um ID à sua escolha que identifica o Workload Identity Pool. Tem de usar o mesmo ID quando criar o Workload Identity Pool mais tarde.
    • WORKLOAD_PROVIDER_ID: um ID à sua escolha que identifica o fornecedor do Workload Identity Pool. Tem de usar o mesmo ID quando criar o fornecedor do Workload Identity Pool mais tarde.

    A formatação do URI desta forma garante que o identificador da parte fidedigna identifica exclusivamente um fornecedor do Workload Identity Pool.

    Precisa do identificador da parte fidedigna mais tarde quando configurar o fornecedor do Workload Identity Pool.

  11. Clicar em Seguinte.

  12. Na página Escolha a política de controlo de acesso, selecione uma política de controlo de acesso adequada e, de seguida, clique em Seguinte.

  13. Na página Pronto para adicionar confiança, reveja as definições e clique em Seguinte.

  14. Na página Concluir, clique em Fechar para ignorar a caixa de diálogo.

Para serem compatíveis com a Workload Identity Federation, as afirmações SAML têm de conter, pelo menos, uma reivindicação que identifique exclusivamente o utilizador do Active Directory. Normalmente, usa a reivindicação Name ID para este fim, que corresponde ao valor do elemento NameID na declaração SAML.

Para personalizar o conjunto de reivindicações da declaração SAML, tem de editar a política de emissão de reivindicações da relação de confiança da parte fidedigna. Para editar a política de emissão de reivindicações, faça o seguinte:

  1. Na lista de relações de confiança de partes fidedignas, selecione a relação de confiança que acabou de criar e clique em Editar política de emissão de reivindicações.
  2. Clique em Adicionar regra
  3. Na página Escolher tipo de regra do assistente Adicionar regra de reivindicação de transformação, faça o seguinte:
    1. Selecione Transformar uma reivindicação recebida.
    2. Clicar em Seguinte.
  4. Na página Configurar regra de reivindicação, configure as seguintes definições:

    • Nome da regra de reivindicação: Name Identifier.
    • Tipo de reivindicação recebida: selecione SID principal, UPN ou uma reivindicação diferente para identificar o assunto de forma exclusiva.
    • Tipo de reivindicação de saída: ID do nome.
    • Formato do ID do nome de saída: não especificado.
  5. Selecione Transmitir todos os valores de reivindicação e clique em Concluir.

  6. Opcionalmente, configure regras adicionais para incluir mais atributos nas afirmações SAML.

  7. Clique em OK para fechar a caixa de diálogo da política de emissão de reivindicações.

Configure a Workload Identity Federation

Só tem de realizar estes passos uma vez para cada domínio do Microsoft Active Directory com o qual quer federar. Em seguida, pode usar o mesmo conjunto de identidades e fornecedor de identidades para várias cargas de trabalho e em vários Trusted Cloud projetos.

Para começar a configurar a Workload Identity Federation, faça o seguinte:

  1. In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.

    Go to project selector

  2. É recomendável usar um projeto dedicado para gerir os fornecedores e os conjuntos de identidades de carga de trabalho.
  3. Verify that billing is enabled for your Trusted Cloud project.

  4. Enable the IAM, Resource Manager, Service Account Credentials, and Security Token Service APIs.

    Enable the APIs

Defina um mapeamento de atributos e uma condição

As credenciais específicas do ambiente da sua carga de trabalho do Active Directory contêm vários atributos, e tem de decidir que atributo quer usar como identificador do assunto (google.subject) em Trusted Cloud.

Opcionalmente, pode mapear atributos adicionais. Em seguida, pode consultar estes atributos adicionais quando conceder acesso a recursos.

OIDC

Os seus mapeamentos de atributos podem usar as reivindicações incorporadas em tokens de acesso do AD FS como atributos de origem.

Para autenticar uma aplicação, pode usar o seguinte mapeamento de atributos:

google.subject=assertion.appid

Esta mapeamento define google.subject para o valor da reivindicação appid, que contém o ID do cliente da aplicação AD FS.

SAML ou WS-Trust

Os mapeamentos de atributos podem usar as reivindicações incorporadas na declaração emitida pelo AD FS, conforme descrito anteriormente neste guia.

Use o seguinte mapeamento para permitir que a Workload Identity Federation use a reivindicação Name ID da declaração SAML para identificar o utilizador de forma exclusiva:

google.subject=assertion.subject

Se configurou a sua política de emissão de reivindicações para incluir reivindicações adicionais em afirmações SAML, pode adicionar mapeamentos adicionais. Por exemplo:

google.groups=assertion.attributes['http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid']
attribute.userip=['http://schemas.microsoft.com/2014/09/requestcontext/claims/userip'][0]

Opcionalmente, defina uma condição de atributo. As condições de atributos são expressões de IEC que podem verificar atributos de afirmação e atributos de destino. Se a condição do atributo for avaliada como true para uma determinada credencial, a credencial é aceite. Caso contrário, a credencial é rejeitada.

OIDC

Pode usar uma condição de atributo para restringir os clientes que podem usar a Workload Identity Federation para obter tokens de curta duração.Trusted Cloud

Por exemplo, a seguinte condição define que as aplicações têm de usar a IWA para fazer a autenticação no AD FS:

assertion.authmethod=='http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/windows'

Para controlar a lista de aplicações que podem obter credenciais de curta duração para Trusted Cloud, não defina condições de atributos. Em alternativa, use autorizações de cliente no AD FS para definir as aplicações permitidas.

SAML ou WS-Trust

Pode usar uma condição de atributo para restringir os utilizadores do Active Directory que podem usar a Workload Identity Federation para obter tokensTrusted Cloud de curta duração.

Por exemplo, a condição seguinte só permite afirmações SAML que incluem uma determinada reivindicação de associação a um grupo:

"S-1-5-6" in google.groups

Crie o Workload Identity Pool e o fornecedor

Funções necessárias

Para obter as autorizações de que precisa para configurar a Workload Identity Federation, peça ao seu administrador para lhe conceder as seguintes funções de IAM no projeto:

Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Em alternativa, a função básica de proprietário do IAM (roles/owner) também inclui autorizações para configurar a federação de identidades. Não deve conceder funções básicas num ambiente de produção, mas pode concedê-las num ambiente de desenvolvimento ou teste.

Consola

  1. Na Trusted Cloud consola, aceda à página Novo fornecedor e grupo de cargas de trabalho.

    Aceda a Novo fornecedor e Workload Identity Pool

  2. Em Crie um Identity Pool, introduza o seguinte:

    • Nome: nome do conjunto. O nome também é usado como ID do conjunto. Não pode alterar o ID do conjunto mais tarde.
    • Descrição: texto que descreve a finalidade do grupo.
  3. Clique em Continuar.

  4. Configure as definições do fornecedor:

    OIDC

    • Selecione um fornecedor: OpenID Connect (OIDC).
    • Nome do fornecedor: o nome do fornecedor. O nome também é usado como o ID do fornecedor. Não pode alterar o ID do fornecedor mais tarde.
    • URL do emissor: https://ADFS_DOMAIN/adfs onde ADFS_DOMAIN é o nome de domínio público do servidor ou farm do AD FS.

    SAML

    Para configurar a federação de identidade da carga de trabalho a partir de um IdP compatível com SAML 2.0, pode usar as instruções da CLI gcloud.

  5. Clique em Continuar.

  6. Em Configurar atributos do fornecedor, adicione os mapeamentos de atributos que identificou anteriormente.

  7. Em Condições de atributos, introduza a condição de atributo que identificou anteriormente. Deixe o campo em branco se não tiver uma condição de atributo.

  8. Clique em Guardar para criar o Workload Identity Pool e o fornecedor.

gcloud

  1. Crie um novo Workload Identity Pool:

    gcloud iam workload-identity-pools create WORKLOAD_POOL_ID \
        --location="global" \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    Substitua o seguinte:

    • WORKLOAD_POOL_ID: ID exclusivo do conjunto.
    • DISPLAY_NAME: nome do grupo.
    • DESCRIPTION: descrição da piscina. Esta descrição é apresentada quando concede acesso a identidades de pool.
  2. Adicione um fornecedor do Workload Identity Pool:

    OIDC

    gcloud iam workload-identity-pools providers create-oidc WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="WORKLOAD_POOL_ID" \
        --issuer-uri="https://ADFS_DOMAIN/adfs" \
        --allowed-audiences="RELYING_PARTY_ID" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    Substitua o seguinte:

    O prefixo gcp- está reservado e não pode ser usado num ID do Workload Identity Pool ou do fornecedor do Workload Identity Pool.

    SAML ou WS-Trust

    curl -O https://ADFS_DOMAIN/federationmetadata/2007-06/federationmetadata.xml
    
    gcloud iam workload-identity-pools providers create-saml WORKLOAD_PROVIDER_ID \
        --location="global" \
        --workload-identity-pool="POOL_ID" \
        --idp-metadata-path="federationmetadata.xml" \
        --attribute-mapping="MAPPINGS" \
        --attribute-condition="CONDITIONS"
    

    Substitua o seguinte:

    O prefixo gcp- está reservado e não pode ser usado num ID do Workload Identity Pool ou do fornecedor do Workload Identity Pool.

    Exemplo:

    gcloud iam workload-identity-pools providers create-saml example-provider \
        --location="global" \
        --workload-identity-pool="pool-1" \
        --idp-metadata-path="federationmetadata.xml" \
        --attribute-mapping=google.subject=assertion.subject"
    

    Opcional: aceite afirmações SAML encriptadas do seu IdP

    Para permitir que o seu IdP SAML 2.0 produza afirmações SAML encriptadas que podem ser aceites pela federação de identidade da carga de trabalho, faça o seguinte:

    • Na federação de identidade da carga de trabalho, faça o seguinte:
      • Crie um par de chaves assimétricas para o fornecedor do Workload Identity Pool.
      • Transferir um ficheiro de certificado que contém a chave pública.
      • Configure o seu IdP SAML para usar a chave pública para encriptar as afirmações SAML que emite.
    • No IdP, faça o seguinte:
      • Ative a encriptação de afirmações, também conhecida como encriptação de tokens.
      • Carregue a chave pública que criou na federação de identidade da carga de trabalho.
      • Confirme que o seu IdP produz afirmações SAML encriptadas.
    Tenha em atenção que, mesmo com as chaves do fornecedor de encriptação SAML configuradas, a federação de identidade da carga de trabalho pode continuar a processar uma afirmação de texto simples.

    Crie chaves de encriptação de afirmações SAML de federação de identidade da força de trabalho

    Esta secção explica como criar um par de chaves assimétricas que permite à federação de identidades de cargas de trabalho aceitar afirmações SAML encriptadas.

    Trusted Cloud by S3NS usa a chave privada para desencriptar as afirmações SAML emitidas pelo seu IdP. Para criar um par de chaves assimétricas para utilização com a encriptação SAML, execute o seguinte comando. Para saber mais, consulte o artigo Algoritmos de encriptação SAML suportados.

    gcloud iam workload-identity-pools providers keys create KEY_ID \
        --workload-identity-pool WORKLOAD_POOL_ID \
        --provider WORKLOAD_PROVIDER_ID \
        --location global \
        --use encryption \
        --spec KEY_SPECIFICATION

    Substitua o seguinte:

    • KEY_ID: um nome de chave à sua escolha
    • WORKLOAD_POOL_ID: o ID da piscina
    • WORKLOAD_PROVIDER_ID: o ID do fornecedor do Workforce Identity Pool
    • KEY_SPECIFICATION: a especificação principal, que pode ser uma das seguintes: rsa-2048, rsa-3072 e rsa-4096.

    Depois de criar o par de chaves, para transferir a chave pública para um ficheiro de certificado, execute o seguinte comando. Apenas a federação de identidade da carga de trabalho tem acesso à chave privada.

    gcloud iam workload-identity-pools providers keys describe KEY_ID \
        --workload-identity-pool WORKLOAD_POOL_ID \
        --provider WORKLOAD_PROVIDER_ID \
        --location global \
        --format "value(keyData.key)" \
        > CERTIFICATE_PATH

    Substitua o seguinte:

    • KEY_ID: o nome da chave
    • WORKLOAD_POOL_ID: o ID da piscina
    • WORKLOAD_PROVIDER_ID: o ID do fornecedor do Workforce Identity Pool
    • CERTIFICATE_PATH: o caminho para escrever o certificado, por exemplo, saml-certificate.cer ou saml-certificate.pem

    Configure o seu IdP compatível com SAML 2.0 para emitir afirmações SAML encriptadas

    1. Mova o ficheiro de certificado para o servidor do AD FS.
    2. No servidor AD FS, clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell (administrador).
    3. No PowerShell, execute o seguinte comando para ativar a encriptação:
              Set-AdfsRelyingPartyTrust `
              -TargetName NAME `
              -SamlResponseSignature MessageAndAssertion `
              -EncryptionCertificate PATH `
              -EncryptClaims $True
          

      Substitua o seguinte:

      • NAME: o nome da sua confiança de parte fidedigna
      • PATH: o caminho do ficheiro de certificado

    Utilizadores do WS-Trust: esta funcionalidade só está disponível quando usa SAML.

    Depois de configurar o IdP para encriptar afirmações SAML, recomendamos que verifique se as afirmações que gera estão realmente encriptadas. Mesmo com a encriptação de afirmações SAML configurada, a federação de identidade da carga de trabalho ainda pode processar afirmações de texto simples.

    Elimine as chaves de encriptação da federação de identidade da carga de trabalho

    Para eliminar chaves de encriptação SAML, execute o seguinte comando:
      gcloud iam workload-identity-pools providers keys delete KEY_ID \
          --workload-identity-pool WORKLOAD_POOL_ID \
          --provider WORKLOAD_PROVIDER_ID \
          --location global

    Substitua o seguinte:

    • KEY_ID: o nome da chave
    • WORKLOAD_POOL_ID: o ID da piscina
    • WORKLOAD_PROVIDER_ID: o ID do fornecedor do Workforce Identity Pool

    Algoritmos de encriptação SAML suportados

    A federação de identidade da carga de trabalho suporta os seguintes algoritmos de transporte de chaves:

    A federação de identidade da carga de trabalho suporta os seguintes algoritmos de encriptação de blocos:

Opcional: ative a encriptação SAML

As afirmações SAML emitidas pelo AD FS são assinadas criptograficamente e trocadas através de um canal TLS encriptado. No entanto, as afirmações SAML não são encriptadas. Ao usar a encriptação SAML, pode configurar o AD FS para encriptar afirmações de modo que só possam ser desencriptadas e lidas pelo seu conjunto de identidades da carga de trabalho.

OIDC

Esta funcionalidade só está disponível quando usa SAML.

SAML ou WS-Trust

  1. Crie uma chave de encriptação para o seu fornecedor do Workload Identity Pool:

    gcloud iam workload-identity-pools providers keys create rsa2048 \
        --workload-identity-pool=POOL_ID \
        --provider=WORKLOAD_PROVIDER_ID \
        --location=global \
        --use=ENCRYPTION \
        --spec=RSA_2048
    

    Substitua o seguinte:

    • WORKLOAD_PROVIDER_ID: ID do fornecedor.
    • POOL_ID: o ID do conjunto.

    O par de chaves é armazenado e gerido pela federação de identidade da força de trabalho. Pode exportar a chave pública, mas apenas a Workload Identity Federation pode aceder à chave privada.

  2. Exporte um certificado que contenha a chave pública:

    gcloud iam workload-identity-pools providers keys describe rsa2048 \
        --workload-identity-pool=POOL_ID \
        --provider=WORKLOAD_PROVIDER_ID \
        --location=global \
        --format="value(keyData.key)" > workload-identity-federation.cer
    
  3. Mova o ficheiro de certificado para o servidor do AD FS.

  4. No servidor AD FS, clique com o botão direito do rato em Iniciar e, de seguida, clique em Windows PowerShell (administrador).

  5. No PowerShell, modifique a confiança da parte fidedigna para que use a encriptação:

    Set-AdfsRelyingPartyTrust `
      -TargetName NAME `
      -SamlResponseSignature MessageAndAssertion `
      -EncryptionCertificate PATH `
      -EncryptClaims $True
    

    Substitua o seguinte:

    • NAME: o nome da sua confiança de parte fidedigna
    • PATH: o caminho do ficheiro de certificado

Autentique uma carga de trabalho

Tem de realizar estes passos uma vez por carga de trabalho.

Permita que a sua carga de trabalho externa aceda aos recursos do Trusted Cloud

Para dar acesso aos recursos à sua carga de trabalho, recomendamos que conceda acesso direto aos recursos ao principal. Trusted Cloud Neste caso, o principal é o utilizador federado. Alguns Trusted Cloud produtos têm limitações da API Google Cloud. Se a sua carga de trabalho chamar um ponto final da API que tenha uma limitação, pode, em alternativa, usar a representação de contas de serviço. Neste caso, o principal é a Trusted Cloud conta de serviço, que funciona como a identidade. Concede acesso à conta de serviço no recurso.

Acesso direto aos recursos

Pode conceder acesso a uma identidade federada diretamente nos recursos através da Trusted Cloud consola ou da CLI gcloud.

Consola

Para usar a Trusted Cloud consola para conceder funções de IAM diretamente num recurso, tem de aceder à página do recurso e, em seguida, conceder a função. O exemplo seguinte mostra como aceder à página do Cloud Storage e conceder a função Storage Object Viewer (roles/storage.objectViewer) a uma identidade federada diretamente num contentor do Cloud Storage.

  1. Na Trusted Cloud consola, aceda à página Recipientes do Cloud Storage.

    Aceda aos contentores

  2. Na lista de contentores, clique no nome do contentor para o qual quer conceder a função.

  3. Selecione o separador Autorizações junto à parte superior da página.

  4. Clique no botão Conceder acesso.

    É apresentada a caixa de diálogo Adicionar responsáveis.

  5. No campo Novos responsáveis, introduza uma ou mais identidades que precisam de acesso ao seu contentor.

    Por assunto

    principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
    

    Substitua o seguinte:

    • PROJECT_NUMBER: o número do projeto
    • POOL_ID: o ID do conjunto de trabalhos
    • SUBJECT: o indivíduo assunto mapeado a partir do seu IdP, por exemplo, administrator@example.com

    Por grupo

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
    

    Substitua o seguinte:

    • PROJECT_NUMBER: o número do projeto
    • WORKLOAD_POOL_ID: o ID do conjunto de trabalhos
    • GROUP: o grupo mapeado a partir do seu IdP, por exemplo: administrator-group@example.com

    Por atributo

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
    

    Substitua o seguinte:

    • PROJECT_NUMBER: o número do projeto
    • WORKLOAD_POOL_ID: o ID do conjunto de trabalhos
    • ATTRIBUTE_NAME: um dos atributos mapeados a partir do seu IdP
    • ATTRIBUTE_VALUE: o valor do atributo
  6. Selecione uma ou mais funções no menu pendente Selecionar uma função. As funções que selecionar aparecem no painel com uma breve descrição das autorizações que concedem.

  7. Clique em Guardar.

gcloud

Para usar a CLI gcloud para conceder funções de IAM num recurso num projeto, faça o seguinte:

  1. Obtenha o número do projeto no qual o recurso está definido.

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. Conceder acesso ao recurso.

    Para usar a CLI gcloud para conceder a função Storage Object Viewer (roles/storage.objectViewer) a identidades externas que cumprem determinados critérios, execute o seguinte comando.

    Por assunto

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    Por grupo

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    Por atributo

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    Substitua o seguinte:

    • BUCKET_ID: o contentor no qual conceder acesso
    • PROJECT_NUMBER: o número do projeto. do projeto que contém o Workload Identity Pool
    • POOL_ID: o ID do Workload Identity Pool
    • SUBJECT: o valor esperado para o atributo que mapeou para google.subject
    • GROUP: o valor esperado para o atributo que mapeou para google.groups
    • ATTRIBUTE_NAME: o nome de um atributo personalizado no mapeamento de atributos
    • ATTRIBUTE_VALUE: o valor do atributo personalizado no mapeamento de atributos

    Pode conceder funções em qualquer Trusted Cloud recurso que suporte políticas de autorização do IAM.

Simulação de identidade de conta de serviço

  1. Para criar uma conta de serviço para a carga de trabalho externa, faça o seguinte:

    1. Enable the IAM, Security Token Service, and Service Account Credentials APIs.

      Enable the APIs

    2. Crie uma conta de serviço que represente a carga de trabalho. Recomendamos que use uma conta de serviço dedicada para cada carga de trabalho. A conta de serviço não tem de estar no mesmo projeto que o conjunto de identidades de carga de trabalho, mas tem de fazer referência ao projeto que contém a conta de serviço.

    3. Conceda acesso à conta de serviço aos recursos aos quais quer que as identidades externas acedam.

  2. Para permitir que a identidade federada use a identidade da conta de serviço, faça o seguinte:

Consola

Para usar a Trusted Cloud consola para conceder funções do IAM a uma identidade federada com uma conta de serviço, faça o seguinte:

Conta de serviço no mesmo projeto

  1. Para conceder acesso através da representação da conta de serviço para uma conta de serviço no mesmo projeto, faça o seguinte:

    1. Aceda à página Workload Identity Pools.

      Aceda aos Workload Identity Pools

    2. Selecione Conceder acesso.

    3. Na caixa de diálogo Conceder acesso à conta de serviço, selecione Conceder acesso através da simulação da conta de serviço.

    4. Na lista Contas de serviço, selecione a conta de serviço para as identidades externas se fazerem passar por ela e faça o seguinte:

    5. Para escolher que identidades no conjunto podem roubar a identidade da conta de serviço, execute uma das seguintes ações:

      • Para permitir que apenas identidades específicas do conjunto de identidades da carga de trabalho se façam passar pela conta de serviço, selecione Apenas identidades que correspondam ao filtro.

      • Na lista Nome do atributo, selecione o atributo pelo qual quer filtrar.

      • No campo Valor do atributo, introduza o valor esperado do atributo; por exemplo, se usar um mapeamento de atributos google.subject=assertion.sub, defina o nome do atributo como subject e o valor do atributo como o valor da reivindicação sub em tokens emitidos pelo seu fornecedor de identidade externo.

    6. Para guardar a configuração, clique em Guardar e, de seguida, em Ignorar.

Conta de serviço num projeto diferente

  1. Para conceder acesso através da representação de conta de serviço a uma conta de serviço num projeto diferente, faça o seguinte:

    1. Aceda à página Contas de serviço.

      Aceda a Contas de serviço

    2. Selecione a conta de serviço que quer roubar.

    3. Clique em Gerir acesso.

    4. Clique em Adicionar principal.

    5. No campo Novo principal, introduza um dos seguintes identificadores principais para as identidades no seu conjunto que vão roubar a identidade da conta de serviço.

      Por assunto

      principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
      

      Substitua o seguinte:

      • PROJECT_NUMBER: o número do projeto
      • POOL_ID: o ID do conjunto de trabalhos
      • SUBJECT: o indivíduo assunto mapeado a partir do seu IdP, por exemplo, administrator@example.com

      Por grupo

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
      

      Substitua o seguinte:

      • PROJECT_NUMBER: o número do projeto
      • WORKLOAD_POOL_ID: o ID do conjunto de trabalhos
      • GROUP: o grupo mapeado a partir do seu IdP, por exemplo: administrator-group@example.com

      Por atributo

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
      

      Substitua o seguinte:

      • PROJECT_NUMBER: o número do projeto
      • WORKLOAD_POOL_ID: o ID do conjunto de trabalhos
      • ATTRIBUTE_NAME: um dos atributos mapeados a partir do seu IdP
      • ATTRIBUTE_VALUE: o valor do atributo

      Por piscina

      principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
      

      Substitua o seguinte:

      • PROJECT_NUMBER: o número do projeto
      • WORKLOAD_POOL_ID: o ID do conjunto de trabalhos
    6. Em Selecionar uma função, selecione a função de utilizador da identidade de carga de trabalho (roles/iam.workloadIdentityUser).

    7. Para guardar a configuração, clique em Guardar.

gcloud

Para conceder a função Workload Identity User (roles/iam.workloadIdentityUser) a um conjunto de principais ou um principal federado, execute o seguinte comando. Para saber mais sobre os identificadores de principais da federação de identidades da carga de trabalho, consulte o artigo Tipos de principais.

Por assunto

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

Por grupo

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

Por atributo

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
    --role=roles/iam.workloadIdentityUser \
    --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

Substitua o seguinte:

  • SERVICE_ACCOUNT_EMAIL: o endereço de email da conta de serviço
  • PROJECT_NUMBER: o número do projeto. do projeto que contém o Workload Identity Pool
  • POOL_ID: o ID do Workload Identity Pool
  • SUBJECT: o valor esperado para o atributo que mapeou para google.subject
  • GROUP: o valor esperado para o atributo que mapeou para google.groups
  • ATTRIBUTE_NAME: o nome de um atributo personalizado no mapeamento de atributos
  • ATTRIBUTE_VALUE: o valor do atributo personalizado no mapeamento de atributos

Crie uma configuração de credenciais

Pode permitir que as bibliotecas cliente do Google Cloud e ferramentas como a CLI gcloud e o Terraform usem credenciais do Active Directory para fazer a autenticação no Trusted Cloud usando o Workload Authenticator para Windows.

O Workload Authenticator para Windows é uma ferramenta de código aberto que funciona como um plug-in para as bibliotecas e ferramentas de cliente da nuvem, como a CLI gcloud:

  1. Quando a ferramenta ou a biblioteca precisa de uma nova credencial, inicia o Workload Authenticator em segundo plano.
  2. O Workload Authenticator usa OIDC, SAML ou WS-Trust para obter um novo token ou uma declaração SAML do AD FS e devolve-o à ferramenta ou à biblioteca.
  3. Em seguida, a ferramenta ou a biblioteca usa as credenciais de curta duração para trocar o token ou a declaração SAML através da Workload Identity Federation. Trusted Cloud

Para usar o Workload Authenticator para Windows, tem de criar um ficheiro de configuração de credenciais. Este ficheiro define o seguinte:

  • Onde encontrar o executável do Workload Authenticator para Windows (wwauth.exe) e com que parâmetros o executar
  • Que Workload Identity Pool e fornecedor usar
  • Que conta de serviço usar como identidade

Para criar um ficheiro de configuração de credenciais, faça o seguinte no Windows Server que executa a sua carga de trabalho:

  1. Clique com o botão direito do rato no botão Iniciar (ou prima Win+X) e clique em Windows PowerShell.
  2. Transfira o Workload Authenticator para Windows e guarde-o numa localização acessível pela sua carga de trabalho:

    (New-Object Net.WebClient).DownloadFile(
      "https://github.com/GoogleCloudPlatform/iam-windows-authenticator/releases/latest/download/wwauth.exe",
      "${env:ProgramData}\wwauth.exe")
    

    Se criar um ficheiro de configuração de credenciais através do Workload Authenticator para Windows, o ficheiro contém o caminho para o respetivo executável. Se eliminar ou mover posteriormente o ficheiro executável, as cargas de trabalho não vão conseguir encontrar e usar o ficheiro executável.

  3. Inicie o wwauth.exe:

    & ${env:ProgramData}\wwauth.exe
    

    É aberta uma caixa de diálogo de configuração:

    Workload Authenticator

  4. Selecione o separador AD FS e introduza as seguintes definições:

    • URI do emissor do servidor AD FS: URI público do seu servidor ou farm AD FS.

      https://ADFS_DOMAIN/adfs/
      

      Substitua ADFS_DOMAIN pelo nome de domínio público do seu servidor ou farm de servidores do AD FS.

    As definições seguintes dependem do protocolo que quer usar:

    OIDC

    • Protocolo: AdfsOidc
    • ID da parte fidedigna: mantenha a predefinição.
    • ID de cliente Identificador de cliente (ID de cliente) da aplicação de servidor no AD FS.

    SAML

    • Protocolo: AdfsSamlPost
    • URL do serviço de consumo de declarações: https://sts.googleapis.com/v1/token.
    • Pedir assinaturas com certificado: desativado

    WS-Trust

    • Protocolo: AdfsWsTrust
  5. Selecione o separador Identidade da carga de trabalho e introduza as seguintes definições:

    • Número do projeto: número do projeto que contém o Workload Identity Pool
    • ID do conjunto: ID do Workload Identity Pool
    • ID do fornecedor: ID do fornecedor do Workload Identity Pool
    • Usar a identidade de uma conta de serviço: ativado, se usar a simulação de identidade de uma conta de serviço
    • Endereço de email: endereço de email da conta de serviço, se usar a representação da conta de serviço
  6. Selecione o separador AD FS e verifique se o campo ID da parte fidedigna contém agora o URL do fornecedor do Workload Identity Pool.

  7. Clique em Aplicar e escolha uma localização do ficheiro para guardar o ficheiro de configuração das credenciais.

    Ao contrário de uma chave de conta de serviço, um ficheiro de configuração de credenciais não contém segredos e não tem de ser mantido confidencial. Pode encontrar detalhes sobre o ficheiro de configuração de credenciais em https://google.aip.dev/auth/4117.

Já pode testar a sua configuração:

  1. Selecione um utilizador do Active Directory para testar. Pode ser o utilizador do Active Directory da carga de trabalho ou o utilizador com o qual tem sessão iniciada atualmente.

  2. Para testar a configuração com o utilizador atual, clique em Testar.

    Para testar com um utilizador diferente, selecione Testar > Testar configuração como utilizador e introduza as credenciais do utilizador.

    A ferramenta tenta agora autenticar-se em Trusted Cloud através dos seguintes passos:

    1. Adquira um token OIDC ou uma afirmação SAML do AD FS.
    2. Obtenha um token do serviço de tokens de segurança da Google.
    3. Usar a identidade da conta de serviço, se usar a identidade de contas de serviço.

    Se a autenticação for bem-sucedida, é apresentada a mensagem Teste concluído com êxito:

    Resultado do teste

Use a configuração de credenciais para aceder a Trusted Cloud

Para permitir que as ferramentas e as bibliotecas de cliente usem a configuração das suas credenciais, faça o seguinte no Windows Server que executa a sua carga de trabalho:

  1. Clique com o botão direito do rato no botão Iniciar e clique em Executar.
  2. Introduza sysdm.cpl e clique em OK.
  3. No separador Avançadas, clique em Variáveis de ambiente.
  4. Na secção Variáveis do sistema, adicione duas novas variáveis:

    Nome Valor
    GOOGLE_APPLICATION_CREDENTIALS Caminho para o ficheiro de configuração de credenciais
    GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES 1
  5. Clique em OK.

  6. Use uma biblioteca ou uma ferramenta de cliente que suporte a federação de identidades da carga de trabalho e que possa encontrar credenciais automaticamente:

    C++

    As Trusted Cloud bibliotecas cliente para C++ suportam a federação de identidades da carga de trabalho desde a versão v2.6.0. Para usar a Workload Identity Federation, tem de criar as bibliotecas de cliente com a versão 1.36.0 ou posterior do gRPC.

    Ir

    As bibliotecas cliente para Go suportam a federação de identidades da carga de trabalho se usarem a versão v0.0.0-20210218202405-ba52d332ba99 ou posterior do módulo golang.org/x/oauth2.

    Para verificar que versão deste módulo a sua biblioteca de cliente usa, execute os seguintes comandos:

    cd $GOPATH/src/cloud.google.com/go
    go list -m golang.org/x/oauth2
    

    Java

    As bibliotecas cliente para Java suportam a Workload Identity Federation se usarem a versão 0.24.0 ou posterior do artefacto com.google.auth:google-auth-library-oauth2-http.

    Para verificar que versão deste artefacto a sua biblioteca de cliente usa, execute o seguinte comando Maven no diretório da aplicação:

    mvn dependency:list -DincludeArtifactIds=google-auth-library-oauth2-http
    

    Node.js

    As bibliotecas de cliente para Node.js suportam a Federação de identidades da carga de trabalho se usarem a versão 7.0.2 ou posterior do pacote google-auth-library.

    Para verificar que versão deste pacote a sua biblioteca de cliente usa, execute o seguinte comando no diretório da aplicação:

    npm list google-auth-library
    

    Quando cria um objeto GoogleAuth, pode especificar um ID do projeto ou permitir que a GoogleAuth encontre o ID do projeto automaticamente. Para encontrar o ID do projeto automaticamente, a conta de serviço no ficheiro de configuração tem de ter a função Navegador (roles/browser) ou uma função com autorizações equivalentes no seu projeto. Para obter detalhes, consulte o README para o pacote google-auth-library.

    Python

    As bibliotecas cliente para Python suportam a Federação de identidades de carga de trabalho se usarem a versão 1.27.0 ou posterior do pacote google-auth.

    Para verificar que versão deste pacote a sua biblioteca de cliente usa, execute o seguinte comando no ambiente onde o pacote está instalado:

    pip show google-auth
    

    Para especificar um ID do projeto para o cliente de autenticação, pode definir a variável de ambiente GOOGLE_CLOUD_PROJECT ou permitir que o cliente encontre o ID do projeto automaticamente. Para encontrar o ID do projeto automaticamente, a conta de serviço no ficheiro de configuração tem de ter a função de navegador (roles/browser) ou uma função com autorizações equivalentes no seu projeto. Para obter detalhes, consulte o manual do utilizador do pacote google-auth.

    gcloud

    Para autenticar com a Workload Identity Federation, use o comando gcloud auth login:

    gcloud auth login --cred-file=FILEPATH.json
    

    Substitua FILEPATH pelo caminho para o ficheiro de configuração das credenciais.

    O suporte para a Workload Identity Federation na CLI gcloud está disponível na versão 363.0.0 e versões posteriores da CLI gcloud.

    Terraform

    O Trusted Cloud fornecedor suporta a Workload Identity Federation se usar a versão 3.61.0 ou posterior:

    terraform {
      required_providers {
        google = {
          source  = "hashicorp/google"
          version = "~> 3.61.0"
        }
      }
    }
    

    bq

    Para autenticar através da Workload Identity Federation, use o comando gcloud auth login, da seguinte forma:

    gcloud auth login --cred-file=FILEPATH.json
    

    Substitua FILEPATH pelo caminho para o ficheiro de configuração das credenciais.

    O suporte para a Workload Identity Federation no bq está disponível na versão 390.0.0 e versões posteriores da CLI gcloud.

O que se segue?