Contas de serviço e chaves

Neste documento, explicamos as Google Cloud contas de serviço e chaves necessárias para criar clusters na sua implementação da Google Distributed Cloud.

As instruções aqui são completas. Para uma introdução mais curta sobre como usar uma conta de serviço, consulte Configurar infraestrutura mínima.

Antes de começar

Criar Google Cloud projetos.

Visão geral de contas de serviço

Antes de criar os clusters de administrador e de usuário, é necessário ter estas contas de serviço:

  • Conta de serviço de acesso a componentes
  • Conta de serviço connect-register
  • 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 associa a um projeto do Google Cloud . Esse projeto do Google Cloud é chamado de projeto pai 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 pai da conta de serviço.

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) a uma conta de serviço, você o concede à conta de serviço em um projeto específico doGoogle Cloud . Isso segue o padrão geral de conceder um papel a um princípio 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 é o princípio, e o projeto Google Cloud é o recurso.

É possível conceder um papel a uma conta de serviço em um projeto Google Cloud que não seja o projeto pai da conta de serviço, ou os projetos podem ser os mesmos. Para permitir essa flexibilidade, neste documento, os comandos gcloud projects add-iam-policy-binding para a conta de serviço de acesso a componentes, a conta de serviço de registro-connect e a conta de serviço de logging-monitoring usam a variável de marcador de posição FLEET_HOST_PROJECT_ID. Esse é o ID do projeto host da frota. O ID especificado como FLEET_HOST_PROJECT_ID nos comandos gcloud projects add-iam-policy-binding precisa ser o mesmo.

Permissões para conceder papéis a contas de serviço

Cada uma das contas de serviço precisa receber determinados papéis no projeto relevante doGoogle Cloud . Por exemplo, sua conta de serviço connect-register precisa receber o papel gkehub.editor no projeto host da frota.

Para conceder papéis em um projeto do Google Cloud , é preciso ter determinadas permissões no projeto. Para detalhes, consulte roles/resourcemanager.projectIamAdmin em Noções básicas sobre papéis.

Se tiver as permissões necessárias, você mesmo poderá conceder os papéis. Caso contrário, outra pessoa na sua organização precisará conceder esses papéis para você.

Como usar gkeadm para criar automaticamente contas de serviço

Nesta página, mostramos como criar contas de serviço manualmente e conceder papéis a elas. Como alternativa a executar essas etapas manualmente, é possível que a ferramenta de linha de comando gkeadm crie algumas contas de serviço e conceda papéis quando você criar uma estação de trabalho de administrador. Mesmo que você permita que o gkeadm crie contas de serviço, é necessário criar manualmente a conta de serviço de acesso a componentes e conceder os papéis do IAM necessários, conforme descrito na próxima seção. Para mais informações sobre as contas de serviço que o gkeadm pode criar, consulte Como criar sua estação de trabalho de administrador.

Conta de serviço de acesso a componentes

O Google Distributed Cloud usa essa conta de serviço para fazer o download de componentes do cluster, em seu nome, 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 projeto Google Cloud que você quer que seja o projeto pai da sua conta de serviço.

  2. Encontre o endereço de e-mail da conta de serviço de acesso a componentes recém-criada:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Criar uma chave JSON para 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 e-mail da conta de serviço de acesso a componentes.

Conceder papéis à sua conta de serviço de acesso a componentes

Sua conta de serviço de acesso a componentes precisa receber os seguintes papéis do IAM no projeto. Estes papéis são necessários para que o Google Distributed Cloud possa fazer verificações de simulação:

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

Para conceder os papéis:

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 host da frota. Ele pode ser o mesmo projeto em que a conta de serviço foi criada ou um projeto diferente. O ID do projeto especificado aqui precisa ser o mesmo que você especifica ao conceder papéis do IAM à conta de serviço connect-register e à conta de serviço logging-monitoring.

Conta de serviço connect-register

O Google Distributed Cloud usa essa conta de serviço para registrar seus clusters em uma 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 projetoGoogle Cloud que você quer ser o pai da conta de serviço do connect-register.

  2. Consiga o endereço de e-mail da conta de serviço connect-register recém-criada:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crie uma chave JSON para sua conta de serviço do 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 e-mail da conta de serviço do connect-register.

  4. Conceda o papel 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 especificado aqui precisa ser o mesmo que você especifica ao conceder papéis do IAM à conta de serviço de acesso a componentes e à conta de serviço de monitoramento de registros.

Conta de serviço logging-monitoring

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

  1. Crie uma conta de serviço de monitoramento de registros:

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

    Substitua PROJECT_ID pelo ID do projetoGoogle Cloud que você quer que seja o pai da sua conta de serviço de monitoramento de registros.

  2. Consiga o endereço de e-mail da conta de serviço de logging-monitoring recém-criada:

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

    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 e-mail da conta de serviço de monitoramento de registros.

Conceder papéis à conta de serviço de monitoramento de registros

Sua conta de serviço de monitoramento de registros precisa receber os seguintes papéis no seu projeto:

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

Para conceder os papéis necessários à conta de serviço de monitoramento de registros:

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 especificado aqui precisa ser o mesmo que você especifica ao conceder papéis do IAM à conta de serviço de acesso ao componente e à conta de serviço de conexão e registro.

Contas de serviço opcionais

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

Conta de serviço do Audit Logging

O Google Distributed Cloud usa essa conta de serviço para enviar registros de auditoria do Kubernetes do cluster para os Registros de auditoria do Cloud.

Se você planeja criar clusters com o cluster avançado ativado, (que é necessário para configurar domínios de topologia), use a conta de serviço e a chave de monitoramento de registros para o registro de auditoria em vez de criar outra conta de serviço.

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

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

    Substitua PROJECT_ID pelo ID do projetoGoogle Cloud que você quer que seja o pai da conta de serviço de registro de auditoria.

  2. Consiga o endereço de e-mail da conta de serviço de registro de auditoria recém-criada:

    gcloud iam service-accounts list \
        --project PROJECT_ID
    
  3. Crie uma chave JSON para sua conta de serviço de geração de registro 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 e-mail da conta de serviço de geração de registro de auditoria.

Não é necessário conceder papéis à conta de serviço de registro de auditoria.

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

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

Para informações sobre como criar uma conta de serviço de autorização binária, consulte Autorização binária no GKE On-Prem.

A seguir

Criar uma estação de trabalho de administrador