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.
- No Console do Google Cloud, acesse a página Buckets do Cloud Storage.
Na lista de buckets, clique no nome do bucket ao qual você quer conceder o papel.
Selecione a guia Permissões na parte superior da página.
Clique no botão add_boxPermitir acesso.
A caixa de diálogo Adicionar principais será exibida.
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 projetoPOOL_ID
: o ID do pool de carga de trabalhoSUBJECT
: 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 projetoWORKLOAD_POOL_ID
: o ID do pool de carga de trabalhoGROUP
: 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 projetoWORKLOAD_POOL_ID
: o ID do pool de carga de trabalhoATTRIBUTE_NAME
: um dos atributos que foi mapeado do IdPATTRIBUTE_VALUE
: o valor do atributo
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.
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:
Consiga o número do projeto em que o recurso está definido.
gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
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á concedidoPROJECT_NUMBER
: o número do projeto que contém o pool de Identidade da carga de trabalhoPOOL_ID
: o ID do pool de identidade da carga de trabalhoSUBJECT
: o valor esperado do atributo mapeado paragoogle.subject
GROUP
: o valor esperado do atributo mapeado paragoogle.groups
ATTRIBUTE_NAME
: o nome de um atributo personalizado no seu mapeamento de atributosATTRIBUTE_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
Para criar uma conta de serviço para a carga de trabalho externa, faça isto:
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
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.
Conceda à conta de serviço acesso a recursos que você quer que as identidades externas acessem.
Conceda o papel Usuário de Identidade da carga de trabalho (
roles/iam.workloadIdentityUser
) à conta de serviço: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.
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:
Crie uma conta de serviço que sirva como a identidade que será representada, conforme a seguir:
Enable the IAM, Security Token Service, and Service Account Credentials APIs.
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.
Conceda à conta de serviço acesso a recursos que você quer que as identidades externas acessem.
Para conceder acesso usando a identidade temporária de conta de serviço, faça isto.
Acesse a página pools de Identidade da carga de trabalho.
Selecione Conceder acesso.
Na caixa de diálogo Conceder acesso à conta de serviço, selecione Conceder acesso usando a identidade temporária de conta de serviço.
Na lista Contas de serviço, selecione a conta de serviço para as identidades externas que serão representadas e faça isto:
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 comsubject
e o Valor do atributo com o valor da declaraçãosub
em tokens emitidos pelo seu provedor de identidade externo.
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çoPROJECT_NUMBER
: o número do projeto que contém o pool de Identidade da carga de trabalhoPOOL_ID
: o ID do pool de identidade da carga de trabalhoSUBJECT
: o valor esperado do atributo mapeado paragoogle.subject
GROUP
: o valor esperado do atributo mapeado paragoogle.groups
ATTRIBUTE_NAME
: o nome de um atributo personalizado no seu mapeamento de atributosATTRIBUTE_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:
-
No Console do Google Cloud, acesse a página Pools de Identidades da carga de trabalho.
Acesse Pools de identidade da carga de trabalho -
Na tabela, selecione o pool para acessar a página de detalhes dele.
-
Clique em Conceder acesso.
-
Selecione Conceder acesso usando identidades federadas (recomendado)
-
Para baixar o Application Default Credentials (ADC) para que sua carga de trabalho possa acessar as bibliotecas de cliente, faça isto:
-
Clique em Baixar configuração.
-
Na caixa de diálogo Configurar seu aplicativo, faça isto:
-
Na lista suspensa Provedor, selecione seu provedor.
-
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.
Na lista suspensa Tipo de formato, selecione o formato.
-
-
Clique em Baixar configuração e anote o caminho em que você salvou o arquivo.
-