O modo de atuação rigoroso ativa uma verificação de segurança adicional para as seguintes ações do utilizador no Dataform:
- Criar ou atualizar um repositório
- Criar ou atualizar uma configuração de fluxo de trabalho
- Criar uma invocação de fluxo de trabalho
- Atualizar uma configuração de lançamento
Esta verificação de segurança adicional requer que o utilizador que executa estas ações
tenha a autorização iam.serviceAccounts.actAs na conta de serviço efetiva,
que é a conta de serviço cujas credenciais são usadas para executar fluxos de trabalho.
Para mais informações, consulte o artigo
Anexe contas de serviço a recursos.
Pode ativar estas autorizações das seguintes formas:
- Quando cria um repositório
- Quando atualiza um repositório existente com a flag
strict_act_as_checksrepository
Funções necessárias
Para receber as autorizações de que precisa para concluir as tarefas neste documento, peça ao seu administrador que lhe conceda as seguintes funções de IAM:
-
Utilizador da conta de serviço (
roles/iam.serviceAccountUser) na conta de serviço personalizada -
Veja os registos no Logging:
Visualizador de registos (
roles/logging.viewer) no projeto -
Conceda funções da IAM a utilizadores ou contas de serviço:
Administrador da conta de serviço (
roles/iam.serviceAccountAdmin) no projeto
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Valide as autorizações para "agir em nome de" da conta de serviço em vigor
Para garantir que os fluxos de trabalho do Dataform são executados de forma segura e sem interrupções, é importante validar as autorizações de atuação em nome de nas contas de serviço que usam. Esta secção explica como identificar a conta de serviço eficaz para os seus recursos, usar o Cloud Logging para verificar se existem problemas de autorização e, em seguida, resolver os problemas que encontrar.
Determine a conta de serviço eficaz
Pode determinar a conta de serviço efetiva que está a executar os fluxos de trabalho de acordo com o tipo de recurso e as seguintes condições:
| Tipo do recurso | Conta de serviço efetiva |
|---|---|
| Repositórios | Se selecionar uma conta de serviço personalizada quando criar o repositório, é usada a conta de serviço Caso contrário, a predefinição é o agente do serviço Dataform. |
| Configuração do fluxo de trabalho | Pode selecionar uma conta de serviço personalizada quando criar a configuração do fluxo de trabalho. Caso contrário, a predefinição é o agente do serviço Dataform do repositório. |
| Invocações de fluxo de trabalho | Se o resultado da compilação for Se criar uma invocação de fluxo de trabalho a partir de um resultado de compilação, é usada a conta de serviço Caso contrário, a predefinição é o agente do serviço Dataform do repositório. |
Verifique se existem problemas de autorização nos Registos na nuvem
Para melhorar a segurança, o Dataform verifica se a autorização iam.serviceAccounts.actAs está em falta nas contas de serviço usadas pelos recursos do Dataform.
Os resultados destas verificações, incluindo potenciais problemas de autorização, são
registados no Cloud Logging. Deve rever estes registos regularmente para
identificar e conceder as autorizações iam.serviceAccounts.actAs em falta. A verificação destes registos garante que as configurações e os fluxos de trabalho do Dataform continuam a funcionar sem interrupções.
Veja os registos no Cloud Logging
Na Google Cloud consola, aceda à página Explorador de registos.
Selecione o Google Cloud projeto no qual quer verificar os registos.
Use o editor de consultas para filtrar os registos do Dataform
actAscom as seguintes opções:Para listar apenas as verificações
actAsque falharam e requerem ação, use a seguinte consulta:logName: "projects/PROJECT_ID/logs/dataform.googleapis.com%2Factas_dry_run_result" jsonPayload.dryRunResult = falsePara apresentar uma lista de todas as verificações
actAs, use a seguinte consulta:logName: "projects/PROJECT_ID/logs/dataform.googleapis.com%2Factas_dry_run_result"
Substitua
PROJECT_IDpelo seu Google Cloud ID do projeto.Clique em Executar consulta.
Interprete as entradas do registo
Expanda uma entrada de registo nos resultados da consulta para ver os seguintes campos:jsonPayload
| Campo | Tipo | Descrição |
|---|---|---|
dryRunResult |
Booleano | true: a verificação de autorização foi aprovada.false: a verificação falhou. O principal do autor da chamada não tem a autorização iam.serviceAccounts.actAs na conta de serviço. |
caller |
String | O endereço de email do principal (utilizador ou conta de serviço) que iniciou a chamada da API. |
serviceAccount |
String | A conta de serviço que o principal do autor da chamada tentou usar. Este campo está normalmente presente quando o campo dryRunResult é false. |
apiMethod |
String | O método da API Dataform que acionou a verificação, por exemplo, CreateWorkflowInvocation ou UpdateRepository. |
*_context |
Objeto | Um objeto que contém os nomes dos recursos relevantes para o método da API chamado. Para mais informações, consulte o artigo Objetos de contexto. |
Objetos de contexto
A entrada do registo inclui um objeto de contexto nos campos jsonPayload. Os campos neste objeto contêm os nomes dos recursos totalmente qualificados das entidades do Dataform envolvidas. Google Cloud Estes nomes seguem as estruturas padrão apresentadas na lista seguinte, o que lhe permite identificar os recursos com precisão.
create_workflow_invocation_context: presente quando o método da API éCreateWorkflowInvocation.workflowInvocation: o nome do recurso da invocação do fluxo de trabalho.- O formato do nome do recurso é o seguinte:
projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID/workflowInvocations/WORKFLOW_INVOCATION_ID.
- O formato do nome do recurso é o seguinte:
compilationResultouworkflowConfig: o nome do recurso da origem usado para a invocação.- O formato do nome do recurso para
compilationResulté o seguinte:projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID/compilationResults/COMPILATION_RESULT_ID. - O formato do nome do recurso para
workflowConfigé o seguinte:projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID/workflowConfigs/WORKFLOW_CONFIG_ID.
- O formato do nome do recurso para
create_repository_contextouupdate_repository_context: presente quando o método da API éCreateRepositoryouUpdateRepository.repository: o nome do recurso do repositório do Dataform.- O formato do nome do recurso é o seguinte:
projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID
- O formato do nome do recurso é o seguinte:
update_release_config_context: presente quando o método da API éUpdateReleaseConfig.releaseConfig: o nome do recurso da configuração do lançamento.- O formato do nome do recurso é o seguinte:
projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID/releaseConfigs/RELEASE_CONFIG_ID.
- O formato do nome do recurso é o seguinte:
create_workflow_config_contextouupdate_workflow_config_context: presente quando o método da API éCreateWorkflowConfigouUpdateWorkflowConfig.workflowConfig: o nome do recurso da configuração do fluxo de trabalho.- O formato do nome do recurso é o seguinte:
projects/PROJECT_ID/locations/LOCATION_ID/repositories/REPOSITORY_ID/workflowConfigs/WORKFLOW_CONFIG_ID.
- O formato do nome do recurso é o seguinte:
Para comparar os formatos documentados com a entrada de registo, substitua o seguinte:
PROJECT_ID: o identificador exclusivo do seu projeto do Google Cloud .LOCATION_ID: a região onde se encontra o seu repositório do Dataform.REPOSITORY_ID: o ID definido pelo utilizador do repositório do Dataform. Este é o nome atribuído ao repositório quando foi criado.COMPILATION_RESULT_ID: o identificador único gerado pelo sistema para um resultado da compilação do Dataform.RELEASE_CONFIG_ID: o ID definido pelo utilizador da configuração de lançamento do Dataform.WORKFLOW_CONFIG_ID: o ID definido pelo utilizador da configuração do fluxo de trabalho do Dataform.
Resolva problemas de autorizações
Se encontrar entradas de registo em que o campo dryRunResult é false, faça o seguinte:
Nos detalhes de
jsonPayload, tome nota do endereço de email no campocallerpara identificar o principal.Tome nota do endereço de email no campo
serviceAccountpara identificar a conta de serviço.Confirme que o principal do autor da chamada deve ter autorização para agir como a conta de serviço. A concessão desta autorização permite que o autor da chamada use as autorizações detidas pela conta de serviço.
Se o acesso for intencional, conceda a função de utilizador da conta de serviço (
roles/iam.serviceAccountUser) ao principal autor da chamada na conta de serviço alvo. Para mais informações, consulte o artigo Conceda a função de IAM de utilizador da conta de serviço.
Depois de conceder a função, os registos futuros desta combinação de autor da chamada e conta de serviço devem apresentar dryRunResult: true.
Conceda a função IAM de utilizador da conta de serviço
A função de utilizador da conta de serviço
(roles/iam.serviceAccountUser) contém a autorização iam.serviceAccounts.actAs, que é necessária para o modo de atuação rigoroso. Quando usa a API Dataform, tem de ter a função Utilizador da conta de serviço concedida para a conta de serviço efetiva com base no método projects.locations.repositories que está a chamar:
createoupatch- Se a propriedade
Repository.ServiceAccountestiver definida, deve ter a função Utilizador da conta de serviço concedida para essa propriedade. - Se estiver a chamar o método
patch, deve ter a função Utilizador da conta de serviço concedida para todas as contas de serviço eficazes em todas as configurações do fluxo de trabalho no repositório.
- Se a propriedade
workflowConfigs.createouworkflowConfigs.patch- Deve ter a função Utilizador da conta de serviço concedida para a conta de serviço eficaz usada na configuração do fluxo de trabalho.
releaseConfigs.patch- Deve ter a função Utilizador da conta de serviço concedida para todas as contas de serviço eficazes usadas nas configurações do fluxo de trabalho através desta configuração de lançamento.
workflowInvocations.create- Deve ter a função Utilizador da conta de serviço concedida para a conta de serviço eficaz usada na invocação do fluxo de trabalho.
Para conceder a função Utilizador da conta de serviço a uma conta de serviço personalizada, siga estes passos:
Na Google Cloud consola, aceda a IAM > Contas de serviço.
Selecione um projeto.
Na página Contas de serviço para o projeto "PROJECT_NAME", selecione a sua conta de serviço personalizada.
Aceda a Entidades com acesso e, de seguida, clique em Conceder acesso.
No campo Novos membros, introduza o ID do agente de serviço do Dataform predefinido.
O ID do agente do serviço Dataform predefinido está no seguinte formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.comNa lista Selecionar uma função, selecione a função Utilizador da conta de serviço.
Clique em Guardar.
Para mais informações, consulte as funções necessárias para criar uma configuração de fluxo de trabalho e as funções necessárias para criar uma configuração de lançamento.
Efeitos do modo de atuação rigoroso em lançamentos e execuções automáticas
Quando o modo de agir como rigoroso está ativado, afeta as versões automáticas do repositório e as execuções automáticas do fluxo de trabalho da seguinte forma:
Para repositórios que não estão associados a repositórios de terceiros:
- Não pode definir um horário Cron para lançamentos automáticos nas configurações de lançamento. Isto é aplicado para evitar a implementação automática de alterações ao código feitas por um utilizador que possa não ter as autorizações
iam.serviceAccounts.actAsnecessárias nas contas de serviço a jusante. - As execuções de fluxos de trabalho agendadas através de uma programação Cron nas configurações de fluxos de trabalho permanecem ativadas. Para que estas execuções automáticas sejam bem-sucedidas, tem de conceder ao agente de serviço do Dataform predefinido a autorização
iam.serviceAccounts.actAsna conta de serviço efetiva especificada na configuração do fluxo de trabalho.
Para repositórios que estão associados a repositórios de terceiros:
- São permitidos lançamentos agendados e execuções de fluxos de trabalho agendados.
- Para ativar um lançamento automático a partir de uma configuração de lançamento ou uma execução automática a partir de uma configuração de fluxo de trabalho, tem de conceder ao agente de serviço do Dataform predefinido a autorização
iam.serviceAccounts.actAsna conta de serviço efetiva relevante:- Para uma configuração de lançamento automático, conceda a autorização nas contas de serviço efetivas de todas as configurações de fluxo de trabalho acionadas por esta configuração de lançamento.
- Para uma configuração de fluxo de trabalho automática, conceda a autorização na conta de serviço eficaz usada por essa configuração de fluxo de trabalho.
O que se segue?
- Para saber como criar um repositório, consulte o artigo Crie um repositório.
- Para saber como o Dataform funciona com o BigQuery, consulte a vista geral dos fluxos de trabalho.
- Para saber como criar uma configuração de fluxo de trabalho, consulte o artigo Agendar execuções.
- Para saber como criar uma configuração de lançamento, consulte o artigo Configurar compilações.