Criar políticas do IAM

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Nesta página, você aprende a criar políticas do Gerenciamento de identidade e acesso (IAM, na sigla em inglês) para autorização no Google Kubernetes Engine (GKE).

Visão geral

Todas as chamadas de API do Google Cloud, GKE e Kubernetes exigem que a conta que está fazendo a solicitação tenha as permissões necessárias. Por padrão, ninguém exceto você tem permissão para acessar o projeto ou os recursos dele. É possível usar o IAM para gerenciar quem pode acessar seu projeto e o que eles podem fazer. As permissões do IAM funcionam com o Kubernetes RBAC, que fornece controles de acesso granular para objetos específicos em um cluster ou namespace. O IAM tem maior foco nas permissões nos níveis do projeto e da organização, embora forneça vários papéis predefinidos específicos do GKE.

Para conceder a usuários e contas de serviço acesso ao projeto do Google Cloud, adicione-os como membros da equipe do projeto e atribua papéis a eles. Os papéis definem quais recursos do Google Cloud uma conta pode acessar e quais operações eles podem executar.

No GKE, use também o IAM para gerenciar os usuários e contas de serviço que podem acessar e executar operações nos clusters.

Antes de começar

Antes de começar, verifique se você realizou as tarefas a seguir:

  • Ativar a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Se você quiser usar a Google Cloud CLI para essa tarefa, instale e, em seguida, inicialize a CLI gcloud.

Interação com o Kubernetes RBAC

O sistema nativo de controle de acesso baseado em papéis (RBAC, na sigla em inglês) do Kubernetes também gerencia o acesso aos recursos no cluster. O RBAC controla o acesso no cluster e no namespace, enquanto o IAM funciona no projeto.

O IAM e o RBAC podem trabalhar juntos. Uma entidade precisa ter permissões suficientes do RBAC e do IAM para trabalhar com recursos no cluster.

Papéis do IAM

As seções a seguir descrevem os papéis do IAM disponíveis no Google Cloud.

Papéis predefinidos do GKE

O IAM fornece papéis predefinidos que concedem acesso a recursos específicos do Google Cloud e impedem o acesso não autorizado a outros recursos.

O IAM oferece os seguintes papéis predefinidos para o GKE:

Papel Nome Descrição Menor recurso
roles/container.admin Administrador do Kubernetes Engine

Concede acesso ao gerenciamento total de clusters e dos respectivos objetos da API Kubernetes.

Para definir uma conta de serviço em nós, você também precisa ter o papel de usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço gerenciada pelo usuário que seus nós usarão.

  • Projeto
roles/container.clusterAdmin Administrador de cluster do Kubernetes Engine

Concede acesso ao gerenciamento de clusters.

Para definir uma conta de serviço em nós, você também precisa ter o papel de usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço gerenciada pelo usuário que seus nós usarão.

  • Projeto
roles/container.clusterViewer Leitor de cluster do Kubernetes Engine

Concede acesso para receber e listar clusters do GKE.

roles/container.developer Desenvolvedor do Kubernetes Engine

Concede acesso a objetos da API Kubernetes dentro de clusters.

  • Projeto
roles/container.hostServiceAgentUser User agent de serviço de host do Kubernetes Engine

Permite que a conta de serviço do Kubernetes Engine no projeto host configure recursos de rede compartilhados para o gerenciamento de clusters. Também concede acesso para inspecionar as regras de firewall no projeto do host.

roles/container.nodeServiceAccount Conta de serviço de nós do Kubernetes Engine Papel de privilégio mínimo a ser usado como a conta de serviço para nós do GKE.
roles/container.viewer Visualizador do Kubernetes Engine

Concede acesso somente leitura a recursos em clusters do GKE, como nós, pods e objetos da API GKE.

  • Projeto

Para uma lista completa de permissões individuais em cada papel, consulte Papéis do Google Kubernetes Engine. Também é possível visualizar as permissões em cada papel do IAM usando a gcloud CLI ou o Console do Google Cloud. Para instruções, consulte Visualizar permissões concedidas por papéis do IAM.

Papéis básicos do IAM

Os papéis básicos do IAM concedem aos usuários acesso global no projeto a todos os recursos do Google Cloud. Para proteger o projeto e os clusters, use papéis predefinidos sempre que possível.

Para saber mais sobre eles, consulte Papéis básicos na documentação do IAM.

Papel Usuário da conta de serviço

