Contas de serviço e chaves

Este documento explica as Google Cloud contas de serviço e as chaves de que precisa para criar clusters na sua implementação do Google Distributed Cloud.

As instruções aqui apresentadas estão completas. Para uma introdução mais breve à utilização de uma conta de serviço, consulte o artigo Configure a infraestrutura mínima.

Antes de começar

Crie Google Cloud projetos.

Vista geral das contas de serviço

Antes de criar os clusters de administrador e de utilizador, tem de ter estas contas de serviço:

  • Conta de serviço de acesso a componentes
  • Associe e registe uma conta de serviço
  • Conta de serviço de registo e monitorização

Consoante as funcionalidades que quer ativar, também pode ter de ter algumas contas de serviço opcionais.

Compreender as contas de serviço e os Google Cloud projetos

Quando cria uma conta de serviço, associa-a a um Google Cloud projeto. Este Google Cloud projeto é denominado projeto principal da conta de serviço. Neste documento, todos os comandos gcloud iam service-accounts create usam a variável de marcador de posição PROJECT_ID, que é o ID do projeto principal da conta de serviço.

Pode determinar o projeto principal de uma conta de serviço consultando o endereço de email da conta de serviço. Por exemplo, aqui está o endereço de email de uma conta de serviço denominada logger. O projeto principal é alice-123.

logger@alice-123.iam.gserviceaccount.com

Quando concede uma função de gestão de identidade e de acesso (IAM) a uma conta de serviço, concede a função à conta de serviço numGoogle Cloud projeto específico. Isto segue o padrão geral de conceder uma função a um principal num recurso.

Por exemplo, pode conceder a função bigquery.dataEditor à conta de serviço logger@alice-123.iam.gserviceaccount.com no projeto bob-456. Neste caso, a conta de serviço é o princípio e o projeto é o recurso. Google Cloud

Pode conceder uma função a uma conta de serviço num Google Cloud projeto que não seja o projeto principal da conta de serviço, ou os projetos podem ser os mesmos. Para permitir esta flexibilidade, neste documento, os comandos gcloud projects add-iam-policy-binding para a conta de serviço de acesso aos componentes, a conta de serviço de registo de associação e a conta de serviço de registo e monitorização usam a variável de marcador de posição FLEET_HOST_PROJECT_ID. Este é o ID do projeto anfitrião da frota. O ID que especificar como FLEET_HOST_PROJECT_ID nos comandos gcloud projects add-iam-policy-binding tem de ser o mesmo.

Autorizações para conceder funções a contas de serviço

Cada uma das suas contas de serviço tem de receber determinadas funções noGoogle Cloud projeto relevante. Por exemplo, a sua conta de serviço connect-register tem de ter a função gkehub.editor no projeto anfitrião da frota.

Para conceder funções num Google Cloud projeto, tem de ter determinadas autorizações no projeto. Para obter detalhes, consulte a secção roles/resourcemanager.projectIamAdmin em Compreender as funções.

Se tiver as autorizações necessárias, pode conceder as funções. Caso contrário, outra pessoa da sua organização tem de lhe conceder as funções.

Usar o gkeadm para criar automaticamente contas de serviço

Esta página mostra como criar manualmente contas de serviço e conceder funções a contas de serviço. Em alternativa à execução manual destes passos, pode usar a ferramenta de linha de comandos gkeadm para criar algumas das contas de serviço e conceder funções quando cria uma estação de trabalho de administrador. Mesmo que permita que o gkeadm crie contas de serviço, tem de criar manualmente a conta de serviço de acesso aos componentes e conceder as funções do IAM necessárias, conforme descrito na secção seguinte. Para mais informações acerca das contas de serviço que o gkeadm pode criar, consulte o artigo Crie a sua estação de trabalho de administrador.

Conta de serviço de acesso a componentes

O Google Distributed Cloud usa esta conta de serviço para transferir componentes do cluster em seu nome a partir do Artifact Registry.

  1. Crie uma conta de serviço de acesso a componentes:

    gcloud iam service-accounts create component-access-sa \
        --display-name "Component Access Service Account" \
        --project PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do Google Cloud projeto que quer que seja o projeto principal da sua conta de serviço.

  2. Obtenha o endereço de email da conta de serviço de acesso ao componente criada recentemente:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crie uma chave JSON para a sua conta de serviço de acesso a componentes:

    gcloud iam service-accounts keys create component-access-key.json \
    --iam-account COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL
    

    Substitua COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL pelo endereço de email da sua conta de serviço de acesso aos componentes.

Atribua funções à conta de serviço de acesso aos componentes

A conta de serviço de acesso aos componentes tem de ter as seguintes funções de IAM no seu projeto. Estas funções são necessárias para que o Google Distributed Cloud possa fazer verificações prévias:

  • serviceusage.serviceUsageViewer
  • iam.roleViewer
  • iam.serviceAccountViewer
  • compute.viewer

