Configurar a federação de identidade de colaboradores com a Okta e fazer login de usuários

Neste guia, mostramos como configurar a federação de identidade da força de trabalho usando o Okta como um provedor de identidade (IdP), gerenciar o acesso e fazer login de usuários para acessar os serviços do Google Cloud que são compatíveis com a federação de identidade da força de trabalho.

Antes de começar

  1. Você precisa ter uma organização do Google Cloud configurada.

  2. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

  3. Para fazer login, seu IdP precisa fornecer informações de autenticação assinadas. Os IdPs OIDC precisam fornecer um JWT, e as respostas do IdP SAML precisam ser assinadas.

  4. Para receber informações importantes sobre mudanças na sua organização ou nos produtos do Google Cloud, forneça os Contatos essenciais. Para mais detalhes, consulte as informações gerais da federação de identidade de colaboradores.

Funções exigidas

Para receber as permissões necessárias para configurar a federação de identidade de colaboradores, peça ao administrador para conceder a você o papel do IAM Administrador de pool de colaboradores do IAM (roles/iam.workforcePoolAdmin) na organização. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Como alternativa, o papel básico de Proprietário do IAM (roles/owner) também inclui permissões para configurar a federação de identidade da força de trabalho. Não conceda papéis básicos em um ambiente de produção, recomendamos que você faça isso em um ambiente de desenvolvimento ou de teste.

Criar um pool de identidades da força de trabalho

Console

Para criar o pool de identidades da força de trabalho, faça o seguinte:

  1. No console do Google Cloud, acesse a página Pools de identidade da força de trabalho:

    Acessar pools de identidade de colaboradores

  2. Clique em Criar pool e faça o seguinte:

    1. No campo Nome, digite o nome de exibição do pool. O ID do pool é derivado automaticamente do nome à medida que você digita e é exibido no campo Nome. Para atualizar o ID do pool, clique em Editar ao lado dele.

    2. Opcional: em Descrição, insira uma descrição do pool.

    3. A duração da sessão é definida por padrão. Para inserir uma duração personalizada da sessão, clique em Editar. A duração da sessão, que determina por quanto tempo os tokens de acesso do Google Cloud, as sessões de login do console (federado) e o login da CLI gcloud deste pool de forças de trabalho são válidas. A duração precisa ser maior que 15 minutos (900s) e menor que 12 horas (43200s). Se a duração da sessão não for definida, o padrão será de uma hora (3.600 segundos).

    4. Para criar o pool no estado ativado, verifique se a opção Pool ativado está ativada.

    5. Para criar o pool de identidades da força de trabalho, clique em Próxima.

gcloud

Para criar o pool de identidade da força de trabalho, execute o seguinte comando:

gcloud iam workforce-pools create WORKFORCE_POOL_ID \
    --organization=ORGANIZATION_ID \
    --display-name="DISPLAY_NAME" \
    --description="DESCRIPTION" \
    --session-duration=SESSION_DURATION \
    --location=global

Substitua:

  • WORKFORCE_POOL_ID: um ID que você quer representar no seu pool de forças de trabalho do Google Cloud. Para informações sobre como formatar o ID, consulte a seção Parâmetros de consulta na documentação da API.
  • ORGANIZATION_ID: o ID numérico da organização do Google Cloud.
  • DISPLAY_NAME: opcional. Um nome de exibição para o pool de identidade de colaboradores.
  • DESCRIPTION: opcional. Uma descrição do pool de identidade de colaboradores.
  • SESSION_DURATION: opcional. A duração da sessão, que determina por quanto tempo os tokens de acesso do Google Cloud, as sessões de login do, console (federado) e o login da gcloud CLI deste pool de força de trabalho são válidos. A duração precisa ser maior que 15 minutos (900s) e menor que 12 horas (43200s). Se a duração da sessão não for definida, o padrão será de uma hora (3.600 segundos).

Criar uma integração do app Okta

Nesta seção, mostramos as etapas para criar uma integração de aplicativo do Okta usando o Admin Console do Okta. Para ver mais detalhes, consulte Criar integrações de apps personalizadas.

Os pools de forças de trabalho são compatíveis com federação usando protocolos OIDC e SAML.

Consulte o guia de integração do OIDC e do SAML do Okta para mais detalhes. A configuração básica está descrita nesta seção.

OIDC

