Baixar configuração de credencial e conceder acesso

Nesta página, descrevemos como configurar suas cargas de trabalho para acessar recursos do Google Cloud usando a federação de identidade da carga de trabalho e o acesso direto a recursos ou a identidade temporária de conta de serviço.

É possível encontrar instruções completas e específicas do caso de uso nos guias de configuração para a AWS e o Azure, o Active Directory, GitHub, GitLab e outros pipelines de implantação e o Kubernetes.

Permitir que a carga de trabalho externa acesse recursos do Google Cloud

Para fornecer à sua carga de trabalho acesso aos recursos do Google Cloud, recomendamos que você conceda ao principal acesso direto aos recursos. Nesse caso, o principal é o usuário federado. Alguns produtos do Google Cloud têm limitações de APIs do Google Cloud. Se sua carga de trabalho chamar um endpoint de API que apresenta limitação, será possível usar a identidade temporária de conta de serviço. Nesse caso, o principal é a conta de serviço do Google Cloud, que atua como a identidade. Você concede acesso à conta de serviço no recurso.

Acesso direto a recursos

É possível conceder acesso a uma identidade federada diretamente nos recursos usando o console do Google Cloud ou a gcloud CLI.

Console

Para usar o console do Google Cloud para conceder papéis do IAM diretamente em um recurso, acesse a página do recurso e conceda o papel. O exemplo a seguir mostra como acessar a página do Cloud Storage e conceder o papel Leitor de objetos do Storage (roles/storage.objectViewer) a uma identidade federada diretamente em um bucket do Cloud Storage.

  1. No Console do Google Cloud, acesse a página Buckets do Cloud Storage.

    Acessar buckets

  2. Na lista de buckets, clique no nome do bucket ao qual você quer conceder o papel.

  3. Selecione a guia Permissões na parte superior da página.

  4. Clique no botão Permitir acesso.

    A caixa de diálogo Adicionar principais será exibida.

  5. No campo Novos principais, insira uma ou mais identidades que precisam acessar seu bucket.

    Por assunto

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

    Substitua:

    • PROJECT_NUMBER: o número do projeto
    • POOL_ID: o ID do pool de carga de trabalho
    • SUBJECT: o sujeito individual mapeado do IdP, por exemplo, administrator@example.com

    Por grupo

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

    Substitua:

    • PROJECT_NUMBER: o número do projeto
    • WORKLOAD_POOL_ID: o ID do pool de carga de trabalho
    • GROUP: o grupo mapeado do 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:

    • PROJECT_NUMBER: o número do projeto
    • WORKLOAD_POOL_ID: o ID do pool de carga de trabalho
    • ATTRIBUTE_NAME: um dos atributos que foi mapeado do IdP
    • ATTRIBUTE_VALUE: o valor do atributo
  6. Escolha um papel ou mais no menu suspenso Selecionar um papel. Os papéis selecionados são exibidos no painel com uma breve descrição das permissões que eles concedem.

  7. Clique em Save.

gcloud

Para usar a gcloud CLI a fim de conceder papéis do IAM em um recurso de um projeto, faça isto:

  1. Consiga o número do projeto em que o recurso está definido.

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

    Para usar a gcloud CLI para conceder o papel Usuário de Identidade da carga de trabalho (roles/iam.workloadIdentityUser) a identidades externas que atendam a determinados critérios, execute o comando a seguir.

    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:

    • BUCKET_ID: o bucket em que o acesso será concedido
    • PROJECT_NUMBER: o número do projeto que contém o pool de Identidade da carga de trabalho
    • POOL_ID: o ID do pool de identidade da carga de trabalho
    • SUBJECT: o valor esperado do atributo mapeado para google.subject
    • GROUP: o valor esperado do atributo mapeado para google.groups
    • ATTRIBUTE_NAME: o nome de um atributo personalizado no seu mapeamento de atributos
    • ATTRIBUTE_VALUE: o valor do atributo personalizado no seu mapeamento de atributos

    É possível conceder papéis em qualquer recurso do Google Cloud compatível com políticas de permissão do IAM.

