Oferecer suporte a uma conta de serviço entre projetos

Cada gatilho do Eventarc está associado a uma conta de serviço do Identity and Access Management (IAM) no momento em que o gatilho é criado. O gatilho usa a conta de serviço como identidade padrão.

Por padrão, não é possível criar uma conta de serviço do IAM em um projeto do Google Cloud e anexá-la a um recurso em outro projeto. No entanto, você talvez tenha centralizado as contas de serviço da sua organização em projetos separados, o que pode facilitar o gerenciamento delas. Este documento descreve as etapas necessárias para oferecer suporte à anexação de uma conta de serviço em um projeto a um gatilho do Eventarc em outro projeto.

Se você não tiver a permissão para realizar essas etapas, peça a um administrador para concluí-las.

Ativar o uso de contas de serviço entre projetos

Realize as etapas a seguir no projeto da conta de serviço.

  1. No console do Google Cloud, acesse a página Políticas da organização.

    Acesse as políticas da organização

  2. Se a política Desativar o uso da conta de serviço entre projetos estiver sendo aplicada, você precisará desativá-la.

    Para mais informações, consulte Ativar a vinculação de contas de serviço entre projetos.

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

Conceder permissões para autenticação da conta de serviço

Os principais podem usar contas de serviço para a autenticação de algumas maneiras diferentes. Cada tipo de autenticação requer que o principal tenha permissões específicas do IAM na conta de serviço. Para mais informações, consulte Papéis para a autenticação da conta de serviço.

  1. Conceda o papel do IAM de Criador de token da conta de serviço (roles/iam.serviceAccountTokenCreator) ao agente de serviço do Eventarc do projeto do Google Cloud contendo o gatilho. Isso permite que o agente de serviço gerencie o acesso entre projetos para a conta de serviço. Um agente de serviço é a identidade de um determinado serviço do Google Cloud para um projeto específico. Para mais informações, consulte Agentes de serviço.

    Console

    1. No console do Google Cloud, acesse a página Contas de serviço.

      Acesse as Contas de serviço

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

    3. Clique no endereço de e-mail da conta de serviço que você criou anteriormente.

    4. Clique na guia Permissões.

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

    6. No campo Novos principais, insira o endereço de e-mail do agente de serviço do Eventarc.

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

      Substitua EVENTARC_PROJECT_NUMBER pelo número do projeto do Google Cloud contendo o gatilho.

    7. Clique em Adicionar outro papel.

    8. Na lista Selecionar papel, filtre por Criador de token de conta de serviço e selecione o papel.

    9. Clique em Salvar.

    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:

    • SERVICE_ACCOUNT_NAME: o nome da sua conta de serviço
    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto do Google Cloud proprietário da conta de serviço
    • EVENTARC_PROJECT_NUMBER: o número do projeto do Google Cloud contendo o gatilho
  2. Conceda o papel de Usuário da conta de serviço (roles/iam.serviceAccountUser) do IAM a todos os principais que criam gatilhos, por exemplo, o agente de serviço do Eventarc do projeto do Google Cloud contendo o gatilho. Esse papel predefinido contém a permissão iam.serviceAccounts.actAs, que é necessária para anexar uma conta de serviço a um recurso.

    Console

    Conceda o papel no projeto para permitir que o principal represente várias contas de serviço:

    1. No console do Google Cloud, abra a página IAM.

      Acesse IAM

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

    3. Clique em Conceder acessoa .

    4. No filtro Novos principais, insira o endereço de e-mail do principal.

    5. Na lista Selecionar papel, filtre por Usuário da conta de serviço e selecione o papel.

    6. Clique em Salvar.

    Como alternativa, conceda o papel na conta de serviço para permitir que o principal represente apenas uma conta de serviço específica:

    1. No console do Google Cloud, acesse a página Contas de serviço.

      Acesse as Contas de serviço

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

    3. Clique no endereço de e-mail da conta de serviço que você criou anteriormente.

    4. Clique na guia Permissões.

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

    6. No filtro Novos principais, insira o endereço de e-mail do principal.

    7. Clique em Adicionar outro papel.

    8. Na lista Selecionar papel, filtre por Usuário da conta de serviço e selecione o papel.

    9. Clique em Salvar.

    gcloud

    Execute o comando gcloud projects add-iam-policy-binding e conceda o papel no projeto para permitir que o principal represente várias contas de serviço:

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

    Ou execute o comando gcloud iam service-accounts add-iam-policy-binding e conceda o papel na conta de serviço para permitir que o principal represente apenas 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:

    • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto do Google Cloud proprietário da conta de serviço
    • PRINCIPAL: um identificador para o criador do gatilho no formato user|group|serviceAccount:email ou domain:domain. 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. Exemplo:

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

      Em que:

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

Conceder permissões para oferecer suporte ao roteamento de eventos

Antes de criar um gatilho do Eventarc, é preciso conceder outras permissões do IAM para aceitar eventos de roteamento usando o Eventarc.

  1. Conceda as permissões apropriadas com base nos recursos que o gatilho do Eventarc precisa acessar para realizar o trabalho, bem como no provedor e no destino do evento. Para mais informações, consulte Todos os papéis e permissões.

  2. Crie o gatilho usando a conta de serviço entre projetos.

A seguir