Para criar uma integração do app Okta que use o protocolo OIDC, siga as etapas abaixo:

  1. Faça login no Admin Console do Okta.
  2. Acesse Aplicativos > Aplicativos.
  3. Para começar a configurar a integração do app, faça o seguinte:

    1. Clique em Criar Integração de App.
    2. Em Método de login, selecione OIDC - OpenID Connect.
    3. Em Tipo de aplicativo, selecione um tipo. Por exemplo, Aplicativo da Web.
    4. Para criar o app, clique em Próxima.
    5. Em Nome da integração do app, insira um nome.
    6. Na seção Tipo de concessão, marque a caixa de seleção Implícito (híbrido).
    7. Na seção URIs de redirecionamento de login, no campo de texto, insira um URL de redirecionamento. Seus usuários serão redirecionados para esse URL após o login. Se você estiver configurando o acesso ao console (federado), use o seguinte formato de URL:

      https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
      

      Substitua:

      • WORKFORCE_POOL_ID: o ID do pool de força de trabalho criado anteriormente neste guia.
      • WORKFORCE_PROVIDER_ID: um ID de provedor de identidade de força de trabalho de sua escolha; por exemplo: okta-oidc-provider. Para informações sobre como formatar o ID, consulte a seção Parâmetros de consulta na documentação da API.
    8. Marque a caixa de seleção Ignorar atribuição de grupo por enquanto.

    9. Para salvar a integração do app, clique em Salvar.

  4. Atribuir uma integração de app a um usuário.

  5. Opcional: para adicionar atributos personalizados a um perfil de usuário do Okta, faça o seguinte:

    1. Em Tipo de dado, selecione string.
    2. Em Nome de exibição, insira Department.
    3. Em Nome da variável, insira department.
    4. Para salvar o mapeamento, clique em Salvar.

    Para saber mais sobre como adicionar atributos personalizados, consulte Adicionar atributos personalizados a um perfil de usuário do Okta.

  6. Opcional: para criar mapeamentos para os atributos enviados no token OIDC, no Diretório, clique em Editor de perfil e faça o seguinte:

    1. Veja neste guia o aplicativo OIDC que você criou anteriormente.
    2. Clique em Mapeamentos.
    3. Selecione a guia Okta User to App.
    4. Na guia Perfil de usuário do Okta, em uma caixa de combinação disponível, digite department. O Okta é preenchido automaticamente em user.department.
    5. Para salvar os mapeamentos, clique em Salvar mapeamentos. Para mais detalhes, consulte Adicionar mapeamento de atributos.

    Para saber mais sobre mapeamentos, consulte Mapear atributos do Okta para atributos de apps no Editor de perfil.

  7. Opcional: para configurar uma reivindicação de grupos, faça o seguinte:

    1. Se você usa um servidor de autorização da organização, faça o seguinte:
      1. Acesse Aplicativos > Aplicativos
      2. Selecione o aplicativo cliente do OpenID Connect que você criou anteriormente nesta seção.
      3. Acesse a guia Sign On.
      4. Na seção Token de ID do OpenID Connect, clique em Editar.
      5. Na seção Tipo de reivindicação de grupos, selecione uma das seguintes opções:
        • Selecione Expressão.
        • Selecione Corresponde ao regex e insira .*.
      6. Para salvar a reivindicação do grupo, clique em Salvar.
      7. Ao criar o provedor de pool de identidade da força de trabalho posteriormente neste guia, adicione groups como um escopo extra para solicitar a reivindicação de grupos do Okta para logon único na Web. Esta etapa só será necessária se você usar o fluxo de login baseado no navegador (federado) ou no console.
    2. Se você usa um servidor de autorização personalizado, faça o seguinte:
      1. No menu Segurança do Admin Console, selecione API.
      2. Selecione o servidor de autorização personalizado que você quer configurar.
      3. Acesse a guia Reivindicações e clique em Adicionar reivindicação.
      4. Insira um nome para a reivindicação. Neste exemplo, nomeie-o como groups.
      5. Na sua declaração, em Include in token type, selecione ID Token e Always.
      6. Selecione Grupos como o Tipo de valor.
      7. No menu suspenso "Filtro", selecione Corresponde ao regex e insira a seguinte expressão como o valor: .*
      8. Clique em Criar.

Para mais detalhes sobre reivindicações de grupos, consulte Adicionar uma reivindicação de grupos.

SAML

Para criar uma integração do app Okta que use o protocolo SAML, siga estas etapas:

  1. Faça login no Admin Console do Okta.
  2. Acesse Aplicativos > Aplicativos.
  3. Clique em Criar Integração de App.
  4. Em método de login, selecione SAML 2.0 e clique em Próxima.
  5. Insira um nome para seu app e clique em Próximo para acessar as opções de Configurar SAML.
  6. Em URL de Logon único, digite um URL de redirecionamento. Esse é o URL para o qual os usuários são redirecionados após fazer login. Se você estiver configurando o acesso ao console, use o seguinte formato de URL.

    https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

  7. Insira o URI de público-alvo (SP Entity ID). O ID é formatado desta maneira:

    https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID

    Substitua:

    • WORKFORCE_POOL_ID: o ID do pool de força de trabalho criado anteriormente neste guia.
    • WORKFORCE_PROVIDER_ID: um ID de provedor de identidade de força de trabalho de sua escolha. Por exemplo: okta-saml-provider

    Para informações sobre como formatar o ID, consulte a seção Parâmetros de consulta na documentação da API.

  8. Opcional: use as declarações de atributo para especificar quaisquer atributos personalizados que você queira enviar na declaração SAML. Após a configuração, esses atributos podem ser usados no Google Cloud para criar políticas de gerenciamento de acesso ou em attribute_condition. Por exemplo, neste guia, o departamento será mapeado da seguinte maneira:

    Nome Valor
    department user.department

    Opcional: para adicionar a reivindicação de grupos, usada mais tarde neste guia, consulte Como transmitir a associação ao grupo de um usuário em uma declaração SAML.

  9. Termine de criar a integração do app Okta.

Criar um provedor de pool de identidade de força de trabalho

Nesta seção, descrevemos como criar um provedor de pool de identidade da força de trabalho para permitir que os usuários do IdP acessem o Google Cloud. É possível configurar o provedor para usar o protocolo OIDC ou SAML.

Criar um provedor de pool de força de trabalho OIDC

