Contas de serviço e chaves

Nesta página, explicamos as contas de serviço e as chaves do Google Cloud necessárias para instalar o GKE On-Prem.

Visão geral de contas de serviço

Antes de instalar o GKE On-Prem, você precisa ter estas contas de serviço:

  • Conta de serviço permitida na lista
  • Conta de serviço connect-register
  • Conta de serviço connect-agent
  • Conta de serviço logging-monitoring

Dependendo dos recursos que você quer ativar, talvez também seja necessário ter algumas contas de serviço opcionais.

Noções básicas sobre contas de serviço e projetos do Google Cloud

Ao criar uma conta de serviço, você a cria em um projeto do Google Cloud. O projeto do Cloud em que você cria uma conta de serviço é chamado de projeto pai da conta de serviço. A conta de serviço é um membro do próprio projeto pai.

Você identifica o projeto pai de uma conta de serviço observando o endereço de e-mail dela. Por exemplo, veja o endereço de e-mail de uma conta de serviço denominada logger. O projeto pai é alice-123.

logger@alice-123.iam.gserviceaccount.com

Ao conceder um papel de gerenciamento de identidade e acesso (IAM, na sigla em inglês) a uma conta de serviço, você o concede à conta de serviço em um projeto específico do Cloud. Isso segue o padrão geral de conceder um papel a uma identidade em um recurso.

Por exemplo, é possível conceder o papel bigquery.dataEditor à conta de serviço logger@alice-123.iam.gserviceaccount.com no projeto bob-456. Nesse caso, a conta de serviço é a identidade e o projeto do Google Cloud é o recurso.

É importante entender que é possível conceder um papel a uma conta de serviço em um projeto que não seja o projeto pai da conta de serviço.

Conta de serviço permitida na lista

Você já tem uma conta de serviço permitida na lista.

Se você ainda não tiver criado um arquivo de chave JSON para sua conta de serviço permitida, crie um agora:

gcloud iam service-accounts keys create whitelisted-key.json \
   --iam-account [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]

