Controle de acesso

Os pipelines do AI Platform dependem dos papéis do Gerenciamento de identidade e acesso (IAM) para autorizar usuários, grupos e serviços quando os pipelines de machine learning (ML) acessam recursos do Google Cloud.

Este documento descreve os papéis necessários para:

Saiba mais sobre os conceitos do IAM e como ele funciona.

Papéis necessários para configurar o AI Platform Pipelines

Para implantar o AI Platform Pipelines, você precisa receber os papéis de leitor (roles/viewer) e administrador do Kubernetes Engine (roles/container.admin) no projeto. O papel de leitor fornece acesso de leitura a todos os recursos em um projeto. O papel de administrador do Kubernetes Engine fornece acesso total aos clusters do Kubernetes e aos objetos da API Kubernetes.

Para seguir o princípio do menor privilégio, configure o cluster do AI Platform Pipelines para usar o acesso granular. Para configurar o cluster com acesso granular, você também precisa receber o papel de administrador da conta de serviço (roles/iam.serviceAccountAdmin) no projeto. O papel de Administrador da conta de serviço fornece acesso para criar e configurar contas de serviço do IAM.

Saiba mais sobre como conceder acesso a papéis do IAM.

Role Nome Descrição Permissões
roles/viewer Leitor Permissões para ações somente leitura que não afetam o estado, como ver (mas não modificar) recursos ou dados em um projeto.
roles/container.admin 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 nos nós, você também precisa ter o papel de usuário da conta de serviço (roles/iam.serviceAccountUser) na conta de serviço padrão do Compute Engine.

  • container.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
roles/iam.serviceAccountAdmin Administrador da conta de serviço Criar e gerenciar contas de serviço.
  • iam.serviceAccounts.create
  • iam.serviceAccounts.delete
  • iam.serviceAccounts.disable
  • iam.serviceAccounts.enable
  • iam.serviceAccounts.get
  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.list
  • iam.serviceAccounts.setIamPolicy
  • iam.serviceAccounts.undelete
  • iam.serviceAccounts.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Papéis necessários para executar o AI Platform Pipelines com uma conta de serviço gerenciada pelo usuário

Os pods em um cluster do Google Kubernetes Engine (GKE) são autenticados no Google Cloud usando a conta de serviço do cluster do GKE. Para facilitar a configuração e o uso do AI Platform Pipelines, os clusters do GKE criados pelo AI Platform Pipelines usam a conta de serviço padrão do Compute Engine com o escopo de acesso https://www.googleapis.com/auth/cloud-platform. Esse escopo de acesso fornece acesso total aos recursos e APIs do Google Cloud que você ativou no projeto, o que pode fornecer às cargas de trabalho no cluster acesso excessivo ao Google Cloud.

Para atribuir permissões granulares às cargas de trabalho executadas no cluster do AI Platform Pipelines, crie uma conta de serviço para o cluster e conceda a ela acesso aos seguintes papéis no projeto:

  • Leitor do Monitoring: o papel de leitor do Monitoring (roles/monitoring.viewer) fornece acesso de leitura a dados e configurações de monitoramento.
  • Gravador de métricas do Monitoring: o papel de gravador de métricas do Monitoring (roles/monitoring.metricWriter) fornece acesso de gravação para que o cluster possa gravar métricas.
  • Gravador de registros: o papel de gravador de registros (roles/logging.logWriter) permite que o cluster grave entradas de registro.
  • Leitor de objetos do Storage: se você planeja criar imagens de contêiner personalizadas para os pipelines armazenados no Container Registry, conceda ao cluster do AI Platform Pipelines acesso ao papel de leitor de objetos do Storage (roles/storage.objectViewer) no projeto.

Você também precisa conceder à sua conta de serviço acesso a quaisquer recursos ou APIs do Google Cloud usados pelos pipelines de ML.

Role Nome Descrição Permissões
roles/monitoring.viewer Leitor do Monitoring Dá acesso somente leitura para receber e listar informações sobre todos os dados e configurações de monitoramento.
  • cloudnotifications.*
  • monitoring.alertPolicies.get
  • monitoring.alertPolicies.list
  • monitoring.dashboards.get
  • monitoring.dashboards.list
  • monitoring.groups.get
  • monitoring.groups.list
  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.monitoredResourceDescriptors.*
  • monitoring.notificationChannelDescriptors.*
  • monitoring.notificationChannels.get
  • monitoring.notificationChannels.list
  • monitoring.publicWidgets.get
  • monitoring.publicWidgets.list
  • monitoring.services.get
  • monitoring.services.list
  • monitoring.slos.get
  • monitoring.slos.list
  • monitoring.timeSeries.list
  • monitoring.uptimeCheckConfigs.get
  • monitoring.uptimeCheckConfigs.list
  • opsconfigmonitoring.resourceMetadata.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • stackdriver.projects.get