Para criar um provedor de pool de identidade da força de trabalho para a integração do app Okta, usando o protocolo OIDC, faça o seguinte:

  1. Para conseguir o ID do cliente para a integração do app Okta, faça o seguinte:

    1. Acesse a integração do app Okta.
    2. Clique na guia Geral.
    3. Copie o conteúdo do campo ID do cliente.
  2. Para criar um provedor de pool de identidades de colaboradores do OIDC para login baseado na Web, siga estas etapas:

    Console

    Fluxo de códigos

    1. No Okta, faça o seguinte:

      1. Em Autenticação do cliente, selecione Chave secreta do cliente.

      2. Na tabela Chaves secretas dos clientes, localize a chave secreta e clique em Copiar.

    2. No console do Google Cloud, para criar um provedor OIDC que usa o fluxo do código de autorização, faça o seguinte:

      1. No console do Google Cloud, acesse a página Pools de identidade da força de trabalho:

        Acessar pools de identidade de colaboradores

      2. Na tabela Pools de identidade da força de trabalho, selecione o pool em que você quer criar o provedor.

      3. Na tabela Provedores, clique em Adicionar provedor.

      4. Em Selecionar um protocolo, selecione Open ID Connect (OIDC).

      5. Em Criar um provedor de pool, faça o seguinte:

        1. Em Nome, digite um nome para o provedor.
        2. Em Emissor (URL), insira o URI do emissor. O URI do emissor do OIDC precisa estar em um formato de URI válido e começar com https. por exemplo, https://example.com/oidc.
        3. Digite o ID do cliente, o ID do cliente OIDC registrado no seu IdP OIDC. o ID precisa corresponder à declaração aud do JWT emitido pelo IdP.
        4. Para criar um provedor ativado, verifique se Provedor ativado está ativado.
        5. Clique em Continuar.
      6. Em Tipo de resposta, faça o seguinte. O tipo de resposta é usado apenas para um fluxo de Logon único baseado na Web.

        1. Em Tipo de resposta, selecione Código.
        2. Em Chave secreta do cliente, digite a chave secreta do cliente no IdP.
        3. Em Comportamento das reivindicações de declaração, selecione uma das seguintes opções:

          • Token de ID e informações do usuário
          • Somente o token de ID
        4. Clique em Continuar.

      7. Em Configurar provedor, é possível configurar um mapeamento e uma condição de atributo. Para criar um mapeamento de atributo, faça o seguinte. É possível fornecer o nome do campo do IdP ou uma expressão formatada em CEL que retorne uma string.

        1. Obrigatório: no OIDC 1, digite o assunto do IdP. por exemplo, assertion.sub.

        2. Opcional: para adicionar outros mapeamentos de atributos, faça o seguinte:

          1. Clique em Adicionar mapeamento.
          2. No Google n, em que n é um número, insira uma das chaves compatíveis com o Google Cloud. de dois minutos.
          3. No campo OIDC n correspondente, insira o nome do campo específico do IdP a ser mapeado, no formato CEL.
        3. Para criar uma condição de atributo, faça o seguinte:

          1. Clique em Adicionar condição.
          2. Em Condições de atributo, insira uma condição no formato CEL. Por exemplo, assertion.subject.endsWith('@example.com') quando o valor de subject mapeado anteriormente contiver um que termina com @example.com.
      8. Para criar o provedor, clique em Enviar.

    Fluxo implícito

    1. No console do Google Cloud, faça o seguinte:

      1. No console do Google Cloud, acesse a página Pools de identidade da força de trabalho:

        Acessar pools de identidade de colaboradores

      2. Na tabela Pools de identidade da força de trabalho, selecione o pool em que você quer criar o provedor.

      3. Na tabela Provedores, clique em Adicionar provedor.

      4. Em Selecionar um protocolo, selecione Open ID Connect (OIDC).

      5. Em Criar um provedor de pool, faça o seguinte:

        1. Em Nome, digite um nome para o provedor.
        2. Em Emissor (URL), insira o URI do emissor. O URI do emissor do OIDC precisa estar em um formato de URI válido e começar com https. por exemplo, https://example.com/oidc.
        3. Digite o ID do cliente, o ID do cliente OIDC registrado no seu IdP OIDC. o ID precisa corresponder à declaração aud do JWT emitido pelo IdP.
        4. Para criar um provedor ativado, verifique se Provedor ativado está ativado.
        5. Clique em Continuar.
      6. Em Tipo de resposta, faça o seguinte. O tipo de resposta é usado apenas para um fluxo de Logon único baseado na Web.

        1. Em Tipo de resposta, selecione Token de ID.
        2. Clique em Continuar.
      7. Em Configurar provedor, é possível configurar um mapeamento e uma condição de atributo. Para criar um mapeamento de atributo, faça o seguinte. É possível fornecer o nome do campo do IdP ou uma expressão formatada em CEL que retorne uma string.

        1. Obrigatório: no OIDC 1, digite o assunto do IdP. por exemplo, assertion.sub.

        2. Opcional: para adicionar outros mapeamentos de atributos, faça o seguinte:

          1. Clique em Adicionar mapeamento.
          2. No Google n, em que n é um número, insira uma das chaves compatíveis com o Google Cloud. de dois minutos.
          3. No campo OIDC n correspondente, insira o nome do campo específico do IdP a ser mapeado, no formato CEL.
        3. Para criar uma condição de atributo, faça o seguinte:

          1. Clique em Adicionar condição.
          2. Em Condições de atributo, insira uma condição no formato CEL. Por exemplo, assertion.subject.endsWith('@example.com') quando o valor de subject mapeado anteriormente contiver um que termina com @example.com.

      8. Para criar o provedor, clique em Enviar.

    gcloud

    Fluxo de códigos

    No Okta, faça o seguinte:

    1. Em Autenticação do cliente, selecione Chave secreta do cliente.

    2. Na tabela Chaves secretas dos clientes, localize a chave secreta e clique em Copiar.

    No Google Cloud, para criar um provedor OIDC que usa o fluxo do código de autorização para login na Web, execute o seguinte comando:

    gcloud iam workforce-pools providers create-oidc PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --display-name="DISPLAY_NAME" \
        --description="DESCRIPTION" \
        --issuer-uri="ISSUER_URI" \
        --client-id="OIDC_CLIENT_ID" \
    --client-secret-value="OIDC_CLIENT_SECRET" \ --web-sso-response-type="code" \ --web-sso-assertion-claims-behavior="merge-user-info-over-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --location=global

    Substitua:

    • PROVIDER_ID: um ID de provedor exclusivo. O prefixo gcp- é reservado e não pode ser usado em um ID de pool ou de provedor.
    • WORKFORCE_POOL_ID: o ID do pool de identidades de colaboradores para conectar seu IdP.
    • DISPLAY_NAME é um nome de exibição fácil de usar para o provedor. Por exemplo, idp-eu-employees.
    • DESCRIPTION: uma descrição opcional do provedor de colaboradores. Por exemplo, IdP for Partner Example Organization employees
    • ISSUER_URI: o URI do emissor do OIDC, em um formato de URI válido, que começa com https, por exemplo, https://example.com/oidc. Observação: por motivos de segurança, ISSUER_URI precisa usar o esquema HTTPS.
    • OIDC_CLIENT_ID: o ID do cliente do OIDC registrado no IdP do OIDC; o ID precisa corresponder à declaração aud do JWT emitido pelo IdP.
    • OIDC_CLIENT_SECRET: a chave secreta do cliente do OIDC
    • WEB_SSO_ADDITIONAL_SCOPES: escopos adicionais opcionais a serem enviados ao IdP do OIDC para o Console (federado) ou o login com base no navegador da gcloud CLI; por exemplo, groups para solicitar a reivindicação de grupos do Okta se estiver usando o servidor de autorização da organização
    • ATTRIBUTE_MAPPING: um mapeamento de atributo. Confira a seguir um exemplo de mapeamento de atributos:
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      Neste exemplo, os atributos do IdP subject, group1, e costcenter na declaração OIDC são mapeados para os atributos google.subject, google.groups e attribute.costcenter, respectivamente. de dois minutos.
    • ATTRIBUTE_CONDITION: uma condição de atributo. Por exemplo, assertion.subject.endsWith('@example.com') quando o valor de subject mapeado anteriormente contém um endereço de e-mail que termina com @example.com.
    • JWK_JSON_PATH: um caminho opcional para JWKs do OIDC de upload local. Se esse parâmetro não for fornecido, o Google Cloud usará o caminho /.well-known/openid-configuration do IdP para gerar as JWKs que contêm as chaves públicas. Para mais informações sobre JWKs OIDC enviados localmente, consulte Gerenciar JWKs OIDC.
    Na resposta ao comando, POOL_RESOURCE_NAME é o nome do pool. Por exemplo, locations/global/workforcePools/enterprise-example-organization-employees.

    Fluxo implícito

    Para criar um provedor do OIDC que usa o fluxo implícito para login na Web, execute o seguinte comando:

    gcloud iam workforce-pools providers create-oidc PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --display-name="DISPLAY_NAME" \
        --description="DESCRIPTION" \
        --issuer-uri="ISSUER_URI" \
        --client-id="OIDC_CLIENT_ID" \
        --web-sso-response-type="id-token" \
        --web-sso-assertion-claims-behavior="only-id-token-claims" \
        --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \
        --attribute-mapping="ATTRIBUTE_MAPPING" \
        --attribute-condition="ATTRIBUTE_CONDITION" \
        --jwk-json-path="JWK_JSON_PATH" \
        --location=global
    

    Substitua:

    • PROVIDER_ID: um ID de provedor exclusivo. O prefixo gcp- é reservado e não pode ser usado em um ID de pool ou de provedor.
    • WORKFORCE_POOL_ID: o ID do pool de identidades de colaboradores para conectar seu IdP.
    • DISPLAY_NAME é um nome de exibição fácil de usar para o provedor. Por exemplo, idp-eu-employees.
    • DESCRIPTION: uma descrição opcional do provedor de colaboradores. Por exemplo, IdP for Partner Example Organization employees
    • ISSUER_URI: o URI do emissor do OIDC, em um formato de URI válido, que começa com https, por exemplo, https://example.com/oidc. Observação: por motivos de segurança, ISSUER_URI precisa usar o esquema HTTPS.
    • OIDC_CLIENT_ID: o ID do cliente do OIDC registrado no IdP do OIDC; o ID precisa corresponder à declaração aud do JWT emitido pelo IdP.
    • WEB_SSO_ADDITIONAL_SCOPES: escopos adicionais opcionais a serem enviados ao IdP do OIDC para o Console (federado) ou o login com base no navegador da gcloud CLI; por exemplo, groups para solicitar a reivindicação de grupos do Okta se estiver usando o servidor de autorização da organização
    • ATTRIBUTE_MAPPING: um mapeamento de atributo. Confira a seguir um exemplo de mapeamento de atributos:
      google.subject=assertion.sub,
      google.groups=assertion.group1,
      attribute.costcenter=assertion.costcenter
      Neste exemplo, os atributos do IdP subject, group1, e costcenter na declaração OIDC são mapeados para os atributos google.subject, google.groups e attribute.costcenter, respectivamente. de dois minutos.
    • ATTRIBUTE_CONDITION: uma condição de atributo. Por exemplo, assertion.subject.endsWith('@example.com') quando o valor de subject mapeado anteriormente contém um endereço de e-mail que termina com @example.com.
    • JWK_JSON_PATH: um caminho opcional para JWKs do OIDC de upload local. Se esse parâmetro não for fornecido, o Google Cloud usará o caminho /.well-known/openid-configuration do IdP para gerar as JWKs que contêm as chaves públicas. Para mais informações sobre JWKs OIDC enviados localmente, consulte Gerenciar JWKs OIDC.
    Na resposta ao comando, POOL_RESOURCE_NAME é o nome do pool. Por exemplo, locations/global/workforcePools/enterprise-example-organization-employees.