[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da sua conta de serviço permitida.

Como conceder papéis à sua conta de serviço permitida

O arquivo de configuração do GKE On-Prem tem vários campos que especificam um ID de projeto do Google Cloud.

usercluster:
  usagemetering:
    bigqueryprojectid: ""
...
gkeconnect:
  projectid: ""
...
stackdriver:
  projectid: ""
...
cloudauditlogging:
  projectid: ""

Os IDs de projeto no arquivo de configuração do GKE On-Prem não precisam ser distintos. Por exemplo, gkeconnect.projectid pode ser igual a stackdriver.projectid. Na verdade, todos os IDs de projeto em seu arquivo de configuração podem ser iguais.

Sua conta de serviço permitida precisa receber os seguintes papéis do IAM em cada projeto especificado no arquivo de configuração local do GKE:

  • serviceusage.serviceUsageViewer
  • iam.serviceAccountCreator
  • iam.roleViewer

Se você usou gkeadm para criar a estação de trabalho de administrador, gkeadm definiu os seguintes campos no arquivo de configuração local do GKE para o ID do projeto pai da sua conta de serviço permitida.

  • gkeconnect.projectid
  • stackdriver.projectid

Além disso, gkeadm colocou na lista de permissões da sua conta de serviço os papéis necessários no projeto pai da conta de serviço permitida.

Se você não tiver usado gkeadm para criar a estação de trabalho de administrador, precisará conceder os papéis por conta própria.

Para cada projeto especificado no arquivo de configuração do GKE On-Prem, conceda à conta a lista de permissões os papéis necessários:

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/iam.serviceAccountCreator"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/iam.roleViewer"

[PROJECT_ID] é o ID de um dos projetos especificados no arquivo de configuração do GKE On-Prem.

Outras contas de serviço exigidas

Lembre-se de que, além da conta de serviço permitida, você precisa das contas a seguir:

  • Conta de serviço connect-register
  • Conta de serviço connect-agent
  • Conta de serviço logging-monitoring

Dependendo de como você criou a estação de trabalho de administrador, talvez já tenha essas contas de serviço.

Caso 1: o gkeadm criou contas de serviço para você.

Se você usou o gkeadm para criar sua estação de trabalho de administrador e passou sinalização --auto-create-service-accounts, o gkeadm fez o seguinte:

  • Criou uma conta de serviço connect-register. Concedeu os papéis apropriados do IAM à conta de serviço connect-register. Criou um arquivo de chave JSON para a conta de serviço de connect-register. Copiou o arquivo de chave JSON para a estação de trabalho do administrador.

  • Criou uma conta de serviço connect-agent. Concedeu os papéis apropriados do IAM à conta de serviço do agente de conexão. Criou um arquivo de chave JSON para a conta de serviço de connect-agent. Copiou o arquivo de chave JSON para a estação de trabalho do administrador.

  • Criou uma conta de serviço logging-monitoring. Concedeu os papéis apropriados o IAM à conta de serviço de monitoramento de registros. Criou um arquivo de chave JSON para a conta de serviço logging-monitoring. Copiou o arquivo de chave JSON para a estação de trabalho do administrador.

Quando gkeadm cria contas de serviço para você, ele cria as contas no projeto do Cloud que é o pai da conta de serviço permitida. Além disso, o gkeadm concede papéis às contas de serviço no mesmo projeto. Para informações sobre como usar mais de um projeto do Cloud, consulte Como usar vários projetos do Google Cloud.

Caso 2: o gkeadm não criou contas de serviço para você.

Se você não tiver usado o gkeadm com a sinalização --auto-create-service-accounts criar sua estação de trabalho de administrador, precisará criar suas próprias contas de serviço. Além disso, para cada conta de serviço, é necessário criar um arquivo de chave JSON e conceder os devidos papéis do Cloud IAM.

Como criar suas próprias contas de serviço

Se você já tiver contas de serviço conforme descrito no caso 1, ignore esta seção.

Nesta seção, mostramos como criar as contas de serviço que você precisa para instalar e usar o GKE On-Prem. Ele também mostra como criar arquivos de chave JSON para suas contas de serviço e como conceder os papéis do IAM apropriados às contas de serviço.

Conta de serviço connect-register

O Connect usa essa conta de serviço para registrar seus clusters do GKE On-Prem no Google Cloud.

Crie sua conta de serviço connect-register:

gcloud iam service-accounts create connect-register-svc-account --project [PARENT_PROJECT_ID]

[PARENT_PROJECT_ID] é o ID do projeto que será o pai da sua conta de serviço connect-register.

Crie uma chave para sua conta de serviço connect-register:

gcloud iam service-accounts keys create connect-register-key.json \
   --iam-account [CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL]

[CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da sua conta de serviço connect-register.

Conceda o papel gkehub.admin à sua conta de serviço connect-register:

gcloud projects add-iam-policy-binding [CONNECT_PROJECT_ID] \
--member "serviceAccount:[CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/gkehub.admin"

[CONNECT_PROJECT_ID] é o ID do projeto do connect. Este é o projeto em que você vai registrar e manter uma conexão com os clusters do GKE On-Prem.

Conta de serviço connect-agent

O Connect usa essa conta de serviço para manter uma conexão entre o GKE On-Prem e o Google Cloud.

Crie a conta de serviço connect-agent:

gcloud iam service-accounts create connect-agent-svc-account  --project [PARENT_PROJECT_ID]

[PARENT_PROJECT_ID] é o ID do projeto que será o pai da conta de serviço connect-agent.

Crie uma chave para sua conta de serviço connect-agent:

gcloud iam service-accounts keys create connect-agent-key.json \
   --iam-account [CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL]

[CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da sua conta de serviço connect-agent.

Conceda o papel gkehub.connect à sua conta de serviço connect-agent:

gcloud projects add-iam-policy-binding [CONNECT_PROJECT_ID] \
--member "serviceAccount:[CONNECT_AGENT_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/gkehub.connect"

[CONNECT_PROJECT_ID] é o ID do projeto connect. Este é o projeto em que você vai registrar e manter uma conexão com os clusters do GKE On-Prem.

Conta de serviço logging-monitoring

O Connect usa essa conta de serviço para exportar registros de clusters para o Cloud Logging.

Crie a conta de serviço do logging-monitoring:

gcloud iam service-accounts create logging-monitoring-svc-account --project [PARENT_PROJECT_ID]

[PARENT_PROJECT_ID] é o ID do projeto que será o pai da conta de serviço logging-monitoring.

Crie uma chave para sua conta de serviço logging-monitoring:

gcloud iam service-accounts keys create logging-monitoring-key.json \
   --iam-account [LOG_MON_SERVICE_ACCOUNT_EMAIL]

[LOG_MON_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail de sua conta de serviço logging-monitoring.

Conceda os papéis stackdriver.resourceMetadata.writer, logging.logWriter e monitoring.metricWriter à conta de serviço logging-monitoring:

gcloud projects add-iam-policy-binding [LOG_MON_PROJECT_ID] \
--member "serviceAccount:[LOG_MOM_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding [LOG_MON_PROJECT_ID] \
--member "serviceAccount:[LOG_MOM_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding [LOG_MON_PROJECT_ID] \
--member "serviceAccount:[LOG_MON_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/monitoring.metricWriter"

[LOG_MON_PROJECT_ID] é o ID do projeto logging-monitoring. Este é o projeto em que você verá os registros dos clusters do GKE On-Prem.

Contas de serviço opcionais

Conta de serviço de medição de uso

A medição de uso do GKE usa essa conta de serviço para armazenar dados de uso em um conjunto de dados do BigQuery.

Se você quiser ativar a medição de uso do GKE para um cluster, precisará ter uma conta de serviço de medição de uso. A ferramenta gkeadm não cria essa conta de serviço, portanto, você precisa criá-la.

Crie sua conta de serviço de medição de uso:

gcloud iam service-accounts create usage-metering-svc-account --project [PARENT_PROJECT_ID]

[PARENT_PROJECT_ID] é o ID do projeto que será o pai da conta de serviço de medição de uso.

Crie uma chave para sua conta de serviço de medição de uso:

gcloud iam service-accounts keys create usage-metering-key.json \
   --iam-account [USAGE_METERING_SERVICE_ACCOUNT_EMAIL]

[USAGE_METERING_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da conta de serviço de medição de uso.

Conceda o papel bigquery.dataEditor à conta de serviço de medição de uso:

gcloud projects add-iam-policy-binding [USAGE_METERING_PROJECT_ID] \
--member "serviceAccount:[USAGE_METERING_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/bigquery.dataEditor"

[USAGE_METERING_PROJECT_ID] é o ID do projeto de medição de uso. Este é o projeto em que você quer ver os dados de uso de cluster do GKE On-Prem.

Conta de serviço do Audit Logging

O GKE On-Prem usa essa conta de serviço para enviar registros de auditoria do Kubernetes do cluster para os registros de auditoria do Cloud.

Se você quiser ativar os registros de auditoria do Cloud em sua instalação do GKE On-Prem, será necessário ter uma conta de serviço de registro de auditoria. A ferramenta gkeadm não cria essa conta de serviço, portanto, você precisa criá-la.

Crie sua conta de serviço de registro de auditoria:

gcloud iam service-accounts create audit-logging-svc-account --project [PARENT_PROJECT_ID]

[PARENT_PROJECT_ID] é o ID do projeto do Google Cloud que será o pai da conta de serviço de registro de auditoria.

Crie uma chave para a conta de serviço de registro de auditoria:

gcloud iam service-accounts keys create audit-logging-key.json \
   --iam-account [AUDIT_LOGGINGSERVICE_ACCOUNT_EMAIL]

[AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL] é o endereço de e-mail da conta de serviço de registro de auditoria.

Você não precisa conceder papéis à conta de serviço de registro de auditoria.