Preparar-se para as próximas mudanças de autorização

O Application Integration está atualizando a forma como as integrações são autorizadas. Essas mudanças entrarão em vigor em breve. A maioria das integrações continuará sendo executada sem mudanças, enquanto algumas integrações exigem uma mudança de configuração para continuar sendo executadas. Tudo o que é descrito nesta página usa uma configuração que você já controla. Portanto, é possível fazer essas mudanças agora.

Próximas mudanças de autorização

O Application Integration está atualizando a forma como processa identidades para execuções de integração. Cada execução agora precisa ter uma identidade explícita, atuando como uma das seguintes:

  • O usuário que acionou a execução. Os sistemas chamados aplicam as permissões de acesso desse usuário.
  • Uma conta de serviço de execução. Você controla, define o escopo e audita essa conta como qualquer outra conta de serviço no seu projeto na nuvem do Google Cloud.

Devido a essa atualização:

  • Para executar uma integração, você precisa de permissão para atuar como a conta de serviço de execução.
  • Se nenhuma das identidades estiver disponível, a execução da integração falhará.

Antes de começar

Conclua as tarefas a seguir em ordem. Faça a primeira primeiro, porque as outras duas terminam em uma publicação, e a publicação em si é verificada por permissão.

  1. Conceda o usuário da conta de serviço em cada conta de serviço de execução que você já usa, para todos que executam, aprovam, editam ou publicam a integração, incluindo as contas de serviço usadas pela automação.
  2. Defina uma conta de serviço de execução em integrações que são executadas sem uma pessoa e não têm uma.
  3. Conceda o usuário da conta de serviço na conta de serviço nomeada em cada perfil de autenticação do tipo Conta de serviço ou Token OIDC. Geralmente, essas são contas diferentes da sua conta de serviço de execução.

Integrações que exigem uma conta de serviço de execução

Determinar se uma integração precisa de uma

Você só precisa de uma conta de serviço de execução quando as credenciais de ninguém estão disponíveis para toda a execução. Isso acontece em duas situações, e apenas duas:

Como a integração é executada As credenciais de alguém estão disponíveis? Precisa de uma conta de serviço de execução?
Síncrono : alguém inicia e aguarda o resultado Sim, para toda a execução Não
Assíncrono : é enfileirado e concluído mais tarde Somente no momento em que é acionado Sim
Não assistido : uma programação ou um evento inicia Não, nunca há uma pessoa Sim

Identificar integrações afetadas

Primeiro, ela é executada sem uma pessoa? Isso acontece se alguma destas condições for verdadeira:

Em segundo lugar, a conta de serviço de execução está vazia? Para listar todas as versões publicadas em uma região ao lado da conta de serviço de execução, execute o seguinte comando:

curl -s -G -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  --data-urlencode "filter=state=ACTIVE" \
  --data-urlencode "pageSize=1000" \
  "https://REGION-integrations.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/integrations/-/versions" \