Criar um provedor de pool de colaboradores SAML

  1. No IdP SAML, registre um novo aplicativo para a federação de identidade da força de trabalho do Google Cloud.

  2. Defina o público-alvo das declarações SAML. Geralmente, é o campo SP Entity ID na configuração do IdP. Defina-o para o seguinte URL:

    https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID
    
  3. Se você planeja configurar o acesso do usuário ao console, no IdP SAML, defina o URL de redirecionamento ou o campo do URL do serviço de declaração de consumidor (ACS) para o seguinte URL:

    https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    Consulte Configurar o acesso do usuário ao console para mais detalhes sobre como configurar o login do console.

  4. No Google Cloud, crie um provedor de pool de identidade da força de trabalho SAML usando o documento de metadados SAML do IdP. É possível fazer o download do documento XML de metadados SAML no seu IdP. O documento precisa incluir pelo menos o seguinte:

    • Um código de entidade SAML para seu IdP.
    • O URL de Logon único do seu IdP.
    • Pelo menos uma chave pública de assinatura. Consulte Requisitos de chave mais adiante neste guia para saber mais sobre chaves de assinatura.

Console

Para configurar o provedor SAML usando o console do Google Cloud, faça o seguinte:

  1. No console do Google Cloud, acesse a página Pools de identidade da força de trabalho:

    Acessar pools de identidade de colaboradores

  2. Na tabela Pools de identidade da força de trabalho, selecione o pool em que você quer criar o provedor.

  3. Na tabela Provedores, clique em Adicionar provedor.

  4. Em Selecionar um protocolo, escolha SAML.

  5. Em Criar um provedor de pool, faça o seguinte:

    1. Em Nome, digite um nome para o provedor.

    2. Opcional: em Descrição, digite uma descrição para o provedor.

    3. Em Arquivo de metadados do IdP (XML), selecione o arquivo XML de metadados gerado anteriormente neste guia.

    4. Verifique se o Provedor ativado está ativado.

    5. Clique em Continuar.

  6. Em Configurar provedor, faça o seguinte:

    1. Em Mapeamento de atributos, insira uma expressão CEL para google.subject.

    2. Opcional: para inserir outros mapeamentos, clique em Adicionar mapeamento e insira outros, por exemplo:

      google.subject=assertion.subject,
      google.groups=assertion.attributes['https://example.com/aliases'],
      attribute.costcenter=assertion.attributes.costcenter[0]
      Este exemplo mapeia os atributos do IdP assertion.subject, assertion.attributes['https://example.com/aliases'] e assertion.attributes.costcenter[0] os atributos do Google Cloud google.subject, google.groups, e google.costcenter, respectivamente.

    3. Opcional: para adicionar uma condição de atributo, clique em Adicionar condição e insira uma expressão CEL que represente uma condição de atributo. Por exemplo, para limitar o atributo ipaddr a um determinado intervalo de IP, defina a condição assertion.attributes.ipaddr.startsWith('98.11.12.'). Este exemplo de condição garante que apenas os usuários com um endereço IP que comece com 98.11.12. possam fazer login usando esse provedor de força de trabalho.

    4. Clique em Continuar.

  7. Para criar o provedor, clique em Enviar.