Para conceder as funções:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.roleViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/iam.serviceAccountViewer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:COMPONENT_ACCESS_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/compute.viewer"

Substitua FLEET_HOST_PROJECT_ID pelo ID do projeto anfitrião da sua frota. Pode ser o mesmo projeto no qual a conta de serviço foi criada ou pode ser um projeto diferente. O ID do projeto que especificar aqui tem de ser o mesmo ID que especificar quando conceder funções do IAM à conta de serviço connect-register e à conta de serviço logging-monitoring.

Associe e registe uma conta de serviço

O Google Distributed Cloud usa esta conta de serviço para registar os seus clusters numa frota.

  1. Crie uma conta de serviço connect-register:

    gcloud iam service-accounts create connect-register-sa \
        --display-name "Connect-register Service Account" \
        --project PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do Google Cloud projeto que quer que seja o principal da sua conta de serviço connect-register.

  2. Obtenha o endereço de email da conta de serviço de registo de ligação criada recentemente:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crie uma chave JSON para a sua conta de serviço connect-register:

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

    Substitua CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL pelo endereço de email da sua conta de serviço connect-register.

  4. Conceda a função gkehub.editor à sua conta de serviço connect-register:

    gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
        --member "serviceAccount:CONNECT_REGISTER_SERVICE_ACCOUNT_EMAIL" \
        --role "roles/gkehub.editor"
    

    O ID do projeto que especificar aqui tem de ser o mesmo ID que especificar quando conceder funções de IAM à conta de serviço de acesso aos componentes e à conta de serviço de registo e monitorização.

Conta de serviço de registo e monitorização

O Google Distributed Cloud usa esta conta de serviço para exportar registos e métricas de clusters para o Cloud Logging e o Cloud Monitoring.

  1. Crie uma conta de serviço de registo e monitorização:

    gcloud iam service-accounts create logging-monitoring-sa \
        --display-name "Logging-monitoring Service Account" \
        --project=PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do projeto que quer que seja o principal da sua conta de serviço de registo e monitorização.Google Cloud

  2. Obtenha o endereço de email da conta de serviço de monitorização de registos criada recentemente:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crie uma chave JSON para a sua conta de serviço de registo e monitorização:

    gcloud iam service-accounts keys create logging-monitoring-key.json \
        --iam-account LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL
    

    Substitua LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL pelo endereço de email da sua conta de serviço de registo e monitorização.

Conceda funções à sua conta de serviço de monitorização de registos

A sua conta de serviço de registo e monitorização tem de receber as seguintes funções no seu projeto:

  • opsconfigmonitoring.resourceMetadata.writer
  • logging.logWriter
  • monitoring.metricWriter
  • monitoring.dashboardEditor
  • kubernetesmetadata.publisher

Para conceder as funções necessárias à sua conta de serviço de monitorização de registos:

gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/opsconfigmonitoring.resourceMetadata.writer"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.metricWriter"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/monitoring.dashboardEditor"
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
    --member "serviceAccount:LOGGING_MONITORING_SERVICE_ACCOUNT_EMAIL" \
    --role "roles/kubernetesmetadata.publisher"

O ID do projeto que especificar aqui tem de ser o mesmo ID que especificar quando concede funções do IAM à conta de serviço de acesso aos componentes e à conta de serviço de registo de ligação.

Contas de serviço opcionais

As contas de serviço descritas nesta secção são opcionais.

Conta de serviço de registo de auditoria

O Google Distributed Cloud usa esta conta de serviço para enviar registos de auditoria do Kubernetes do seu cluster para os registos de auditoria da nuvem.

Se planeia criar clusters com a funcionalidade de cluster avançada ativada, (que é necessária para configurar domínios de topologia), use a conta de serviço e a chave de registo e monitorização para o registo de auditoria em vez de criar outra conta de serviço.

  1. Crie uma conta de serviço de registo de auditoria:

    gcloud iam service-accounts create audit-logging-sa \
        --project PROJECT_ID
    

    Substitua PROJECT_ID pelo ID do projeto que quer que seja o principal da sua conta de serviço de registo de auditoria.Google Cloud

  2. Obtenha o endereço de email da conta de serviço de registo de auditoria recém-criada:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crie uma chave JSON para a sua conta de serviço de registo de auditoria:

    gcloud iam service-accounts keys create audit-logging-key.json \
    --iam-account AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL
    

    Substitua AUDIT_LOGGING_SERVICE_ACCOUNT_EMAIL pelo endereço de email da sua conta de serviço de registo de auditoria.

Não precisa de conceder funções à sua conta de serviço de registo de auditoria.

Conta de serviço da Autorização binária

O Google Distributed Cloud usa esta conta de serviço para chamar a API Binary Authorization.

Para ver informações sobre como criar uma conta de serviço da Autorização binária, consulte o artigo Autorização binária no GKE on-prem.

O que se segue?

Crie uma estação de trabalho de administrador