Usar el modo de rol estricto

El modo estricto de rol permite realizar una comprobación de seguridad adicional para las siguientes acciones de usuario en Dataform:

  • Crear o actualizar un repositorio
  • Crear o actualizar una configuración de flujo de trabajo
  • Crear una invocación de flujo de trabajo
  • Actualizar una configuración de lanzamiento

Esta comprobación de seguridad adicional requiere que el usuario que realice 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 el artículo Asociar cuentas de servicio a recursos.

Puedes habilitar estos permisos de las siguientes formas:

  • Cuando crees un repositorio
  • Al actualizar un repositorio con la marca strict_act_as_checks repository

Roles obligatorios

Para obtener los permisos que necesitas para completar las tareas de este documento, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Usuario de cuenta de servicio (roles/iam.serviceAccountUser) en la cuenta de servicio personalizada. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

Determinar la cuenta de servicio efectiva

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 efectiva
Repositorios

Si seleccionas una cuenta de servicio personalizada al crear el repositorio, se usará la cuenta de servicio Repository.ServiceAccount.

De lo contrario, se usará de forma predeterminada 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 flujos de trabajo

Si el resultado de la compilación es WORKFLOW_CONFIG, se utiliza la cuenta de servicio efectiva de la configuración del flujo de trabajo.

Si creas una invocación de flujo de trabajo a partir de un resultado de compilación, se usará la cuenta de servicio WorkflowInvocation.InvocationConfig si está configurada.

De lo contrario, se usará de forma predeterminada el agente de servicio de Dataform del repositorio.

Asignar el rol de IAM Usuario de cuenta de servicio

El rol Usuario de cuenta de servicio (roles/iam.serviceAccountUser) contiene el permiso iam.serviceAccounts.actAs, que es necesario para el modo Actúa como estricto. Cuando usas la API de Dataform, debes tener asignado el rol Usuario de cuenta de servicio a la cuenta de servicio efectiva en función del método projects.locations.repositories al que llames:

  • create o patch
    • Si se ha definido la propiedad Repository.ServiceAccount, debes tener asignado el rol Usuario de cuenta de servicio en esa propiedad.
    • Si llamas al método patch, debes tener el rol Usuario de cuenta de servicio asignado a todas las cuentas de servicio efectivas de todas las configuraciones de flujo de trabajo del repositorio.
  • workflowConfigs.create o workflowConfigs.patch
    • Debes tener asignado el rol Usuario de cuenta de servicio a la cuenta de servicio efectiva que se usa en la configuración del flujo de trabajo.
  • releaseConfigs.patch
    • Debes tener asignado el rol Usuario de cuenta de servicio a todas las cuentas de servicio efectivas que se usen en las configuraciones de flujo de trabajo con esta configuración de lanzamiento.
  • workflowInvocations.create
    • Debes tener el rol Usuario de cuenta de servicio asignado a la cuenta de servicio efectiva que se usa en la invocación del flujo de trabajo.

Para asignar el rol Usuario de cuenta de servicio a una cuenta de servicio personalizada, sigue estos pasos:

  1. En la Google Cloud consola, ve a IAM > Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Selecciona un proyecto.

  3. En la página Cuentas de servicio del proyecto "PROJECT_NAME", selecciona tu cuenta de servicio personalizada.

  4. Ve a Principales con acceso y, a continuación, haz clic en Dar acceso.

  5. En el campo Nuevos principales, introduce el ID de agente de servicio predeterminado de Dataform.

    El ID de agente de servicio de Dataform predeterminado tiene el siguiente formato:

    service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
  6. En la lista Seleccionar un rol, selecciona el rol Usuario de cuenta de servicio.

  7. Haz clic en Guardar.

Para obtener más información, consulta los roles necesarios para crear una configuración de flujo de trabajo y los roles necesarios para crear una configuración de lanzamiento.

Efectos del modo de rol estricto en las versiones y ejecuciones automáticas

Cuando el modo de rol estricto está habilitado, afecta a las versiones automáticas de repositorios y a las ejecuciones automáticas de flujos de trabajo de la siguiente manera:

En el caso de los repositorios que no estén conectados a repositorios de terceros, sigue estos pasos:

  • No puedes definir una programación Cron para las versiones automáticas en las configuraciones de lanzamiento. Esto se aplica para evitar que se desplieguen automáticamente los cambios de código realizados por un usuario que no tenga los permisos iam.serviceAccounts.actAs necesarios en las cuentas de servicio posteriores.
  • Las ejecuciones de flujos de trabajo programadas mediante una programación cron en las configuraciones de flujos de trabajo seguirán habilitadas. Para que estas ejecuciones automatizadas se realicen correctamente, debes conceder al agente de servicio predeterminado de Dataform el permiso iam.serviceAccounts.actAs en la cuenta de servicio efectiva especificada en la configuración del flujo de trabajo.

En el caso de los repositorios que estén conectados a repositorios de terceros:

  • Se permiten los lanzamientos y las ejecuciones de flujos de trabajo programados.
  • Para habilitar una versión automática a partir de una configuración de versión o una ejecución automática a partir de una configuración de flujo de trabajo, debes conceder al agente de servicio predeterminado de Dataform el permiso iam.serviceAccounts.actAs en la cuenta de servicio efectiva correspondiente:
    • En el caso de una configuración de lanzamiento automática, concede el permiso en las cuentas de servicio efectivas de todas las configuraciones de flujo de trabajo que se activen con esta configuración de lanzamiento.
    • Para configurar un flujo de trabajo automático, concede el permiso a la cuenta de servicio efectiva que utilice esa configuración.

Siguientes pasos