gcloud

Para criar um provedor de pool de identidade da força de trabalho para a integração do app Okta, usando o protocolo SAML, faça o seguinte:

  1. Para salvar os metadados de SAML do app Okta, faça o seguinte:

    1. Acesse o aplicativo Okta.
    2. Clique na guia Acessar.
    3. Na seção Certificados de Assinatura do SAML, clique em Ações > Ver metadados do IdP para o certificado ativo.
    4. Na nova página exibida, copie os metadados XML.
    5. Salve os metadados como um arquivo XML local.
  2. Para criar um provedor de força de trabalho para seu app Okta, execute o seguinte comando:

    gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
        --workforce-pool="WORKFORCE_POOL_ID" \
        --attribute-mapping="ATTRIBUTE_MAPPING" \
        --attribute-condition="ATTRIBUTE_CONDITION" \
        --idp-metadata-path="XML_METADATA_PATH" \
        --location="global"
    

    Substitua:

    • WORKFORCE_PROVIDER_ID: o ID do provedor da força de trabalho que você criou anteriormente neste guia
    • WORKFORCE_POOL_ID: o ID do pool de forças de trabalho que você criou anteriormente neste guia.
    • ATTRIBUTE_MAPPING: um mapeamento de atributo. Por exemplo:

      google.subject=assertion.subject,
      google.groups=assertion.attributes['https://example.com/aliases'],
      attribute.costcenter=assertion.attributes.costcenter[0]
      Este exemplo mapeia os atributos do IdP assertion.subject, assertion.attributes['https://example.com/aliases'] e assertion.attributes.costcenter[0] os atributos do Google Cloud google.subject, google.groups, e google.costcenter, respectivamente.

    • ATTRIBUTE_CONDITION: uma condição de atributo opcional. Por exemplo, para limitar o atributo ipaddr a um determinado intervalo de IP, defina a condição assertion.attributes.ipaddr.startsWith('98.11.12.'). Este exemplo de condição garante que apenas os usuários com um endereço IP que comece com 98.11.12. possam fazer login usando esse provedor de força de trabalho.

    • XML_METADATA_PATH: o caminho para o arquivo de metadados formatado em XML para o App Okta que você criou anteriormente neste guia.

    O prefixo gcp- é reservado e não pode ser usado em um ID de pool ou de provedor.

    Opcional: aceitar declarações SAML criptografadas do seu IdP

    Para permitir que o IdP do SAML 2.0 produza declarações SAML criptografadas que podem ser aceitas pela federação de identidade de colaboradores, faça isto:

    • Na federação de identidade de colaboradores, faça isto:
      • Crie um par de chaves assimétricas para seu provedor de pool de identidade de colaboradores.
      • Faça o download de um arquivo de certificado que contém a chave pública.
      • Configure o IdP do SAML para que use a chave pública para criptografar as declarações SAML emitidas.
    • No IdP, faça isto:
      • Ative a criptografia de declaração, também conhecida como criptografia de token.
      • Faça upload da chave pública que você criou na federação de identidade de colaboradores.
      • Confirme se o IdP produz declarações SAML criptografadas.
    Observação: mesmo com as chaves do provedor de criptografia SAML configuradas, a federação de identidade de colaboradores ainda pode processar uma declaração de texto simples.

    Criar chaves de criptografia de declaração SAML da federação de identidade de colaboradores

    Nesta seção, mostramos como criar um par de chaves assimétricas que permite que a federação de identidade de colaboradores aceite declarações SAML criptografadas.

    O Google Cloud usa a chave privada para descriptografar as declarações SAML emitidas pelo IdP. Para criar um par de chaves assimétricas para uso com criptografia SAML, execute o seguinte comando. Para saber mais, consulte Algoritmos de criptografia SAML compatíveis.

    gcloud iam workforce-pools providers keys create KEY_ID \
        --workforce-pool WORKFORCE_POOL_ID \
        --provider PROVIDER_ID \
        --location global \
        --use encryption \
        --spec KEY_SPECIFICATION

    Substitua:

    • KEY_ID: o nome da chave que você escolher
    • WORKFORCE_POOL_ID: o ID do pool
    • PROVIDER_ID: o ID do provedor
    • KEY_SPECIFICATION: a especificação da chave, que pode ser uma destas: rsa-2048, rsa-3072 e rsa-4096.

    Depois que o par de chaves for criado, execute o comando a seguir para fazer o download da chave pública em um arquivo de certificado. Somente a federação de identidade de colaboradores tem acesso à chave privada.

    gcloud iam workforce-pools providers keys describe KEY_ID \
        --workforce-pool WORKFORCE_POOL_ID \
        --provider PROVIDER_ID \
        --location global \
        --format "value(keyData.key)" \
        > CERTIFICATE_PATH

    Substitua:

    • KEY_ID: o nome da chave
    • WORKFORCE_POOL_ID: o ID do pool
    • PROVIDER_ID: o ID do provedor
    • CERTIFICATE_PATH: o caminho para gravar o certificado em, por exemplo, saml-certificate.cer ou saml-certificate.pem

    Configurar o IdP compatível com SAML 2.0 para emitir declarações SAML criptografadas

    Para configurar o Okta para criptografar declarações SAML, faça o seguinte:

    • Acesse o painel do Okta e faça login.
    • Acesse Aplicativos>Aplicativos.
    • Clique no seu aplicativo.
    • Na guia Geral, na seção Configurações de SAML, clique em Editar.
    • Clique em Avançar para visualizar Configurações de SAML.
    • Clique em Mostrar configurações avançadas.
    • Em Configurações de SAML, faça o seguinte:
      • Em Resposta (preferencial) ou Assinatura da declaração, selecione Signed.
      • Em Algoritmo de assinatura e Algoritmo de resumo, selecione qualquer opção.
      • Defina os seguintes valores:
        • Criptografia de resumo: criptografado.
        • Algoritmo de criptografia: qualquer algoritmo escolhido.
        • Certificado de criptografia: faça upload do arquivo de certificado gerado anteriormente neste guia.
    • Para salvar a configuração, clique em Avançar e em Concluir.

    Depois de configurar o IdP para criptografar declarações SAML, recomendamos que você verifique se as declarações geradas estão realmente criptografadas. Mesmo com a criptografia da declaração SAML configurada, a federação de identidade de colaboradores ainda pode processar declarações de texto simples.

    Excluir chaves de criptografia da federação de identidade de colaboradores

    Para excluir as chaves de criptografia SAML, execute o seguinte comando:
      gcloud iam workforce-pools providers keys delete KEY_ID \
          --workforce-pool WORKFORCE_POOL_ID \
          --provider PROVIDER_ID \
          --location global

    Substitua:

    • KEY_ID: o nome da chave
    • WORKFORCE_POOL_ID: o ID do pool
    • PROVIDER_ID: o ID do provedor

    Algoritmos de criptografia SAML compatíveis

    A federação de identidade de colaboradores é compatível com os seguintes algoritmos de transporte de chaves:

    A federação de identidade de colaboradores é compatível com os seguintes algoritmos de criptografia em blocos:

Gerenciar o acesso aos recursos do Google Cloud

Nesta seção, mostramos um exemplo que mostra como gerenciar o acesso aos recursos do Google Cloud pelos usuários da federação de identidade da força de trabalho.

Neste exemplo, você concede um papel do Identity and Access Management (IAM) em um projeto de amostra. Os usuários podem fazer login e usar esse projeto para acessar os produtos do Google Cloud.

É possível gerenciar papéis do IAM para identidades únicas, grupo de identidades ou um pool inteiro. Para mais informações, consulte Representar usuários do pool de identidades de força de trabalho nas políticas do IAM.

Para identidade única

Para conceder o papel de Administrador do Storage (roles/storage.admin) a uma única identidade para o projeto TEST_PROJECT_ID, execute o seguinte comando:

gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
    --role="roles/storage.admin" \
    --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"

Substitua:

  • TEST_PROJECT_ID: ID do projeto
  • WORKFORCE_POOL_ID: o ID do pool de identidade da força de trabalho
  • SUBJECT_VALUE: a identidade do usuário

Como usar o atributo de departamento mapeado

Para conceder o papel de administrador do Storage (roles/storage.admin) a todas as identidades em um departamento específico do projeto TEST_PROJECT_ID, execute o seguinte comando:

gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
    --role="roles/storage.admin" \
    --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.department/DEPARTMENT_VALUE"

