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. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando
gcloud components update
.
Interação com o Kubernetes RBAC
O Kubernetes tem um mecanismo de controle de acesso integrado, o controle de acesso baseado em função (RBAC, na sigla em inglês). 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:
Role | Title | Description | Lowest resource |
---|---|---|---|
roles/ |
Kubernetes Engine Admin |
Provides access to full management of clusters and their Kubernetes API objects.
To set a service account on nodes, you must also have the Service Account User role
( |
|
roles/ |
Kubernetes Engine KMS Crypto Key User | Allow the Kubernetes Engine service agent in the cluster project to call KMS with user provided crypto keys to sign payloads. | |
roles/ |
Kubernetes Engine Cluster Admin |
Provides access to management of clusters.
To set a service account on nodes, you must also have the Service Account User role
( |
|
roles/ |
Kubernetes Engine Cluster Viewer |
Provides access to get and list GKE clusters. |
|
roles/ |
Kubernetes Engine Default Node Service Account | Least privilege role to use as the default service account for GKE Nodes. | |
roles/ |
Kubernetes Engine Developer |
Provides access to Kubernetes API objects inside clusters. |
|
roles/ |
Kubernetes Engine Host Service Agent User |
Allows the Kubernetes Engine service account in the host project to configure shared network resources for cluster management. Also gives access to inspect the firewall rules in the host project. |
|
roles/ |
Kubernetes Engine Viewer |
Provides read-only access to resources within GKE clusters, such as nodes, pods, and GKE API objects. |
|
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 gcloud CLI 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:
Acesse a seção Papéis da página IAM e administrador no console do Google Cloud.
Para ver os papéis do GKE, no campo Filtrar tabela, digite
Kubernetes Engine
.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ãocontainer.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
- Leia a Visão geral do controle de acesso
- Saiba mais sobre como gerenciar o acesso aos recursos do Google Cloud
- Saiba mais sobre as políticas de permissão
- Saiba mais sobre as políticas de negação