Identidade temporária de conta de serviço

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

    1. Ative as APIs IAM, Security Token Service, and Service Account Credentials.

      Ative as APIs

    2. Crie uma conta de serviço que represente a carga de trabalho. Recomendamos usar uma conta de serviço dedicada para cada carga de trabalho.

      A conta de serviço não precisa estar no mesmo projeto que o pool de identidades da carga de trabalho.

    3. Conceda à conta de serviço acesso a recursos que você quer que as identidades externas acessem.

    4. Conceda o papel Usuário de Identidade da carga de trabalho (roles/iam.workloadIdentityUser) à conta de serviço:

    5. Crie uma conta de serviço que represente a carga de trabalho. Recomendamos que você use uma conta de serviço dedicada para cada carga de trabalho.

      A conta de serviço não precisa estar no mesmo projeto que o pool de Identidade da carga de trabalho, mas você precisa se referir ao projeto que contém a conta de serviço.

  2. Para conceder acesso a uma identidade federada usando a identidade temporária de conta de serviço pelo console do Google Cloud ou pela gcloud CLI, faça isto:

    Console

    Para usar o console do Google Cloud para conceder papéis do IAM a uma identidade federada com conta de serviço, faça isto:

    1. Crie uma conta de serviço que sirva como a identidade que será representada, conforme a seguir:

      1. Ative as APIs IAM, Security Token Service, and Service Account Credentials.

        Ative as APIs

      2. Crie uma conta de serviço que represente a identidade para a carga de trabalho. Recomendamos que você use uma conta de serviço dedicada para cada carga de trabalho.

        A conta de serviço não precisa estar no mesmo projeto que o pool de Identidade da carga de trabalho, mas, ao conceder acesso ao IAM, você precisa se referir ao projeto que contém a conta de serviço.

      3. Conceda à conta de serviço acesso a recursos que você quer que as identidades externas acessem.

    2. Para conceder acesso usando a identidade temporária de conta de serviço, faça isto.

      1. Acesse a página pools de Identidade da carga de trabalho.

        Acesse Pools de identidade da carga de trabalho

      2. Selecione Conceder acesso.

      3. Na caixa de diálogo Conceder acesso à conta de serviço, selecione Conceder acesso usando a identidade temporária de conta de serviço.

      4. Na lista Contas de serviço, selecione a conta de serviço para as identidades externas que serão representadas e faça isto:

      5. Para escolher quais identidades no pool podem representar a conta de serviço, realize uma das seguintes ações:

        • Para permitir que apenas identidades específicas do pool de Identidade da carga de trabalho representem a conta de serviço, selecione Somente identidades correspondentes ao filtro.

        • Na lista Nome do atributo, selecione o atributo que você quer filtrar.

        • No campo Valor do atributo, insira o valor esperado do atributo. Por exemplo, se você usar um google.subject=assertion.sub de mapeamento de atributos, defina o nome do Atributo com subject e o Valor do atributo com o valor da declaração sub em tokens emitidos pelo seu provedor de identidade externo.

      6. Para salvar a configuração, clique em Salvar e em Dispensar.

    gcloud

    Para usar a gcloud CLI para conceder o papel Usuário de Identidade da carga de trabalho (roles/iam.workloadIdentityUser) a identidades externas que atendam a determinados critérios, execute o comando a seguir.

    Por assunto

    gcloud storage buckets add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --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 SERVICE_ACCOUNT_EMAIL \
        --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 SERVICE_ACCOUNT_EMAIL \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    Substitua:

    • SERVICE_ACCOUNT_EMAIL: o endereço de e-mail da conta de serviço
    • PROJECT_NUMBER: o número do projeto que contém o pool de Identidade da carga de trabalho
    • POOL_ID: o ID do pool de identidade da carga de trabalho
    • SUBJECT: o valor esperado do atributo mapeado para google.subject
    • GROUP: o valor esperado do atributo mapeado para google.groups
    • ATTRIBUTE_NAME: o nome de um atributo personalizado no seu mapeamento de atributos
    • ATTRIBUTE_VALUE: o valor do atributo personalizado no seu mapeamento de atributos

Baixar a configuração

Para permitir que sua carga de trabalho acesse as bibliotecas de cliente, primeiro baixe e configure o Application Default Credentials (ADC) conforme a seguir:

  1. No Console do Google Cloud, acesse a página Pools de Identidades da carga de trabalho.

    Acesse Pools de identidade da carga de trabalho
  2. Na tabela, selecione o pool para acessar a página de detalhes dele.

  3. Clique em Conceder acesso.

  4. Selecione Conceder acesso usando identidades federadas (recomendado)

  5. Para baixar o Application Default Credentials (ADC) para que sua carga de trabalho possa acessar as bibliotecas de cliente, faça isto:

    1. Clique em Baixar configuração.

    2. Na caixa de diálogo Configurar seu aplicativo, faça isto:

      1. Na lista suspensa Provedor, selecione seu provedor.

      2. No Caminho do token OIDC ou no caminho da declaração SAML, insira o caminho em que o token ou a declaração está localizado.

      3. Na lista suspensa Tipo de formato, selecione o formato.

    3. Clique em Baixar configuração e anote o caminho em que você salvou o arquivo.