Substitua:

  • TEST_PROJECT_ID: ID do projeto
  • WORKFORCE_POOL_ID: o ID do pool da força de trabalho
  • DEPARTMENT_VALUE: o valor mapeado de attribute.department

Como usar grupos mapeados

Para conceder o papel de Administrador do Storage (roles/storage.admin) a todas as identidades de um grupo específico para o projeto TEST_PROJECT_ID, execute o seguinte comando:

gcloud projects add-iam-policy-binding TEST_PROJECT_ID \
    --role="roles/storage.admin" \
    --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"

Substitua:

  • TEST_PROJECT_ID: ID do projeto
  • WORKFORCE_POOL_ID: o ID do pool da força de trabalho
  • GROUP_ID: um grupo na declaração google.groups mapeada.

Fazer login e testar o acesso

Nesta seção, faça login como usuário do pool de identidades de força de trabalho e testa se tem acesso a um produto do Google Cloud.

Fazer login

Nesta seção, mostramos como fazer login como um usuário federado e acessar os recursos do Google Cloud.

Fazer login no console (federado)

Para fazer login no console de federação de identidade de colaboradores do Google Cloud, também conhecido como console (federado), faça o seguinte:

  1. Acesse a página de login no console (federada).

    Acesse o console (federado)

  2. Digite o nome do provedor no formato a seguir:
    locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    1. Insira as credenciais do usuário na integração do app Okta, se solicitado.

    Se você iniciar um login iniciado pelo IdP, use o seguinte URL em Configurações de SAML para o parâmetro aninhado Default RelayState: https://console.cloud.google/ (em inglês).

Login baseado no navegador da CLI gcloud

Para fazer login na CLI gcloud usando um fluxo de login baseado em navegador, faça o seguinte:

Criar um arquivo de configuração

Para criar o arquivo de configuração de login, execute o comando a seguir. Também é possível ativar o arquivo como padrão para a gcloud CLI usando a flag --activate.

gcloud iam workforce-pools create-login-config \
    locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \
    --output-file=LOGIN_CONFIG_FILE

Substitua:

  • WORKFORCE_POOL_ID: o ID do pool da força de trabalho
  • PROVIDER_ID: o ID do provedor
  • LOGIN_CONFIG_FILE: um caminho para o arquivo de configuração especificado. Por exemplo, login.json.

O arquivo contém os endpoints usados pela CLI gcloud para ativar o fluxo de autenticação baseado em navegador e definir o público como o provedor criado anteriormente neste guia. O arquivo não contém informações confidenciais.

A saída será assim:

{
  "type": "external_account_authorized_user_login_config",
  "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID",
  "auth_url": "https://auth.cloud.google/authorize",
  "token_url": "https://sts.googleapis.com/v1/oauthtoken",
  "token_info_url": "https://sts.googleapis.com/v1/introspect",
}

Fazer login usando autenticação baseada no navegador

Para usar a autenticação de login baseada em navegador, use um dos seguintes métodos:

  • Se você usou a flag --activate ao criar o arquivo de configuração ou ativou esse arquivo com gcloud config set auth/LOGIN_CONFIG_FILE, a gcloud CLI fará uso dele automaticamente:

    gcloud auth login
  • Para fazer login especificando o local do arquivo de configuração, execute o seguinte comando:

    gcloud auth login --login-config=LOGIN_CONFIG_FILE
  • Para usar uma variável de ambiente para especificar o local do arquivo de configuração, defina CLOUDSDK_AUTH_LOGIN_CONFIG_FILE como o caminho de configuração.

Desativar o login baseado no navegador

Para interromper o uso do arquivo de configuração de login, faça o seguinte:

  • Se você usou a flag --activate ao criar o arquivo de configuração ou ativou esse arquivo com gcloud config set auth/LOGIN_CONFIG_FILE, execute o seguinte comando para cancelar a definição:

    gcloud config unset auth/login_config_file
  • Limpe a variável de ambiente CLOUDSDK_AUTH_LOGIN_CONFIG_FILE, se ela estiver definida.