roles/monitoring.metricWriter Gravador de métricas do Monitoring Dá acesso somente gravação a métricas. Concede exatamente as permissões necessárias para o agente do Cloud Monitoring e outros sistemas que enviam métricas.
  • monitoring.metricDescriptors.create
  • monitoring.metricDescriptors.get
  • monitoring.metricDescriptors.list
  • monitoring.monitoredResourceDescriptors.*
  • monitoring.timeSeries.create
roles/logging.logWriter Gravador de registros Concede permissões para gravar entradas de registro.
  • logging.logEntries.create
roles/storage.objectViewer Leitor de objetos do Storage Dá acesso para visualizar objetos e metadados, exceto ACLs. Também pode listar os objetos em um bucket.
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • storage.objects.get
  • storage.objects.list

Papéis necessários para acessar o AI Platform Pipelines como usuário

Para acessar um cluster do AI Platform Pipelines, cada usuário precisa receber o papel de leitor de cluster do Kubernetes Engine (roles/container.clusterViewer) e o papel de usuário da conta de serviço para a conta de serviço do cluster do Google Kubernetes Engine.

Role Nome Descrição Permissões
roles/container.clusterViewer Leitor de cluster do Kubernetes Engine Acesso para receber e listar clusters do GKE.
  • container.clusters.get
  • container.clusters.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Continue na próxima seção para saber como conceder aos usuários acesso ao papel de leitor de cluster do Kubernetes Engine e ao papel de usuário da conta de serviço.

Conceder acesso ao AI Platform Pipelines a um usuário

Use as instruções a seguir para conceder acesso ao cluster do AI Platform Pipelines a uma conta de usuário.

  1. Abra o AI Platform Pipelines no Console do Google Cloud.

    Acesse o AI Platform Pipelines

  2. Encontre seu cluster do AI Platform Pipelines. Anote o cluster e a zona para usar nas próximas etapas.

  3. Abra uma sessão do Cloud Shell.

    Abra o Cloud Shell

    O Cloud Shell é aberto em um frame na parte inferior do Console do Google Cloud. Use o Cloud Shell para concluir o restante deste processo.

  4. Execute o seguinte comando para definir o projeto do Cloud padrão para esta sessão do Cloud Shell.

    gcloud config set project PROJECT_ID
    

    Substitua PROJECT_ID pelo código do projeto.

  5. Execute o seguinte comando para encontrar a conta de serviço que seu cluster do GKE usa.

    gcloud container clusters describe CLUSTER_NAME --zone ZONE \
    --format="flattened(nodePools[].config.serviceAccount)"
    

    Substitua:

    • CLUSTER_NAME: o nome do cluster do GKE;
    • ZONE: a zona em que o cluster foi criado.

    A resposta pode indicar que o cluster usa uma conta de serviço chamada default. Esse valor se refere à conta de serviço padrão do Compute Engine. Execute o comando a seguir para encontrar o nome completo dessa conta de serviço.

    gcloud iam service-accounts list \
    --filter "compute@developer.gserviceaccount.com"
    

    Saiba mais sobre a conta de serviço padrão do Compute Engine.

  6. Conceda à sua conta de usuário o papel de usuário da conta de serviço na conta de serviço do cluster do GKE.

    gcloud iam service-accounts add-iam-policy-binding \
    SERVICE_ACCOUNT_NAME \
    --member=user:USERNAME \
    --role=roles/iam.serviceAccountUser
    

    Substitua:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço do cluster do GKE, que você encontrou na etapa anterior. Os nomes das contas de serviço são formatados como *@*.gserviceaccount.com;
    • USERNAME: seu nome de usuário no Google Cloud.
  7. Conceda à sua conta de usuário acesso ao papel de leitor de cluster do GKE no projeto.

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member user:USERNAME --role roles/container.clusterViewer
    

    Substitua:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • USERNAME: seu nome de usuário no Google Cloud.