El modo estricto de act-as habilita una verificación de seguridad adicional para las siguientes acciones del usuario en Dataform:
- Crea o actualiza un repositorio
- Crear o actualizar una configuración de flujo de trabajo
- Crea una invocación de flujo de trabajo
- Actualiza una configuración de lanzamiento
Esta verificación de seguridad adicional requiere que el usuario que realiza estas acciones tenga el permiso iam.serviceAccounts.actAs en la cuenta de servicio efectiva, que es la cuenta de servicio cuyas credenciales se usan para ejecutar flujos de trabajo.
Para obtener más información, consulta Conecta cuentas de servicio a recursos.
Puedes habilitar estos permisos de las siguientes maneras:
- Cuando creas un repositorio
- Cuando se actualiza un repositorio existente con la marca
strict_act_as_checks
Roles obligatorios
Para obtener los permisos que
necesitas para completar las tareas de este documento,
pídele a tu administrador que te otorgue el
rol de IAM de Usuario de cuenta de servicio (roles/iam.serviceAccountUser)
en la cuenta de servicio personalizada.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.
Determina la cuenta de servicio vigente
Puedes determinar la cuenta de servicio efectiva que ejecuta los flujos de trabajo según el tipo de recurso y las siguientes condiciones:
| Tipo de recurso | Cuenta de servicio vigente |
|---|---|
| Repositorios | Si seleccionas una cuenta de servicio personalizada cuando crees el repositorio, se usará la cuenta de servicio De lo contrario, se establece de forma predeterminada en el agente de servicio de Dataform. |
| Configuración del flujo de trabajo | Puedes seleccionar una cuenta de servicio personalizada cuando crees la configuración del flujo de trabajo. De lo contrario, se usará de forma predeterminada el agente de servicio de Dataform del repositorio. |
| Invocación de flujo de trabajo | Si el resultado de la compilación es Si creas una invocación de flujo de trabajo a partir de un resultado de compilación, se usa la cuenta de servicio De lo contrario, se usará de forma predeterminada el agente de servicio de Dataform del repositorio. |
Otorga el rol de IAM de usuario de cuenta de servicio
El rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser) contiene el permiso iam.serviceAccounts.actAs, que se requiere para el modo de suplantación estricto. Cuando usas la API de Dataform, debes tener el rol de usuario de cuenta de servicio otorgado para la cuenta de servicio efectiva según el método projects.locations.repositories al que llamas:
createopatch- Si se configura la propiedad
Repository.ServiceAccount, debes tener el rol de usuario de cuenta de servicio otorgado para esa propiedad. - Si llamas al método
patch, debes tener el rol de usuario de cuenta de servicio otorgado para todas las cuentas de servicio efectivas en todas las configuraciones del flujo de trabajo del repositorio.
- Si se configura la propiedad
workflowConfigs.createoworkflowConfigs.patch- Debes tener el rol de usuario de cuenta de servicio otorgado para la cuenta de servicio efectiva que se usa en la configuración del flujo de trabajo.
releaseConfigs.patch- Debes tener el rol de usuario de cuenta de servicio otorgado para todas las cuentas de servicio efectivas que se usen en las configuraciones del flujo de trabajo con esta configuración de versión.
workflowInvocations.create- Debes tener el rol de usuario de cuenta de servicio otorgado para la cuenta de servicio efectiva que se usa en la invocación del flujo de trabajo.
Para otorgar el rol de Usuario de cuenta de servicio a una cuenta de servicio personalizada, sigue estos pasos:
En la consola de Google Cloud , ve a IAM > Cuentas de servicio.
Selecciona un proyecto.
En la página Cuentas de servicio para el proyecto "PROJECT_NAME", selecciona tu cuenta de servicio personalizada.
Ve a Principales con acceso y, luego, haz clic en Otorgar acceso.
En el campo Principales nuevas, ingresa el ID de tu agente de servicio predeterminado de Dataform.
Tu ID de agente de servicio de Dataform predeterminado tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.comEn la lista Seleccionar un rol, selecciona el rol Usuario de cuenta de servicio.
Haz clic en Guardar.
Para obtener más información, consulta las funciones requeridas para crear una configuración de flujo de trabajo y las funciones requeridas para crear una configuración de versión.
Efectos del modo act-as estricto en las versiones y ejecuciones automáticas
Cuando se habilita el modo de actuación estricta, se ven afectadas las versiones automáticas del repositorio y las ejecuciones automáticas del flujo de trabajo de la siguiente manera:
En el caso de los repositorios que no están conectados a repositorios de terceros, haz lo siguiente:
- No puedes establecer un programa de Cron para las versiones automáticas en las configuraciones de versiones. Esto se aplica para evitar que se implementen automáticamente los cambios de código realizados por un usuario que podría no tener los permisos de
iam.serviceAccounts.actAsnecesarios en las cuentas de servicio de nivel inferior. - Las ejecuciones de flujos de trabajo programadas con un programa Cron en la configuración del flujo de trabajo permanecen habilitadas. Para que estas ejecuciones automatizadas se realicen correctamente, debes otorgar al agente de servicio predeterminado de Dataform el permiso
iam.serviceAccounts.actAsen la cuenta de servicio efectiva especificada en la configuración del flujo de trabajo.
En el caso de los repositorios conectados a repositorios de terceros, haz lo siguiente:
- Se permiten los lanzamientos y las ejecuciones de flujos de trabajo programados.
- Para habilitar una versión automática desde un parámetro de configuración de lanzamiento o una ejecución automática desde un parámetro de configuración de flujo de trabajo, debes otorgar al agente de servicio predeterminado de Dataform el permiso
iam.serviceAccounts.actAsen la cuenta de servicio efectiva pertinente:- Para una configuración de lanzamiento automática, otorga el permiso en las cuentas de servicio efectivas de todas las configuraciones de flujo de trabajo que se activan con esta configuración de lanzamiento.
- Para una configuración de flujo de trabajo automática, otorga el permiso en la cuenta de servicio efectiva que usa esa configuración de flujo de trabajo.
¿Qué sigue?
- Para obtener información sobre cómo crear un repositorio, consulta Crea un repositorio.
- Si deseas obtener más información sobre cómo funciona Dataform con BigQuery, consulta la Descripción general de los flujos de trabajo.
- Para obtener información sobre cómo crear una configuración de flujo de trabajo, consulta Programa ejecuciones.
- Para obtener información sobre cómo crear una configuración de lanzamiento, consulta Configura compilaciones.