Login headless da gcloud CLI

Para fazer login na CLI gcloud usando um fluxo headless, faça o seguinte:

OIDC

  1. Faça login de um usuário no app Okta e receba o token OIDC de Okta.

  2. Salve o token OIDC retornado por Okta em um local seguro na máquina local.

  3. Gere um arquivo de configuração abaixo. Execute este comando:

    gcloud iam workforce-pools create-cred-config \
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID \
        --subject-token-type="urn:ietf:params:oauth:token-type:id_token" \
        --credential-source-file="PATH_TO_OIDC_ID_TOKEN" \
        --workforce-pool-user-project="WORKFORCE_POOL_USER_PROJECT" \
        --output-file="config.json"
    

Substitua:

  • WORKFORCE_POOL_ID: o ID do pool da força de trabalho
  • PROVIDER_ID: o ID do provedor
  • PATH_TO_OIDC_TOKEN: o caminho para o arquivo de credencial do IdP OIDC
  • WORKFORCE_POOL_USER_PROJECT: o número do projeto associado ao projeto do usuário dos pools de forças de trabalho

O principal precisa ter a permissão serviceusage.services.use neste projeto.

Quando você executa o comando, ele gera um arquivo de configuração IdP do OIDC formatado com o seguinte:

{
  "type": "external_account",
  "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/PROVIDER_ID",
  "subject_token_type": "urn:ietf:params:oauth:token-type:id_token",
  "token_url": "https://sts.googleapis.com/v1/token",
  "workforce_pool_user_project": "WORKFORCE_POOL_USER_PROJECT",
  "credential_source": {
    "file": "PATH_TO_OIDC_CREDENTIALS_FILE"
  }
}

SAML

  1. Faça login de um usuário no app Okta e receba a Resposta SAML do Okta.

  2. Salve a resposta SAML retornada pelo Okta em um local seguro da máquina local e armazene o caminho da seguinte maneira:

    SAML_ASSERTION_PATH=SAML_ASSERTION_PATH
    
  3. Para gerar um arquivo de configuração, execute o seguinte comando:

    gcloud iam workforce-pools create-cred-config \
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID \
        --subject-token-type="urn:ietf:params:oauth:token-type:saml2" \
        --credential-source-file="SAML_ASSERTION_PATH"  \
        --workforce-pool-user-project="PROJECT_ID"  \
        --output-file="config.json"
    

    Substitua:

    • WORKFORCE_PROVIDER_ID: a força de trabalho fornece o ID que você criou anteriormente neste guia.
    • WORKFORCE_POOL_ID: o ID do pool de forças de trabalho que você criou anteriormente neste guia.
    • SAML_ASSERTION_PATH: o caminho do arquivo de declaração SAML.
    • PROJECT_ID: o ID do projeto;

    O arquivo de configuração gerado é semelhante ao seguinte:

    {
      "type": "external_account",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
      "subject_token_type": "urn:ietf:params:oauth:token-type:saml2",
      "token_url": "https://sts.googleapis.com/v1/token",
      "credential_source": {
        "file": "SAML_ASSERTION_PATH"
      },
      "workforce_pool_user_project": "PROJECT_ID"
    }
    

Para fazer login no gcloud usando a troca de tokens, execute o seguinte comando:

gcloud auth login --cred-file="config.json"

Em seguida, o gcloud troca suas credenciais do Okta por tokens de acesso temporários do Google Cloud, permitindo que você faça outras chamadas de gcloud para o Google Cloud.

Você verá uma saída semelhante a esta:

Authenticated with external account user credentials for:
[principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/USER_ID].

Para listar as contas credenciadas e a conta ativa no momento, execute o seguinte comando:

gcloud auth list

Testar o acesso

Agora você tem acesso aos serviços do Google Cloud que oferecem suporte à federação de identidade da força de trabalho e a que você tem acesso. No início deste guia, você concedeu o papel de Administrador do Storage (roles/storage.admin) a todas as identidades de um departamento específico no projeto TEST_PROJECT_ID. Para testar o acesso, liste os buckets do Cloud Storage.

Console (federado)

Para listar buckets do Cloud Storage usando o console (federado), faça o seguinte:

  • Acesse a página do Cloud Storage.
  • Verifique se é possível ver a lista de buckets atuais para o TEST_PROJECT_ID.

CLI da gcloud

Para listar os buckets e objetos do Cloud Storage para o projeto a que você tem acesso, execute o seguinte comando:

gcloud storage ls --project="TEST_PROJECT_ID"

O principal precisa ter a permissão serviceusage.services.use no projeto especificado.

Excluir usuários

A federação de identidade de colaboradores cria metadados e recursos de usuários para identidades de usuários federadas. Se você optar por excluir usuários, no seu IdP, por exemplo, também será necessário excluir explicitamente esses recursos no Google Cloud. Para fazer isso, consulte Excluir usuários da federação de identidade de colaboradores e os dados deles.

Talvez você veja que os recursos continuam associados a um usuário que foi excluído. Isso ocorre porque a exclusão de metadados e recursos do usuário requer uma operação de longa duração. Depois de iniciar uma exclusão da identidade de um usuário, os processos que o usuário iniciou antes da exclusão podem continuar em execução até que sejam concluídos ou cancelados.

A seguir