O papel usuário da conta de serviço concede a uma conta de usuário do Google Cloud permissão para realizar ações como uma conta de serviço.

  • A concessão do papel iam.serviceAccountUser a um usuário de um projeto fornece a ele todos os papéis atribuídos a todas as contas de serviço no projeto, incluindo as que forem criadas no futuro.

  • Conceder o papel iam.serviceAccountUser a um usuário de uma conta de serviço específica fornece a ele todos os papéis atribuídos a essa conta de serviço.

Esse papel inclui as seguintes permissões:

  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Para mais informações sobre o papel ServiceAccountUser, consulte ServiceAccountUser na documentação do IAM.

O comando a seguir mostra a sintaxe para conceder o papel usuário da conta de serviço:

gcloud iam service-accounts add-iam-policy-binding \
  SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --member=user:USER \
  --role=roles/iam.serviceAccountUser

Substitua:

  • SA_NAME: o nome da conta de serviço.
  • PROJECT_ID: o ID do seu projeto do Google Cloud.
  • USER: o endereço de e-mail do usuário.

Papel usuário do agente de serviço de host

O papel usuário do agente de serviço de host é usado apenas em clusters de VPC compartilhada. Esse papel inclui as seguintes permissões:

  • compute.firewalls.get
  • container.hostServiceAgent.*
  • dns.networks.bindDNSResponsePolicy
  • dns.networks.bindPrivateDNSPolicy
  • dns.networks.bindPrivateDNSZone

Papéis personalizados

Se os papéis pré-definidos não atenderem às suas necessidades, crie papéis personalizados com permissões definidas por você.

Para saber como criar e atribuir papéis personalizados, consulte Como criar e gerenciar papéis personalizados.

Ver permissões concedidas por papéis do IAM

Para visualizar as permissões concedidas por papel, use a CLI gcloud ou o console do Google Cloud.

gcloud

Para visualizar as permissões concedidas por um papel específico, execute o seguinte comando:

gcloud iam roles describe roles/ROLE

Substitua ROLE por qualquer papel do IAM. Os papéis do GKE têm o prefixo roles/container, como gcloud iam roles describe roles/container.admin.

Console

Para visualizar as permissões concedidas por um papel específico, faça o seguinte:

  1. Acesse a seção Papéis da página IAM e administrador no console do Google Cloud.

    Acessar IAM e administrador

  2. Para ver os papéis do GKE, no campo Filtrar tabela, digite Kubernetes Engine.

  3. Selecione o papel que você quer ver. A descrição do papel e uma lista de permissões atribuídas são exibidas.

Como gerenciar papéis do IAM

Para saber como gerenciar papéis e permissões do IAM de usuários humanos, consulte Como conceder, alterar e revogar o acesso de membros do projeto na documentação do IAM.

Para contas de serviço, consulte Como conceder papéis a contas de serviço.

Exemplos

Veja alguns exemplos de como o IAM funciona com o GKE:

  • Um novo funcionário entrou em uma empresa. Ele precisa ser adicionado ao projeto do Google Cloud, mas só precisa visualizar os clusters do projeto e outros recursos do Google Cloud. O proprietário do projeto atribui a ele o papel de visualizador do Compute para envolvidos no projeto. Esse papel fornece acesso somente leitura para ver e listar nós, que são recursos do Compute Engine.
  • O funcionário está trabalhando em operações e precisa atualizar um cluster usando gcloud ou o console do Google Cloud. Essa operação requer a permissão container.clusters.update. Portanto, o proprietário do projeto atribui a ele o papel de administrador de cluster do Kubernetes Engine. O funcionário agora tem as permissões que são concedidas pelos papéis de visualizador do Compute e administrador de cluster do Kubernetes Engine.
  • O funcionário precisa investigar por que uma implantação está tendo problemas. É necessário executar kubectl get pods para ver os pods em execução no cluster. O funcionário já tem o papel visualizador do Compute, mas ele não é suficiente para listar pods. O funcionário precisa do papel visualizador do Kubernetes Engine.
  • O funcionário precisa criar um novo cluster. O proprietário do projeto concede ao funcionário o papel de usuário da conta de serviço da conta de serviço PROJECT_NUMBER-compute@developer.gserviceaccount.com, assim a conta do funcionário pode acessar a conta de serviço padrão do Compute Engine. Ela tem o papel de editor, que inclui um grande conjunto de permissões.

A seguir