Escopos de acesso no GKE


Nesta página, descrevemos os escopos de acesso padrão concedidos aos nós nos clusters do Google Kubernetes Engine (GKE).

O que são escopos de acesso?

Os escopos de acesso são o método legado que concede permissões para seus nós e para cargas de trabalho em execução nos nós se elas usam credenciais padrão do aplicativo (ADC). Os escopos de acesso definem os escopos do OAuth usados nas chamadas de API das bibliotecas de cliente ou pela CLI gcloud.

Recomendamos que você não especifique seus próprios escopos de acesso. Em vez disso, é necessário usar permissões do IAM ou controle de acesso baseado em papéis (RBAC, na sigla em inglês) do Kubernetes para conceder acesso a contas de serviço específicas do IAM ou contas de serviço do Kubernetes.

Escopos de acesso padrão

Quando você cria um novo cluster do GKE, o Google Cloud atribui um conjunto padrão de escopos de acesso aos nós com base na conta de serviço usada pelos nós. Esses escopos de acesso permitem funcionalidades específicas para o GKE. Também é possível definir escopos de acesso manualmente usando a sinalização --scopes ao criar clusters padrão. Clusters do Autopilot ou pools de nós. Não é possível modificar os escopos de acesso nos pools de nós atuais. Em vez disso, crie um novo pool de nós com os novos escopos e migre cargas de trabalho para ele.

As seções a seguir descrevem os escopos de acesso padrão que o GKE adiciona aos nós com base na especificação de uma conta de serviço personalizada e na especificação manual dos escopos de acesso.

Clusters do Autopilot

Conta de serviço Você especificou manualmente os escopos de acesso? Escopos de acesso adicionados pelo GKE
Conta de serviço padrão do Compute Engine No
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write: adicionado se o Cloud Logging estiver ativado.
  • https://www.googleapis.com/auth/monitoring: adicionado se o Cloud Monitoring estiver ativado
Yes Escopos especificados manualmente
Conta de serviço personalizada No https://www.googleapis.com/auth/cloud-platform
Yes Escopos especificados manualmente

Clusters padrão

Conta de serviço Escopos de acesso especificados manualmente? Escopos de acesso do GKE
Conta de serviço padrão do Compute Engine No
  • https://www.googleapis.com/auth/devstorage.read_only
  • https://www.googleapis.com/auth/service.management.readonly
  • https://www.googleapis.com/auth/servicecontrol
  • https://www.googleapis.com/auth/trace.append
  • https://www.googleapis.com/auth/logging.write: adicionado se o Cloud Logging estiver ativado.
  • https://www.googleapis.com/auth/monitoring: adicionado se o Cloud Monitoring estiver ativado
Yes
  • Escopos especificados manualmente
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: adicionado se o Cloud Logging estiver ativado.
  • https://www.googleapis.com/auth/monitoring: adicionado se o Cloud Monitoring estiver ativado
Conta de serviço personalizada No
  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/cloud-platform
Yes
  • Escopos especificados manualmente
  • https://www.googleapis.com/auth/monitoring.write
  • https://www.googleapis.com/auth/logging.write: adicionado se o Cloud Logging estiver ativado.
  • https://www.googleapis.com/auth/monitoring: adicionado se o Cloud Monitoring estiver ativado

Como configurar uma conta de serviço personalizada em cargas de trabalho

O IAM é o sistema de controle de acesso para a concessão de papéis autorizados aos usuários e contas de serviço no projeto do Google Cloud. A conta de serviço é uma conta especial do Google que executa tarefas em seu nome, como a implantação de aplicativos. Use o IAM para criar uma conta de serviço e, em seguida, use as vinculações de política do IAM para proteger a conta.

Se as cargas de trabalho exigirem acesso ao Compute Engine, conceda à conta de serviço o papel Administrador do Compute Engine. Se as cargas de trabalho precisarem extrair imagens particulares do Artifact Registry, consulte Como configurar o controle de acesso para repositórios do Artifact Registry.

Crie uma conta de serviço

Para criar uma conta de serviço personalizada chamada kubernetes-engine-node-sa, execute os seguintes comandos:

export NODE_SA_NAME=kubernetes-engine-node-sa
gcloud iam service-accounts create $NODE_SA_NAME \
  --display-name "GKE Node Service Account"
export NODE_SA_EMAIL=`gcloud iam service-accounts list --format='value(email)' \
  --filter='displayName:GKE Node Service Account'`

Conceder papéis mínimos

Para configurar a conta de serviço com os papéis e as permissões mínimos necessários para o funcionamento do nó do GKE, execute os seguintes comandos, em que $PROJECT é o ID do projeto:

export PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/monitoring.metricWriter
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/monitoring.viewer
gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/logging.logWriter

Conceder outros papéis

Para conceder o papel Administrador do Compute Engine à conta de serviço, execute o seguinte comando:

gcloud projects add-iam-policy-binding $PROJECT \
  --member serviceAccount:$NODE_SA_EMAIL \
  --role roles/compute.admin

Para saber como conceder às contas de serviço acesso a imagens particulares armazenadas no Artifact Registry, consulte Como conceder acesso aos clusters do Google Kubernetes Engine.

Como criar um cluster ou pool de nós com a conta de serviço personalizada

Para criar um cluster que usa a conta de serviço personalizada, execute o seguinte comando:

gcloud container clusters create --service-account=$NODE_SA_EMAIL

Para criar um pool de nós em um cluster atual:

gcloud container node-pools create --service-account=$NODE_SA_EMAIL