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, veja se você realizou as seguintes tarefas:
- Veja se você ativou a API do Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Confirme se você instalou a Google Cloud CLI.
- Defina as configurações padrão da Google Cloud CLI para o projeto usando um dos seguintes métodos:
- Use
gcloud init
se quiser orientações para definir os padrões do projeto. - Use
gcloud config
para definir individualmente a região, a zona e o ID do projeto. -
Execute
gcloud init
e siga as instruções:gcloud init
Se você estiver usando SSH em um servidor remoto, utilize a sinalização
--console-only
para impedir que o comando inicie um navegador:gcloud init --console-only
- Siga as instruções para autorizar a CLI gcloud a usar a conta do Google Cloud.
- Crie uma nova configuração ou selecione uma atual.
- Escolha um projeto do Google Cloud.
- Escolha uma zona padrão do Compute Engine.
- Escolha uma região padrão do Compute Engine.
- Defina o ID do projeto padrão:
gcloud config set project PROJECT_ID
- Defina a região padrão do Compute Engine (por exemplo,
us-central1
):gcloud config set compute/region COMPUTE_REGION
- Defina a zona padrão do Compute Engine (por exemplo,
us-central1-c
):gcloud config set compute/zone COMPUTE_ZONE
- Atualize
gcloud
para a versão mais recente:gcloud components update
gcloud init
gcloud config
Ao definir locais padrão, é possível evitar erros na gcloud CLI,
como: One of [--zone, --region] must be supplied: Please specify location
.
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/ |
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/ |
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/ |
Leitor de cluster do Kubernetes Engine |
Concede acesso para receber e listar clusters do GKE. |
|
roles/ |
Desenvolvedor do Kubernetes Engine |
Concede acesso a objetos da API Kubernetes dentro de clusters. |
|
roles/ |
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/ |
Leitor do Kubernetes Engine |
Concede acesso somente leitura a recursos em clusters do GKE, como nós, pods e objetos da API GKE. |
|
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 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 cada papel, use a gcloud CLI ou o Console do 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 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 é necessário 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.
- Conheça algumas práticas recomendadas para políticas de IAM.