| jq -r '.integrationVersions[]
         | [ .name, (.runAsServiceAccount // "NONE") ]
         | @tsv'

Substitua:

  • REGION: a região da sua integração. Para conferir a lista de regiões compatíveis, consulte Locais.
  • PROJECT_ID: o ID do seu projeto do Google Cloud
  • Uma linha que mostra NONE precisa de ação somente se a primeira metade também se aplicar a ela também.
  • Para verificar uma única integração, abra-a no Google Cloud console e consulte o Resumo da integração painel na barra de ferramentas de integração.

Atualizar suas integrações

Conceder o usuário da conta de serviço

Para conceder o papel a alguém, execute o seguinte comando:

gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT \
    --project=SERVICE_ACCOUNT_PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='roles/iam.serviceAccountUser'

Substitua:

  • SERVICE_ACCOUNT: o endereço de e-mail da conta de serviço de execução ou da conta nomeada em um perfil de autenticação
  • SERVICE_ACCOUNT_PROJECT_ID: o ID do projeto que é proprietário da conta de serviço
  • PRINCIPAL: o endereço de e-mail do usuário

Para outros tipos principais, use o prefixo --member correspondente:

  • Grupos:use group:. Recomendamos usar os Grupos do Google em vez de contas de usuários individuais para simplificar o gerenciamento de acesso à medida que os membros da equipe mudam.
  • Contas de serviço: use serviceAccount: para processos automatizados e aplicativos.

Para fazer o mesmo no Google Cloud console:

  1. Acesse IAM e administrador > Contas de serviço.
  2. Selecione a conta de serviço.
  3. Clique em Permissões > Conceder acesso.

Para mais informações, consulte Gerenciar o acesso a contas de serviço.

Definir uma conta de serviço de execução

  1. Escolha ou crie a conta de serviço e conceda a ela os papéis de que as tarefas da integração's precisam nos recursos que elas tocam. Para descobrir o que conceder, consulte os papéis que o agente de serviço do Application Integration do seu projeto, service-PROJECT_NUMBER@gcp-sa-integrations., tem hoje e conceda à nova conta apenas a parte que essa integração usa.
  2. Conceda o usuário da conta de serviço a todos que executam, aprovam, editam ou publicam a integração, incluindo qualquer automação.
  3. Abra a integração e defina a conta de serviço no Resumo da integração painel na barra de ferramentas de integração.
  4. Publique a integração. Para mais informações, consulte Testar e publicar integrações.

O Google Cloud recomenda o uso de uma conta de serviço dedicada e com escopo mínimo para cada integração, em vez de uma conta amplamente privilegiada compartilhada entre todas elas, porque ela faz o seguinte:

  • Contém o efeito de qualquer integração.
  • Aparece pelo nome nos registros de auditoria.

Para mais informações, consulte Práticas recomendadas para trabalhar com contas de serviço.

Resolver problemas de permissões ausentes

Uma ação negada tem uma de duas causas, e vale a pena diferenciá-las:

  • A conta de serviço de execução : você não pode atuar como ela ou ela não pode alcançar o que uma tarefa precisa.
  • Seu próprio papel do IAM : você não tem permissão para realizar a ação de forma alguma.

Ambas as verificações se aplicam. Portanto, corrigir uma não corrige a outra.

Erros de conta de serviço de execução

Situação Você verá o seguinte: O que fazer
Alguém aciona uma integração, mas não pode atuar como a conta de serviço de execução O acionador é rejeitado com PERMISSION_DENIED. A verificação é executada antes que a execução seja enfileirada. Portanto, nada aparece nos registros de execução. Parece que nada aconteceu, em vez de uma tarefa com falha. Conceda o usuário da conta de serviço a quem a aciona
Uma execução sem credenciais de usuário não tem uma conta de serviço de execução Os conectores, a chamada de endpoint REST e as tarefas de funções do Cloud Run falham em relação ao que estão tentando alcançar. Na publicação: The integration is missing run-as service account since governance is enabled for your project. Definir uma conta de serviço de execução
Uma tarefa usa um perfil de autenticação cuja conta de serviço o autor da chamada não pode atuar como Essa tarefa é negada enquanto o restante da execução continua: You do not have permission to use Auth Config ID because you cannot act as its service account: SERVICE_ACCOUNT. Conceda o usuário da conta de serviço na conta nomeada em o perfil
Um aprovador não pode atuar como a conta de serviço de execução O processo de aprovação falha silenciosamente sem gerar um erro visível. A execução permanece pausada até expirar. Portanto, o que você percebe é que as aprovações parecem ter parado de funcionar Conceda o usuário da conta de serviço a todos que possam aprovar
Alguém edita ou publica uma integração sem a permissão Publisher does not have required permission to publish integration with service account: SERVICE_ACCOUNT. Tudo o que já foi publicado continua sendo executado. Se a automação publicar para você, isso aparecerá no pipeline de implantação em vez de no console Conceda o usuário da conta de serviço a editores, editores, e automação
Uma tarefa é executada como a pessoa que a acionou, e essa pessoa não pode acessar o recurso A execução começa normalmente, e uma tarefa falha ao nomear um recurso, mesmo que nada sobre a integração tenha mudado Conceda acesso ao recurso a essas pessoas ou mova a integração para uma conta de serviço de execução que já a tenha. Geralmente, essa é a melhor resposta, porque impede que o acesso da integração varie com quem a executa

Para conferir a lista completa de códigos de erro do Application Integration, consulte Códigos de erro.

Erros de papel do IAM

Além da conta de serviço de execução, o Application Integration verifica as permissões do IAM do usuário para cada ação. Se você encontrar um PERMISSION_DENIED erro ao interagir com uma integração ou se os registros de execução não forem carregados, verifique se você tem um papel que concede as permissões necessárias:

Para fazer isso Você precisa de um destes papéis
Ver e abrir integrações roles/integrations.integrationViewer
Ver registros e detalhes de execução roles/integrations.integrationViewer ou roles/integrations.integrationInvoker
Executar uma integração roles/integrations.integrationInvoker ou roles/integrations.integrationEditor
Criar e editar integrações roles/integrations.integrationEditor
Publicar uma integração roles/integrations.integrationDeployer ou roles/integrations.integrationEditor
Aprovar ou retomar uma execução suspensa roles/integrations.suspensionResolver ou roles/integrations.integrationAdmin
Acesso total a todas as integrações roles/integrations.integrationAdmin

Para conceder um papel, execute o seguinte comando:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member='user:PRINCIPAL' \
    --role='ROLE'

Para ver mais informações, consulte os seguintes tópicos:

Dúvidas comuns

Concedi o papel e ele ainda falha. O que está faltando?

  • A concessão foi para o projeto errado. Ela precisa ser feita no projeto que é proprietário da conta de serviço, que não é necessariamente o proprietário da integração.
  • Ainda não entrou em vigor. Aguarde alguns minutos. As decisões de autorização são armazenadas em cache brevemente, além do atraso normal de propagação do IAM.
  • Há uma segunda conta de serviço envolvida. A conta de serviço de execução e a conta de serviço de cada perfil de autenticação são separadas, e ambas precisam da concessão.
  • O bloco é seu próprio papel, não a conta de serviço. O usuário da conta de serviço é sobre se você pode atuar como a conta de serviço de execução. Um papel do IAM separado governa se você tem permissão para realizar a ação. Consulte Erros de papel do IAM.

Por que o papel de invocador de integração não é mais suficiente?

Ele ainda permite que você execute a integração. O que ele nunca fez foi permitir que você atuasse como a conta de serviço em que a integração é executada, e é isso que decide quanto acesso a execução recebe. Nenhum dos papéis a seguir concede iam.serviceAccounts.actAs. Portanto, é sempre uma concessão separada:

  • roles/integrations.integrationAdmin
  • roles/integrations.integrationEditor
  • roles/integrations.integrationInvoker

Minha integração só é executada de forma síncrona. Preciso de uma conta de serviço de execução?

Não. Uma execução síncrona já tem uma identidade: a pessoa que a acionou. Consulte Determinar se uma integração precisa de uma.

Nada é sinalizado no console. Estou seguro?

Não necessariamente. Os avisos dependem parcialmente das execuções observadas. Portanto, uma integração em uma programação infrequente ou uma que ninguém acionou recentemente pode precisar de ação sem mostrar um aviso. Trabalhe com integrações que exigem uma conta de serviço de execução em vez de ler um console silencioso como um tudo bem.

A seguir