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.
No console do Google Cloud, acesse a página Políticas da organização.
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.
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.
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
No console do Google Cloud, acesse a página Contas de serviço.
Selecione o projeto proprietário da conta de serviço que você vai anexar ao gatilho do Eventarc.
Clique no endereço de e-mail da conta de serviço que você criou anteriormente.
Clique na guia Permissões.
Na seção Principais com acesso a esta conta de serviço, clique em
Conceder acesso.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.Clique em Adicionar outro papel.
Na lista Selecionar papel, filtre por Criador de token de conta de serviço e selecione o papel.
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çoSERVICE_ACCOUNT_PROJECT_ID
: o ID do projeto do Google Cloud proprietário da conta de serviçoEVENTARC_PROJECT_NUMBER
: o número do projeto do Google Cloud contendo o gatilho
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ãoiam.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:
No console do Google Cloud, abra a página IAM.
Selecione o projeto proprietário da conta de serviço.
Clique em Conceder acessoa
.No filtro Novos principais, insira o endereço de e-mail do principal.
Na lista Selecionar papel, filtre por Usuário da conta de serviço e selecione o papel.
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:
No console do Google Cloud, acesse a página Contas de serviço.
Selecione o projeto proprietário da conta de serviço.
Clique no endereço de e-mail da conta de serviço que você criou anteriormente.
Clique na guia Permissões.
Na seção Principais com acesso a esta conta de serviço, clique em
Conceder acesso.No filtro Novos principais, insira o endereço de e-mail do principal.
Clique em Adicionar outro papel.
Na lista Selecionar papel, filtre por Usuário da conta de serviço e selecione o papel.
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çoPRINCIPAL
: um identificador para o criador do gatilho no formatouser|group|serviceAccount:email
oudomain: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çoSERVICE_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.
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.
Crie o gatilho usando a conta de serviço entre projetos.