Papéis e permissões para destinos do Google Kubernetes Engine (GKE)

Neste documento, mostramos como conceder papéis e permissões do Identity and Access Management (IAM) para dar suporte a eventos de encaminhamento usando o Eventarc do Google Cloud e de outras origens para destinos do GKE, incluindo os endpoints públicos de serviços particulares e públicos em execução em um cluster do GKE.

  1. Conceda permissões em todo o projeto ao principal que invoca as APIs Eventarc (por exemplo, o criador do gatilho do Eventarc):

    1. O papel de Administrador do Eventarc oferece controle total sobre todos os recursos do Eventarc, incluindo a especificação de uma conta de serviço para o gatilho quando ele é criado.
    2. O papel Usuário da conta de serviço permite que um principal represente e use uma conta de serviço. A conta de serviço está associada a um gatilho do Eventarc e representa a identidade desse gatilho.
  2. Conceda ao gatilho do Eventarc permissões com relação à conta de serviço do gatilho:

    1. O papel Receptor de eventos do Eventarc permite que o gatilho do Eventarc receba eventos de provedores de eventos. Você não precisa conceder o papel ao fazer o encaminhamento de eventos diretos do Cloud Pub/Sub.
    2. O papel Assinante do Pub/Sub permite que o gatilho do Eventarc consuma mensagens do Pub/Sub e anexe assinaturas a um tópico.
    3. O papel Gravador de métricas do Monitoring permite que o encaminhador de eventos do Eventarc grave métricas usando o Cloud Monitoring e outros sistemas que fornecem métricas.
  3. Conceda permissões aos agentes de serviço do Google:

    1. Ao criar um gatilho para eventos diretos do Cloud Storage, conceda o papel Publicador do Pub/Sub.
    2. Se você tiver ativado o agente de serviço do Cloud Pub/Sub em 8 de abril de 2021 ou antes dessa data, conceda o papel Criador de token da conta de serviço.

Para mais informações sobre como conceder papéis, consulte Gerenciar o acesso. Também é possível receber as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Conceder permissões em todo o projeto

O criador do projeto recebe o papel básico de proprietário (roles/owner). Por padrão, esse papel inclui as permissões necessárias para o acesso total à maioria dos recursos do Google Cloud. Em outros casos, os papéis obrigatórios precisam ser concedidos por um administrador no recurso apropriado para o principal apropriado, também conhecido como membro.

Por exemplo, um principal pode ser uma Conta do Google (para usuários finais) ou uma conta de serviço (para aplicativos e cargas de trabalho de computação). Cada principal tem o próprio identificador, que normalmente é um endereço de e-mail.

  1. O papel de administrador do Eventarc (roles/eventarc.admin) oferece controle total sobre todos os recursos do Eventarc.

    Conceda o papel no projeto:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/eventarc.admin

    Substitua:

    • PROJECT_ID: é seu ID do projeto no Google Cloud.
    • PRINCIPAL: um identificador para o criador do gatilho, que geralmente tem o seguinte formato: PRINCIPAL_TYPE:ID. Por exemplo, user:my-user@example.com. Para conferir uma lista completa dos possíveis valores de PRINCIPAL_TYPE, consulte a Referência de vinculação de políticas.
  2. O papel usuário da conta de serviço (roles/iam.serviceAccountUser) permite que um principal execute operações como uma conta de serviço.

    Ao criar um gatilho do Eventarc, você precisa desse papel para que possa associar uma conta de serviço gerenciada pelo usuário ao gatilho e que representa a identidade dele. Para mais informações, consulte Papéis para a autenticação da conta de serviço.

    Conceda o papel no projeto para permitir que o principal represente várias contas de serviço ou conceda o papel na conta de serviço para permitir que ele represente apenas uma conta de serviço específica.

    Conceda o papel no projeto:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Também é possível conceder o papel na conta de serviço:

    gcloud iam service-accounts add-iam-policy-binding \
        projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member=PRINCIPAL \
        --role=roles/iam.serviceAccountUser

    Substitua:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto do Google Cloud que contém a conta de serviço.
    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço.

Conceder permissões ao gatilho do Eventarc

Cada gatilho do Eventarc é associado a uma conta de serviço do IAM no momento da criação. É possível especificar uma conta de serviço gerenciada pelo usuário a ser usada pelo gatilho como uma identidade padrão. Se você não especificar uma conta de serviço durante a criação do gatilho, ele usará a conta de serviço padrão do Compute Engine como identidade.

Recomendamos que você crie sua própria conta de serviço gerenciada pelo usuário a fim de ter mais controle e flexibilidade ao gerenciar o gatilho.

  1. Crie uma conta de serviço e anote o nome dela:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
        --description="DESCRIPTION" \
        --display-name="DISPLAY_NAME"
    

    Substitua:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço. Esse nome aparece no endereço de e-mail que identifica a conta de serviço.
    • DESCRIPTION: uma descrição opcional do serviço.
    • DISPLAY_NAME: um nome de conta de serviço a ser exibido no Console do Google Cloud
  2. Conceda o papel Receptor de eventos do Eventarc (roles/eventarc.eventReceiver) no projeto à conta de serviço associada ao gatilho do Eventarc para que ela possa receber eventos de provedores de eventos.

    Não é necessário conceder o papel Receptor de eventos do Eventarc ao fazer o encaminhamento de eventos diretos do Cloud Pub/Sub.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/eventarc.eventReceiver
    

    Substitua SERVICE_ACCOUNT_NAME pelo nome da conta de serviço que você anotou na etapa anterior.

  3. Conceda o papel Assinante do Pub/Sub (roles/pubsub.subscriber) no projeto para a conta de serviço associada ao gatilho do Eventarc para que ele possa consumir mensagens do Pub/Sub e anexar assinaturas a um tópico.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/pubsub.subscriber
    

    Substitua SERVICE_ACCOUNT_NAME pelo nome da conta de serviço que você anotou anteriormente.

  4. Conceda o papel Gravador de métricas do Monitoring (roles/monitoring.metricWriter) no projeto à conta de serviço associada ao gatilho do Eventarc para que o encaminhador de eventos do Eventarc possa gravar métricas usando o Cloud Monitoring e outros sistemas que fornecem métricas.

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/monitoring.metricWriter
    

Conceder permissões aos agentes de serviço do Google

Alguns serviços do Google Cloud têm agentes de serviços que permitem que os serviços acessem seus recursos. Se uma API exigir um agente de serviço, o Google criará esse agente depois que você ativar e começar a usar a API.

  1. Se você estiver criando um gatilho para eventos diretos do Cloud Storage, a fim de dar suporte à publicação de mensagens em um tópico, conceda o papel de Publicador do Pub/Sub (roles/pubsub.publisher) no projeto para o agente de serviço do Cloud Storage:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \
        --role=roles/pubsub.publisher

    Substitua PROJECT_NUMBER pelo número do projeto do Google Cloud. Encontre o número do projeto na página Boas-vindas do console do Google Cloud ou executando o seguinte comando:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  2. Se você tiver ativado o agente de serviço do Cloud Pub/Sub em 8 de abril de 2021 ou antes dessa data, a fim de dar suporte a solicitações de push autenticadas do Pub/Sub, conceda o papel de criador de tokens da conta de serviço (roles/iam.serviceAccountTokenCreator) no projeto ao agente de serviço do Pub/Sub. Caso contrário, esse papel será concedido por padrão:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \
        --role=roles/iam.serviceAccountTokenCreator

A seguir