Suporte uma conta de serviço entre projetos

Cada acionador do Eventarc está associado a uma conta de serviço da gestão de identidade e de acesso (IAM) no momento em que o acionador é criado. O acionador usa a conta de serviço como identidade predefinida.

Por predefinição, não pode criar uma conta de serviço de IAM num Google Cloud projeto e anexá-la a um recurso noutro projeto. No entanto, pode ter centralizado as contas de serviço da sua organização em projetos separados, o que pode facilitar a gestão das contas de serviço. Este documento descreve os passos necessários para suportar a anexação de uma conta de serviço num projeto a um acionador do Eventarc noutro projeto.

Se não tiver as autorizações para realizar estes passos, peça a um administrador para os concluir.

Ative a utilização de contas de serviço em vários projetos

Conclua os seguintes passos no projeto da conta de serviço.

  1. Na Google Cloud consola, aceda à página Políticas de organização.

    Aceda às políticas da organização

  2. Se a política Desativar utilização da conta de serviço entre projetos estiver aplicada, tem de a desativar.

    Para mais informações, consulte o artigo Ative a associação de contas de serviço a vários projetos.

  3. Crie a sua conta de serviço e anote o nome.

Conceda autorizações para a autenticação da conta de serviço

Os principais podem usar contas de serviço para fazer a autenticação de algumas formas diferentes. Cada tipo de autenticação requer que o principal tenha autorizações de IAM específicas na conta de serviço. Para mais informações, consulte o artigo Funções para autenticação de contas de serviço.

  1. Conceda a função de IAM de criador de tokens de contas de serviço (roles/iam.serviceAccountTokenCreator) ao agente de serviço do Eventarc do projeto que contém o acionador. Google Cloud Isto permite que o agente do serviço faça a gestão do acesso entre projetos para a conta de serviço. Um agente de serviço é a identidade de um determinado serviço para um projeto específico. Google Cloud Para mais informações, consulte o artigo Agentes de serviços.

    Consola

    1. Na Google Cloud consola, aceda à página Contas de serviço.

      Aceda a Contas de serviço

    2. Selecione o projeto proprietário da conta de serviço que vai anexar ao acionador do Eventarc.

    3. Clique no endereço de email da conta de serviço que criou anteriormente.

    4. Clique no separador Autorizações.

    5. Na secção Membros com acesso a esta conta de serviço, clique em Conceder acesso.

    6. No campo Novos membros, introduza o endereço de email do agente de serviço do Eventarc:

      service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

      Substitua EVENTARC_PROJECT_NUMBER pelo Google Cloud número do projeto que contém o acionador.

    7. Clique em Adicionar outra função.

    8. Na lista Selecionar uma função, filtre por Criador de tokens de contas de serviços e, de seguida, selecione a função.

    9. Clique em Guardar.

    gcloud

    Execute o comando gcloud iam service-accounts add-iam-policy-binding:

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member='serviceAccount:service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com' \
        --role='roles/iam.serviceAccountTokenCreator'

    Substitua o seguinte:

    • SERVICE_ACCOUNT_NAME: o nome da sua conta de serviço
    • SERVICE_ACCOUNT_PROJECT_ID: o Google Cloud ID do projeto proprietário da conta de serviço
    • EVENTARC_PROJECT_NUMBER: o Google Cloud número do projeto que contém o acionador
  2. Conceda a função de IAM utilizador da conta de serviço (roles/iam.serviceAccountUser) a todos os responsáveis que criam acionadores, por exemplo, o agente de serviço do Eventarc do projeto que contém o acionador. Google Cloud Esta função predefinida contém a autorização iam.serviceAccounts.actAs, que é necessária para anexar uma conta de serviço a um recurso.

    Consola

    Conceda a função no projeto para permitir que o principal se faça passar por várias contas de serviço:

    1. Na Google Cloud consola, aceda à página IAM.

      Aceda ao IAM

    2. Selecione o projeto proprietário da conta de serviço.

    3. Clique em Conceder acesso.

    4. No campo Novos membros, introduza o endereço de email do membro.

    5. Na lista Selecionar uma função, filtre por Utilizador da conta de serviço e, em seguida, selecione a função.

    6. Clique em Guardar.

    Em alternativa, conceda 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:

    1. Na Google Cloud consola, aceda à página Contas de serviço.

      Aceda a Contas de serviço

    2. Selecione o projeto proprietário da conta de serviço.

    3. Clique no endereço de email da conta de serviço que criou anteriormente.

    4. Clique no separador Autorizações.

    5. Na secção Membros com acesso a esta conta de serviço, clique em Conceder acesso.

    6. No campo Novos membros, introduza o endereço de email do membro.

    7. Clique em Adicionar outra função.

    8. Na lista Selecionar uma função, filtre por Utilizador da conta de serviço e, em seguida, selecione a função.

    9. Clique em Guardar.

    gcloud

    Execute o comando gcloud projects add-iam-policy-binding e conceda a função no projeto para permitir que o principal se faça passar por várias contas de serviço:

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

    Em alternativa, execute o comando gcloud iam service-accounts add-iam-policy-binding e conceda 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:

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \
        --member=PRINCIPAL \
        --role='roles/iam.serviceAccountUser'

    Substitua o seguinte:

    • SERVICE_ACCOUNT_PROJECT_ID: o Google Cloud ID do projeto proprietário da conta de serviço
    • PRINCIPAL: um identificador do criador do acionador no formato user|group|serviceAccount:email ou domain:domain. Por exemplo:
      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain:example.domain.com m
    • SERVICE_ACCOUNT_RESOURCE_NAME: o nome completo do recurso da conta de serviço. Por exemplo:

      projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com

      Onde:

      • SERVICE_ACCOUNT_PROJECT_ID é o ID do projeto proprietário da conta de serviçoGoogle Cloud
      • SERVICE_ACCOUNT_NAME é o nome da sua conta de serviço

Conceda autorizações para suportar o encaminhamento de eventos

Antes de criar um acionador do Eventarc, tem de conceder outras autorizações do IAM para suportar o encaminhamento de eventos através do Eventarc.

  1. Conceda as autorizações adequadas com base nos recursos aos quais o acionador do Eventarc tem de aceder para fazer o seu trabalho, bem como no fornecedor e no destino de eventos. Para mais informações, consulte o artigo Todas as funções e autorizações.

  2. Crie o seu acionador com a conta de serviço entre projetos.

O que se segue?