Funções e autorizações para um ponto final HTTP interno numa rede de VPC

Este documento mostra como conceder funções e autorizações do Identity and Access Management (IAM) para suportar eventos de encaminhamento de Google Cloud para um ponto final HTTP interno numa rede da nuvem privada virtual (VPC) através do Eventarc.

  1. Conceda autorizações ao nível do projeto ao principal que invoca as APIs Eventarc (por exemplo, o criador do acionador do Eventarc):

    1. A função Eventarc Admin permite-lhe ter controlo total sobre todos os recursos do Eventarc, incluindo a especificação de uma conta de serviço para o acionador quando o cria.
    2. A função utilizador da conta de serviço permite que um principal use a identidade e use uma conta de serviço. A conta de serviço está associada a um acionador do Eventarc e representa a identidade do acionador.
  2. Conceda autorizações de acionadores do Eventarc à conta de serviço do acionador: A função Recetor de eventos do Eventarc permite que o acionador do Eventarc receba eventos de fornecedores de eventos. Não precisa de conceder a função se estiver a encaminhar eventos diretos do Cloud Pub/Sub.

  3. Conceda autorizações aos agentes de serviços Google:

    1. Se o URI do ponto final HTTP interno usar o nome DNS interno de um serviço resolvível pelo Cloud DNS, conceda a função Cloud DNS Peer.
    2. Se estiver a criar um acionador para eventos diretos do Cloud Storage, conceda a função de Publicador do Pub/Sub.
    3. Se ativou o agente de serviço do Cloud Pub/Sub a 8 de abril de 2021 ou antes, conceda a função Criador de tokens de conta de serviço.

Para mais informações sobre a concessão de funções de IAM, consulte o artigo Gerir acesso. Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Conceda autorizações ao nível do projeto

Se for o criador do projeto, é-lhe atribuída a função básica de proprietário (roles/owner). Por predefinição, esta função inclui as autorizações necessárias para acesso total à maioria dosGoogle Cloud recursos. Caso contrário, as funções necessárias têm de ser concedidas por um administrador no recurso adequado ao principal adequado (também conhecido como membro).

Por exemplo, um principal pode ser uma Conta Google (para utilizadores finais) ou uma conta de serviço (para aplicações e cargas de trabalho de computação). Cada principal tem o seu próprio identificador, que é normalmente um endereço de email.

  1. A função de administrador do Eventarc (roles/eventarc.admin) permite-lhe ter controlo total sobre todos os recursos do Eventarc.

    Conceda a função no projeto:

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

    Substitua o seguinte:

    • PROJECT_ID: o ID do seu Google Cloud projeto.
    • PRINCIPAL: um identificador do criador do acionador que normalmente tem o seguinte formato: PRINCIPAL_TYPE:ID. Por exemplo, user:my-user@example.com. Para ver uma lista completa dos valores PRINCIPAL_TYPE possíveis, consulte a referência de associação de políticas.
  2. A função de utilizador da conta de serviço (roles/iam.serviceAccountUser) permite que um principal execute operações como uma conta de serviço.

    Por exemplo, precisa desta função para poder associar uma conta de serviço gerida pelo utilizador a um acionador do Eventarc. Também precisa desta função para poder atuar como a conta de serviço de tempo de execução quando implementar um serviço do Cloud Run. Para mais informações, consulte o artigo Roubo de identidade de contas de serviço.

    Pode conceder a função no projeto para permitir que o principal se faça passar por várias contas de serviço ou conceder a função na conta de serviço para permitir que o principal se faça passar apenas por uma conta de serviço específica.

    Conceda a função no projeto:

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

    Em alternativa, conceda a função 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 o seguinte:

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

Conceda autorizações do acionador do Eventarc

Cada acionador do Eventarc está associado a uma conta de serviço do IAM no momento em que o acionador é criado. Pode especificar uma conta de serviço gerida pelo utilizador que o acionador usa como identidade predefinida. Se não especificar uma conta de serviço durante a criação do acionador, o acionador usa a conta de serviço predefinida do Compute Engine para a sua identidade.

Recomendamos que crie a sua própria conta de serviço gerida pelo utilizador para ter maior controlo e flexibilidade na gestão do seu acionador.

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

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

    Substitua o seguinte:

    • SERVICE_ACCOUNT_NAME: o nome da conta de serviço. Este nome é apresentado no endereço de email que identifica a conta de serviço.
    • DESCRIPTION: uma descrição opcional da conta de serviço
    • DISPLAY_NAME: um nome da conta de serviço a apresentar na consola Google Cloud
  2. Conceda a função Eventarc Event Receiver (roles/eventarc.eventReceiver) no projeto à conta de serviço associada ao acionador do Eventarc para que o acionador possa receber eventos de fornecedores de eventos.

    Tenha em atenção que não precisa de conceder a função Eventarc Event Receiver se estiver a encaminhar 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 sua conta de serviço que anotou no passo anterior.

Conceda autorizações a agentes de serviço

Alguns Google Cloud serviços têm agentes de serviço que permitem que os serviços acedam aos seus recursos. Se uma API exigir um agente de serviço, a Google cria o agente de serviço depois de ativar e usar a API.

  1. Se o URI do ponto final HTTP interno na rede VPC usar o nome DNS interno de um serviço resolvível pelo Cloud DNS, para aceder a redes de destino com zonas de peering de DNS, conceda a função de par de DNS (roles/dns.peer) no projeto anfitrião da VPC ao agente do serviço Eventarc:

    gcloud projects add-iam-policy-binding VPC_HOST_PROJECT_ID \
        --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com \
        --role=roles/dns.peer

    Substitua o seguinte:

    • VPC_HOST_PROJECT_ID: o ID do Google Cloud projeto anfitrião da VPC. Quando usa a VPC partilhada, anexa um ou mais projetos de serviço ao projeto anfitrião, o que permite que os recursos de vários projetos se liguem a uma rede VPC comum.

      Tenha em atenção que, consoante a forma como configurou a rede VPC, o projeto anfitrião da VPC também pode ser o projeto de acionador do Eventarc.

    • PROJECT_NUMBER: o número do projeto Google Cloud do projeto do acionador do Eventarc. Pode encontrar o número do projeto na página Boas-vindas da consola do Google Cloud Google Cloud ou executando o seguinte comando:

      gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  2. Se estiver a criar um acionador para eventos diretos do Cloud Storage, para suportar a publicação de mensagens num tópico, conceda a função de publicador do Pub/Sub (roles/pubsub.publisher) no projeto ao agente do 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 seu Google Cloud número do projeto. Pode encontrar o número do projeto na página Boas-vindas da Google Cloud consola ou executando o seguinte comando:

    gcloud projects describe PROJECT_ID --format='value(projectNumber)'
  3. Se ativou o agente do serviço Cloud Pub/Sub a 8 de abril de 2021 ou antes, para suportar pedidos push do Pub/Sub autenticados, conceda a função Criador de tokens de contas de serviço (roles/iam.serviceAccountTokenCreator) no projeto ao agente do serviço Pub/Sub. Caso contrário, esta função é concedida por predefinição:

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

O que se segue?