Configurar a federação de identidade de colaboradores com o PingFederate

Neste documento, mostramos como configurar a federação de identidade da força de trabalho com o provedor de identidade (IdP) PingFederate e gerenciar o acesso ao Cloud de Confiance by S3NS. Depois de configurar o IdP do PingFederate, os usuários federados podem acessar os serviços do Cloud de Confiance que oferecem suporte à federação de identidade da força de trabalho usando o protocolo SAML 2.0.

Antes de começar

  1. Verifique se você configurou uma organização Cloud de Confiance .
  2. Defina a variável de ambiente GOOGLE_CLOUD_UNIVERSE_DOMAIN como s3nsapis.fr.
  3. Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:

    gcloud init
  4. Para configurar um aplicativo do PingFederate que use o protocolo SAML 2.0, faça o seguinte no PingFederate:

    1. Defina o ID da entidade SAML 2.0 do seu IdP do PingFederate. Para mais detalhes, consulte Especificar informações de federação.
    2. Crie uma conexão do SP SAML 2.0. Consulte Escolher um tipo de conexão do SP e faça o seguinte:

      1. Em Tipo de conexão, selecione Perfis de SSO do navegador e Protocolo SAML 2.0.
      2. Em Importar metadados, selecione Nenhum.
    3. Em Informações gerais, defina o ID da entidade do parceiro (ID da conexão) como:

      https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
      
    4. Em Perfis SAML, ative o SSO iniciado pelo SP. Se você também planeja usar o Logon único (SSO) iniciado pelo IdP, ative essa opção.

    5. Em Contrato de atributo, defina atributos personalizados (por exemplo, e-mail e grupos) a serem transmitidos na declaração. Esses atributos podem ser usados em Cloud de Confiance para criar políticas de gerenciamento de acesso mais tarde.

    6. Em Cumprimento do contrato de atributo, verifique se SAML_SUBJECT está mapeado para um campo com um valor exclusivo para cada usuário. Por exemplo, um endereço de e-mail geralmente é exclusivo para cada usuário, não muda e é usado para se referir a um usuário específico nas políticas de gerenciamento de acesso do Cloud de Confiance .

    7. Para configurar o login no console (federado), em URL do serviço de declaração do consumidor, adicione o seguinte URL do endpoint:

      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 que você criou anteriormente.
      • WORKFORCE_PROVIDER_ID: o ID do provedor de força de trabalho que você vai criar mais tarde.
    8. Defina Binding para este endpoint como POST.

    9. Para ativar o login no console (federado), em Allowable SAML Bindings, selecione Redirect.

    10. Em Política de assinatura, selecione Assinar resposta conforme necessário.

    11. Salve e ative a conexão.

    Usar atributos

    Esta seção descreve como usar atributos da declaração SAML.

    Use contratos de atributo para especificar os atributos personalizados nas declarações SAML geradas. Depois de configurar os atributos, você pode usá-los no Cloud de Confiance by S3NS para criar políticas de gerenciamento de acesso. Para saber mais sobre contratos de atributos, consulte Contratos de atributos na documentação do servidor PingFederate.

    Por exemplo, neste guia, usamos o PingOne como o repositório de dados do PingFederate e mapeamos os contratos de atributo email, firstName e groups usando os atributos do usuário do repositório de dados do PingOne, da seguinte forma:

    Atributo do contrato Valor
    email email
    firstName name.given
    groups memberOfGroupIDs

    Criar o provedor de pool de identidade da força de trabalho do PingFederate

    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 Cloud de Confiance. É possível configurar o provedor para usar o protocolo SAML.

    Criar um provedor de pool de identidade da força de trabalho SAML 2.0

    1. Para configurar o aplicativo SAML, faça o seguinte:

      gcloud

      Para criar o provedor de pool de identidade de colaboradores SAML, execute o seguinte comando:

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

      Substitua:

      • WORKFORCE_PROVIDER_ID: um ID de provedor.
      • WORKFORCE_POOL_ID: o ID do pool de identidade da força de trabalho.
      • DISPLAY_NAME: um nome de exibição.
      • DESCRIPTION: uma descrição.
      • XML_METADATA_PATH: o caminho para o arquivo de metadados formatado em XML do PingFederate.
      • ATTRIBUTE_MAPPING: o mapeamento de atributo. Por exemplo, google.subject=assertion.subject,google.groups=assertion.attributes.groups,attribute.department=assertion.attributes.department[0].
      • 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 como assertion.ipaddr.startsWith('98.11.12.').

      Esse comando atribui subject, groups e department na declaração SAML aos atributos google.subject, google.groups e attribute.department, respectivamente. A condição de atributo também garante que apenas usuários em um determinado intervalo de IP possam fazer login usando esse provedor de força de trabalho.

      Console

      Para configurar o provedor SAML usando o console Cloud de Confiance , faça o seguinte:

      1. No console Cloud de Confiance , acesse a página Pools de identidade da força de trabalho: Acessar os pools de identidade da força de trabalho
      2. Na tabela Pools de identidade de colaboradores, selecione o pool em que você quer criar o provedor.
      3. Na seção Provedores, clique em Adicionar provedor.
      4. Na lista Selecionar um fornecedor de provedor, escolha Provedor de identidade genérico.
      5. Em Selecionar um protocolo de autenticação, escolha SAML.
      6. Na seção Criar um provedor, faça o seguinte:
        1. Em Nome, digite um nome para o provedor.
        2. Em Arquivo de metadados do IdP (XML), selecione o arquivo XML de metadados do PingFederate.
        3. Clique em Continuar.
      7. Na seção Compartilhe as informações do provedor, clique em Continuar.
      8. Na seção Configurar provedor, faça o seguinte:

        1. Em Mapeamento de atributos, insira uma expressão CEL para google.subject (por exemplo, assertion.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]
          
      9. Para ativar o registro de auditoria detalhado, em Registro detalhado, clique no botão Ativar registro de auditoria do valor do atributo.

      10. Para criar o provedor, clique em Enviar.

    Gerenciar o acesso a recursos do Cloud de Confiance

    Esta seção mostra como gerenciar o acesso aos recursos do Cloud de Confiance para usuários do PingFederate.

    O projeto de amostra usado neste guia pode ser diferente do projeto que você usou para configurar a federação de identidade da força de trabalho.

    É possível gerenciar papéis para identidades únicas, um grupo de identidades ou um pool inteiro. Para mais informações, consulte Identificadores principais de colaboradores para políticas de permissão.

    Usar atributos de departamento mapeados

    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: o ID do projeto;
    • WORKFORCE_POOL_ID: o ID do pool de identidade da força de trabalho.
    • DEPARTMENT_VALUE: o valor mapeado de attribute.department.

    Usar grupos mapeados

    Para conceder o papel de administrador do Storage (roles/storage.admin) a todas as identidades no grupo GROUP_ID 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: o ID do projeto;
    • WORKFORCE_POOL_ID: o ID do pool de identidade 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 teste seu acesso.

    Fazer login

    login no console (federado)

    Para fazer login no console da Cloud de Confiance by S3NS federação de identidade de colaboradores, 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
    3. Insira suas credenciais do PingFederate quando solicitado.

    Login baseado no navegador da CLI gcloud

    Para fazer login na CLI gcloud usando um fluxo de login baseado em navegador:

    Execute o comando a seguir para criar um arquivo de configuração de login:

    Linux e macOS

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

    Windows (PowerShell)

    gcloud iam workforce-pools create-login-config `
        locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID `
        --output-file=LOGIN_CONFIG_PATH

    Substitua:

    • WORKFORCE_POOL_ID: o ID do pool de federação de identidade da força de trabalho.
    • WORKFORCE_PROVIDER_ID: o ID do provedor da Federação de identidade de colaboradores.
    • LOGIN_CONFIG_PATH: o caminho para gravar o arquivo de configuração de login. Por exemplo, login-config.json.

    O arquivo de configuração de login 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 IdP configurado no provedor do pool de identidade de colaboradores. O arquivo não contém informações confidenciais.

    O conteúdo do arquivo de configuração de login é semelhante a este:

    {
      "universe_domain": "s3nsapis.fr",
      "universe_cloud_web_domain": "cloud.s3nscloud.fr",
      "type": "external_account_authorized_user_login_config",
      "audience": "//iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID",
      "auth_url": "https://auth.cloud.s3nscloud.fr/authorize",
      "token_url": "https://sts.s3nsapis.fr/v1/oauthtoken",
      "token_info_url": "https://sts.s3nsapis.fr/v1/introspect"
    }

    Aponte para o arquivo de configuração de login com uma variável de ambiente, uma propriedade na configuração ativa da CLI gcloud ou use-o diretamente com o comando gcloud auth login:

    Variável de ambiente

    Para usar o arquivo de configuração de login com uma variável de ambiente, siga estas instruções:

    1. Defina a variável de ambiente CLOUDSDK_AUTH_LOGIN_CONFIG_FILE como o caminho do arquivo de configuração de login.
    2. Execute este comando:

      gcloud auth login
    3. A CLI gcloud faz referência à variável de ambiente para encontrar o arquivo de configuração de login e inicia o processo de autenticação. Siga o fluxo baseado no navegador para autenticar e autorizar a CLI gcloud a acessar recursos em seu nome para comandos futuros.

    Para parar de usar o arquivo de configuração de login para comandos gcloud auth login, limpe a variável de ambiente CLOUDSDK_AUTH_LOGIN_CONFIG_FILE.

    Configuração da CLI gcloud

    Para usar o arquivo de configuração de login com uma propriedade de configuração da CLI gcloud, siga estas instruções:

    1. Defina a propriedade auth/login_config_file da configuração ativa da CLI gcloud como o caminho do arquivo de configuração de login com o seguinte comando:

      gcloud config set auth/login_config_file LOGIN_CONFIG_PATH
    2. Execute este comando:

      gcloud auth login
    3. A CLI gcloud faz referência à propriedade de configuração para encontrar o arquivo de configuração de login e inicia o processo de autenticação. Siga o fluxo baseado no navegador para autenticar e autorizar a CLI gcloud a acessar recursos em seu nome para comandos futuros.

    Para parar de usar o arquivo de configuração de login para comandos gcloud auth login, desative a propriedade com o seguinte comando:

    gcloud config unset auth/login_config_file

    gcloud auth login

    Para usar o arquivo de configuração de login diretamente com o comando gcloud auth login, siga estas instruções:

    • Se você usou a flag --activate ao criar o arquivo de configuração de login, execute o seguinte comando:

      gcloud auth login
    • Se você não usou a flag --activate ao criar o arquivo de configuração de login, execute o seguinte comando:

      Linux e macOS

      gcloud auth login \
          --login-config=LOGIN_CONFIG_PATH

      Windows (PowerShell)

      gcloud auth login `
          --login-config=LOGIN_CONFIG_PATH

      Substitua LOGIN_CONFIG_PATH pelo caminho do arquivo de configuração de login.

    O comando gcloud auth login armazena credenciais de acesso no seu diretório principal. O principal autenticado se torna o principal ativo na configuração ativa da CLI gcloud. A menos que sejam substituídas, a CLI gcloud usa essas credenciais armazenadas para acessar o Cloud de Confiance by S3NS.

    Login headless da CLI gcloud

    Para fazer login no PingFederate com a CLI gcloud usando o protocolo SAML, faça o seguinte:

    1. Faça login de um usuário no app PingFederate e receba a resposta SAML.
    2. Salve a resposta SAML retornada pelo PingFederate em um local seguro da sua máquina local. Armazene o caminho em uma variável de ambiente, por exemplo: SAML_ASSERTION_PATH=/path/to/assertion.xml.
    3. Gere um arquivo de configuração:

      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:

      • SAML_ASSERTION_PATH: o caminho do arquivo de declaração SAML.
      • PROJECT_ID: o ID do projeto;
    4. O arquivo de configuração gerado é semelhante a este:

      {
        "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"
      }
      
    5. Para fazer login na CLI 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 PingFederate por tokens de acesso temporários do Cloud de Confiance , permitindo que você faça outras chamadas de gcloud para o Cloud de Confiance. O resultado será o seguinte:

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

    6. Para listar as contas credenciadas e a conta ativa, execute o seguinte comando:

      gcloud auth list
      

    Testar o acesso

    Você tem acesso aos serviços do Cloud de Confiance que oferecem suporte à federação de identidade de colaboradores e a que você tem acesso. No início deste guia, você concedeu o papel de Administrador do Storage a todas as identidades de um departamento ou grupo específico no projeto TEST_PROJECT_ID. Para testar o acesso, liste os buckets do Cloud Storage.

    login no console (federado)

    Para verificar seu acesso no console (federado), faça o seguinte:

    1. Acessar a página do Cloud Storage.
    2. Verifique se é possível ver a lista de buckets para o projeto 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 alpha storage ls --project="TEST_PROJECT_ID"
    

    O principal precisa ter a permissão serviceusage.services.use no projeto definido na sessão da CLI gcloud: PROJECT_ID.

    A seguir