En este documento, se muestra cómo hacer lo siguiente en Dataform:
- Otorgar a Dataform el acceso requerido.
- Controla el acceso a Dataform con IAM.
- Controla el acceso a tablas individuales con IAM.
Antes de comenzar
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
Verify that billing is enabled for your Google Cloud project.
Roles required to enable APIs
To enable APIs, you need the serviceusage.services.enable permission. If you
created the project, then you likely already have this permission through the
Owner role (roles/owner). Otherwise, you can get this permission through the
Service Usage Admin role (roles/serviceusage.serviceUsageAdmin).
Learn how to grant roles.
Otorga a Dataform el acceso requerido
En esta sección, se muestra cómo otorgar los roles de Identity and Access Management (IAM) que los agentes de servicio de Dataform y las cuentas de servicio personalizadas necesitan para ejecutar flujos de trabajo en BigQuery.
Acerca de las cuentas de servicio personalizadas y los agentes de servicio de Dataform
Puedes configurar cuentas de servicio personalizadas para ejecutar flujos de trabajo en tu nombre de las siguientes maneras:
- A nivel del repositorio, para ejecutar todos los flujos de trabajo en un repositorio determinado.
- De forma individual para cada configuración de flujo de trabajo.
Cuando creas un repositorio o una configuración de flujo de trabajo de Dataform, puedes seleccionar cualquier cuenta de servicio en la que tengas permisos para actuar como. Debes configurar los permisos de suplantación de identidad necesarios para todas las cuentas de servicio asociadas con tus recursos de Dataform.
Cuando creas tu primer repositorio de Dataform, este genera automáticamente un agente de servicio. Dataform usa el agente de servicio para interactuar con BigQuery en tu nombre.
El ID de tu agente de servicio de Dataform tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.
Reemplaza PROJECT_NUMBER por el ID numérico de tu proyecto deGoogle Cloud . Puedes encontrar el ID del proyecto de Google Cloud en el panel de la consola deGoogle Cloud . Para obtener más información, consulta Encuentra el nombre, el número y el ID del proyecto.
Roles necesarios para los agentes de servicio de Dataform, las cuentas de servicio personalizadas y las Cuentas de Google
Los agentes de servicio de Dataform, las cuentas de servicio personalizadas y las credenciales de usuario de una Cuenta de Google que se usa para autenticar en Dataform requieren los siguientes roles de IAM de BigQuery para poder ejecutar flujos de trabajo en BigQuery:
- Editor de datos de BigQuery
(
roles/bigquery.dataEditor) en los proyectos en los que Dataform necesita acceso de lectura y escritura. Por lo general, estos incluyen el proyecto que aloja tu repositorio de Dataform. - Visualizador de datos de BigQuery
(
roles/bigquery.dataViewer) en los proyectos a los que Dataform necesita acceso de solo lectura. - Usuario de trabajo de BigQuery
(
roles/bigquery.jobUser) en el proyecto que aloja tu repositorio de Dataform. - Propietario de datos de BigQuery
(
roles/bigquery.dataOwner) si quieres consultar conjuntos de datos de BigQuery. - Roles de BigQuery para el control de acceso a nivel de columna si quieres usar etiquetas de política de BigQuery.
Además, otorga los siguientes roles al agente de servicio de Dataform en la cuenta de servicio efectiva para la configuración del flujo de trabajo. Estos roles son necesarios para que funcione el modo estricto de actuar como.
- Usuario de cuenta de servicio
(
roles/iam.serviceAccountUser) - Creador de tokens de cuenta de servicio
(
roles/iam.serviceAccountTokenCreator)
Para las versiones automáticas del repositorio y las ejecuciones automáticas de flujos de trabajo,
otorga al agente de servicio de Dataform el
permiso iam.serviceAccounts.actAs en la
cuenta de servicio efectiva.
Para habilitar el enriquecimiento de metadatos en Knowledge Catalog
y la integración del cuadro de evaluación de la calidad de los datos,
otorga el rol de
editor del catálogo de Dataplex
(roles/dataplex.catalogEditor) en el proyecto o el grupo de entradas @bigquery
a las cuentas de servicio personalizadas o las Cuentas de Google que se usan para la ejecución del flujo de trabajo.
Consideraciones de seguridad
Otorgar los roles que requiere Dataform a un agente de servicio de Dataform, una cuenta de servicio personalizada o una Cuenta de Google de un usuario conlleva las siguientes consideraciones de seguridad:
Cualquier cuenta de servicio personalizada a la que se le otorguen los roles necesarios podría obtener acceso a BigQuery, Secret Manager o Knowledge Catalog en el proyecto al que pertenece la cuenta de servicio, independientemente de los Controles del servicio de VPC. Cuando Dataform usa una cuenta de servicio personalizada para ejecutar flujos de trabajo, las solicitudes de Dataform se tratan como si se originaran dentro del perímetro de los Controles del servicio de VPC del proyecto que contiene tu repositorio. Por lo tanto, los Controles del servicio de VPC no bloquean la comunicación entre Dataform y otros servicios, como BigQuery, Secret Manager o Knowledge Catalog, si esos recursos se encuentran dentro del mismo perímetro de servicio.
Para obtener más detalles sobre cómo administrar estos límites de seguridad, consulta Configura los Controles del servicio de VPC.
Cualquier usuario que tenga el permiso de IAM
dataform.repositories.createpuede ejecutar código con el agente de servicio de Dataform y todos los permisos otorgados a ese agente o cuenta de servicio.Si deseas obtener más información, consulta Consideraciones de seguridad para los permisos de Dataform.
Para mantener un modelo de permisos seguro, audita con regularidad las vinculaciones de roles del agente de servicio de Dataform. Para obtener instrucciones detalladas sobre la supervisión, consulta Supervisa los permisos de agente de servicio con Security Command Center.
Para restringir los datos que un usuario, un agente de servicio o una cuenta de servicio pueden leer o escribir en BigQuery, puedes otorgar permisos de IAM de BigQuery detallados a conjuntos de datos o tablas de BigQuery seleccionados. Para obtener más información, consulta Controla el acceso a los conjuntos de datos y Controla el acceso a las tablas y vistas.
Para evitar que los usuarios realicen acciones mientras usan las credenciales de usuario de la Cuenta de Google de otro usuario, se aplican las siguientes restricciones:
- Para modificar una configuración de flujo de trabajo con las credenciales de usuario de otra Cuenta de Google adjunta, debes adjuntar las credenciales de usuario de tu propia Cuenta de Google a la configuración del flujo de trabajo o cambiar la configuración del flujo de trabajo para autenticarte con una cuenta de servicio personalizada.
- No puedes modificar un resultado de compilación para un parámetro de configuración de versión si hay parámetros de configuración de flujo de trabajo que hacen referencia al parámetro de configuración de versión que tiene adjuntas las credenciales de otro usuario de la Cuenta de Google.
No puedes establecer una configuración de flujo de trabajo para autenticarte con las credenciales de usuario de la Cuenta de Google y hacer referencia a una configuración de versión con un programa. Esta limitación tiene las siguientes consecuencias:
- No puedes actualizar una configuración de versión para usar un programa si hay parámetros de configuración del flujo de trabajo que hacen referencia a la configuración de versión que se estableció para autenticarse con las credenciales de usuario de la Cuenta de Google.
- No puedes crear un parámetro de configuración de flujo de trabajo que se autentique con las credenciales de usuario de la Cuenta de Google y que apunte a un parámetro de configuración de lanzamiento con un programa.
- No puedes crear ni actualizar una configuración de flujo de trabajo para usar las credenciales de usuario de la Cuenta de Google y apuntar a una configuración de versión con un programa.
Para no permitir el uso de credenciales de usuario final de la Cuenta de Google, un administrador de la organización puede crear una restricción de política de la organización personalizada que deniegue la configuración de
end_user_auth_config. Para obtener más información, consulta Crea restricciones personalizadas de las políticas de la organización.
Otorga los roles de BigQuery necesarios
Para otorgar los roles de IAM de BigQuery necesarios a tu agente de servicio de Dataform, una cuenta de servicio personalizada que quieras usar en Dataform o la Cuenta de Google de un usuario que quieras usar para autenticarte en Dataform, sigue estos pasos:
En la consola de Google Cloud , ve a la página Dataform.
Selecciona o crea un repositorio.
En la consola de Google Cloud , dirígete a la página IAM.
Haz clic en Otorgar acceso.
En el campo Principales nuevas, ingresa el ID del agente de servicio, el ID de la cuenta de servicio o el correo electrónico de la Cuenta de Google del usuario.
En la lista Selecciona un rol, elige el rol Usuario de trabajo de BigQuery.
Haz clic en Agregar otro rol y, luego, en la lista Selecciona un rol, elige Editor de datos de BigQuery.
Haz clic en Agregar otro rol y, luego, en la lista Selecciona un rol, elige Visualizador de datos de BigQuery.
Haz clic en Guardar.
Otorga los roles necesarios para los flujos de trabajo automáticos
Para usar una cuenta de servicio personalizada en Dataform, el agente de servicio de Dataform debe poder acceder a la cuenta de servicio personalizada. Esto permite que Dataform ejecute tus flujos de trabajo con los permisos definidos en tu cuenta de servicio personalizada en lugar de en la cuenta del agente de servicio.
Para otorgar este acceso, debes otorgar el
rol de creador de tokens de cuentas de servicio
(roles/iam.serviceAccountTokenCreator) al agente de servicio de Dataform
como principal. Esto permite que el agente de servicio de Dataform
actúe en nombre de la cuenta de servicio creando credenciales de corta duración
conocidas como tokens. Estos tokens son necesarios para que Dataform ejecute
flujos de trabajo con la identidad de la cuenta de servicio personalizada.
También debes otorgar el
rol de usuario de cuenta de servicio
(roles/iam.serviceAccountUser) al agente de servicio
de Dataform. Esto permite que el agente de servicio de Dataform inicie nuevas
ejecuciones automáticas de flujos de trabajo para las configuraciones de flujos de trabajo que ejecuta la cuenta de servicio personalizada.
Para otorgar al agente de servicio de Dataform acceso a una cuenta de servicio personalizada, sigue estos pasos:
En la consola de Google Cloud , ve a IAM > Cuentas de servicio.
Selecciona el proyecto de Google Cloud en el que se encuentra tu cuenta de servicio personalizada.
En la página Cuentas de servicio del 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 de Dataform.
El ID de tu agente de servicio de Dataform tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.En la lista Selecciona un rol, elige el rol Creador de tokens de cuenta de servicio y el rol Usuario de cuenta de servicio.
Haz clic en Guardar.
La cuenta de servicio personalizada ya está lista para configurarse en tu repositorio de Dataform.
Audita las configuraciones de las cuentas de servicio
En esta sección, se muestra cómo auditar tus recursos de Dataform para garantizar el uso adecuado de la cuenta de servicio y el otorgamiento de permisos. La auditoría es especialmente importante cuando se usan cuentas de servicio personalizadas, ya que requieren permisos específicos para que funcione el agente de servicio de Dataform.
Cuando usas una cuenta de servicio personalizada para un repositorio o
una configuración de flujo de trabajo de Dataform, debes verificar que el
agente de servicio de Dataform tenga el
rol de usuario de cuenta de servicio
(roles/iam.serviceAccountUser) en la cuenta de servicio personalizada. Este rol
otorga el permiso iam.serviceAccounts.actAs, que permite que las ejecuciones programadas,
iniciadas por el agente de servicio de Dataform, actúen en nombre de
la cuenta de servicio personalizada. Además, verifica que el
agente de servicio de Dataform tenga el
rol de creador de tokens de cuenta de servicio
(roles/iam.serviceAccountTokenCreator)
en la cuenta de servicio efectiva.
Verifica las cuentas de servicio del repositorio
Primero, identifica los recursos de dataform.Repository que están dentro del alcance de
la programación y ejecución de Dataform. Luego, verifica las configuraciones de la cuenta de servicio para esos repositorios dentro del alcance.
Usa Cloud Asset Inventory para enumerar todos los recursos del tipo
dataform.Repository. Para obtener más información, consulta Cómo ver tus recursos.Para cada repositorio en el resultado de Cloud Asset Inventory, verifica el campo
resource.data.labelspara determinar si está dentro del alcance. La ruta exacta puede variar un poco según el formato de exportación.Identifica los repositorios fuera de alcance inspeccionando el mapa de etiquetas para la clave
single-file-asset-type. La presencia de esta clave indica que una función de BigQuery usa el repositorio. Si el valor essqlodata_canvas, el repositorio se puede excluir de las verificaciones de permisos de la cuenta de servicio.Los repositorios restantes que no tienen esta clave o estos valores están dentro del alcance de las verificaciones de permisos de la cuenta de servicio.
Para cada repositorio dentro del alcance, verifica el campo
resource.data.serviceAccounten el resultado de Cloud Asset Inventory para determinar si se configuró una cuenta de servicio personalizada:- Si el campo
resource.data.serviceAccountestá presente y su valor es diferente de la dirección de correo electrónico del agente de servicio de Dataform del proyecto, el repositorio usa una cuenta de servicio personalizada. Si el campo
resource.data.serviceAccountno está presente o si el valor del campo coincide con el agente de servicio de Dataform del proyecto, el repositorio usa el agente de servicio.
- Si el campo
Si se usa una cuenta de servicio personalizada, verifica que el agente de servicio de Dataform tenga el rol de usuario de cuenta de servicio (
roles/iam.serviceAccountUser) y el rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator) en esa cuenta de servicio personalizada.
Verifica las cuentas de servicio de configuración del flujo de trabajo
Usar cuentas de servicio personalizadas dedicadas para los parámetros de configuración del flujo de trabajo de Dataform es una práctica recomendada de seguridad, que se alinea con el principio de privilegio mínimo.
Para verificar el uso de la cuenta de servicio de dataform.WorkflowConfig resources, haz
lo siguiente:
Usa Cloud Asset Inventory para enumerar todos los recursos del tipo
dataform.WorkflowConfig.Para cada configuración de flujo de trabajo, examina el resultado de Cloud Asset Inventory para determinar la cuenta de servicio efectiva:
- Si el campo
resource.data.serviceAccountestá presente, este valor es la dirección de correo electrónico de la cuenta de servicio que se estableció de forma explícita en la configuración del flujo de trabajo. - Si el campo
resource.data.serviceAccountno está presente, la configuración del flujo de trabajo hereda la cuenta de servicio de su repositorio superior. Verifica la configuración del repositorio superior para encontrar la cuenta de servicio efectiva.
- Si el campo
Identifica si se usa una cuenta de servicio personalizada comparando la dirección de correo electrónico de la cuenta de servicio efectiva con la dirección de correo electrónico del agente de servicio de Dataform del proyecto. Si son diferentes, se está usando una cuenta de servicio personalizada.
Si se usa una cuenta de servicio personalizada, asegúrate de que el agente de servicio de Dataform tenga el rol de usuario de cuenta de servicio (
roles/iam.serviceAccountUser) y el rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator) otorgados en esa cuenta de servicio personalizada. Estos permisos permiten que el agente de servicio de Dataform inicie ejecuciones de flujo de trabajo que actúen en nombre de la cuenta de servicio personalizada.
Supervisa los permisos de agente de servicio con Security Command Center
Para garantizar el cumplimiento continuo del principio de privilegio mínimo, supervisa activamente tu proyecto en Security Command Center para detectar hallazgos relacionados con cuentas de servicio y agentes de servicio con privilegios excesivos.
Para obtener instrucciones sobre cómo revisar y aplicar los hallazgos de corrección en Security Command Center, consulta Hallazgos del recomendador de IAM y Investiga los hallazgos de identidad en la consola.
Cuando corrijas un hallazgo de SERVICE_AGENT_GRANTED_BASIC_ROLE para un agente de servicio de Dataform, reemplaza el rol demasiado permisivo por un rol predefinido que tenga los permisos mínimos necesarios, con alcance para el recurso específico. Por ejemplo, otorga el rol de usuario de cuenta de servicio (roles/iam.serviceAccountUser) en una cuenta de servicio específica.
Controla el acceso a Dataform con IAM
En esta sección, se describen las opciones de control de acceso para Dataform y se muestra cómo ver y otorgar roles de Dataform. Dataform usa la administración de identidades y accesos (IAM) para el control de acceso. Para obtener más información sobre los roles y los permisos en IAM, consulta el Índice de roles y permisos de IAM.
Roles predefinidos de Dataform
En la siguiente tabla, se enumeran los roles predefinidos que te brindan acceso a los recursos de Dataform:
| Role | Permissions |
|---|---|
Dataform Admin( Full access to all Dataform resources. |
|
Dataform Editor( Edit access to Workspaces and Repositories. |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
Code Commenter Beta( Permissions to comment, at the repository level. Grants CRUD access over commentThread and comment resources. |
|
Code Creator( Access only to private and shared code resources. The permissions in the Code Creator let you create and list code in Dataform, and access only the code that you created and code that was explicitly shared with you. |
|
Code Editor( Edit access code resources. |
|
Code Owner( Full access to code resources. |
|
Code Scheduler Beta( Access for scheduling workflows and releases. |
|
Code Viewer( Read-only access to all code resources. |
|
Team Folder Commenter Beta( View and comment access to a team folder and its contents. |
|
Team Folder Contributor( Edit access to a team folder and its contents. |
|
Team Folder Creator( Access to create new team folders. |
|
Team Folder Owner( Full access to a team folder and its contents. Can share the team folder and its contents. |
|
Team Folder Viewer( View access to a team folder and its contents. |
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Dataform Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Roles personalizados de Dataform
Las funciones personalizadas pueden incluir cualquier permiso que especifiques. Puedes crear roles personalizados que incluyan permisos para realizar operaciones administrativas específicas, como crear espacios de trabajo de desarrollo o crear archivos y directorios dentro de un espacio de trabajo de desarrollo. Para crear roles personalizados, consulta Crea y administra roles personalizados.
Consideraciones de seguridad para los permisos de Dataform
Cualquier usuario que tenga el permiso dataform.repositories.create puede ejecutar código en
BigQuery con una cuenta de servicio personalizada y todos los permisos
otorgados a esa cuenta de servicio. Esto incluye la ejecución de
flujos de trabajo de Dataform
y la capacidad de administrar metadatos en Knowledge Catalog.
Debido a que el modo estricto de actuar como se aplica a todos los repositorios, el
permiso dataform.repositories.create requiere de forma implícita que el usuario
tenga permisos para actuar como en la cuenta de servicio personalizada para la
ejecución de flujos de trabajo posteriores. Esto garantiza que solo los usuarios con
derechos de suplantación de identidad explícitos puedan ejecutar código con la identidad de la cuenta de
servicio.
El permiso dataform.repositories.create se incluye en los siguientes roles de IAM:
- Administrador de BigQuery (
roles/bigquery.admin) - Usuario de trabajo de BigQuery (
roles/bigquery.jobUser) - Usuario de BigQuery Studio (
roles/bigquery.studioUser) - Usuario de BigQuery (
roles/bigquery.user) - Creador de código (
roles/dataform.codeCreator) - Editor de código (
roles/dataform.codeEditor) - Propietario del código (
roles/dataform.codeOwner) - Usuario de Colab Enterprise (
roles/aiplatform.colabEnterpriseUser) - Administrador de Dataform (
roles/dataform.admin)
Para restringir los datos que un usuario o una cuenta de servicio pueden leer o escribir en BigQuery, puedes otorgar permisos detallados de IAM de BigQuery a tablas o conjuntos de datos seleccionados de BigQuery. Para obtener más información, consulta Controla el acceso a los conjuntos de datos y Controla el acceso a las tablas y vistas.
Para obtener más información sobre las cuentas de servicio personalizadas y los roles y permisos que requieren, consulta Otorga acceso obligatorio a Dataform.
Acceso a Secrets durante la instalación del paquete
Si configuras paquetes de NPM privados con secretos de Secret Manager, es posible que los usuarios que tengan permisos para modificar el código o activar la compilación del código desde una confirmación de Git específica en el repositorio puedan acceder a esos secretos.
Durante la instalación del paquete, que se activa cuando se instalan paquetes de forma manual
en un lugar de trabajo o cuando se compila código a partir de una confirmación de Git específica, el
cliente de NPM lee las credenciales del archivo .npmrc y transmite el
token de autenticación al registro de NPM configurado. Un usuario con permisos
para modificar el archivo .npmrc en su espacio de trabajo puede establecer parámetros de configuración para acceder
a los secretos redireccionando las solicitudes de registro a un servidor externo.
Esta instalación y la posible exposición de tokens pueden ocurrir en las siguientes situaciones:
Instalación de paquetes de Workspace: Se activa de forma manual dentro de un espacio de trabajo. Esto requiere permisos de edición del espacio de trabajo, que se pueden encontrar en los roles de Editor de Dataform (
roles/dataform.editor) o Editor de código de Dataform (roles/dataform.codeEditor).Compilar un commitish de Git: Se activa automáticamente cuando se crea un resultado de compilación para un commitish de Git, como una rama, una etiqueta o un SHA de confirmación, en el repositorio. Esta situación requiere el permiso
dataform.compilationResults.create.
Para proteger tus credenciales, te recomendamos que hagas lo siguiente:
Otorga roles con permisos de edición de repositorios (como Editor de código de Dataform) o permisos de compilación (como Visualizador de código de Dataform) solo a usuarios de confianza.
Restringe los repositorios de Git remotos a los que se puede conectar Dataform con las políticas de la organización. Para obtener más información, consulta Restringe los repositorios remotos.
Limita el acceso de Secret Manager del agente de servicio de Dataform solo a los secretos necesarios.
No permitir el uso de credenciales de usuario final con restricciones de políticas de la organización personalizadas que rechacen la configuración de
end_user_auth_config. Para obtener más información, consulta Crea restricciones personalizadas de las políticas de la organización.
Visualiza los roles de Dataform
En la consola de Google Cloud , sigue estos pasos:
Ve a la página IAM y administración > Roles.
En el campo Filtro, selecciona Se usa en, escribe
Dataformy, luego, presiona Intro.Haz clic en uno de los roles de la lista para ver los permisos del rol en el panel derecho.
Por ejemplo, el rol de administrador de Dataform tiene acceso completo a todos los recursos de Dataform.
Para obtener más información sobre cómo otorgar un rol en un proyecto, consulta Otorga un rol. Puedes otorgar roles predefinidos o personalizados de esta manera.
Controla el acceso a un repositorio individual
Para controlar el acceso a Dataform con permisos detallados,
puedes configurar roles de IAM de Dataform en repositorios
individuales con la solicitud repositories.setIamPolicy
de la API de Dataform.
Para establecer roles de IAM de Dataform en un repositorio individual de Dataform, sigue estos pasos:
En la terminal, pasa la solicitud
repositories.setIamPolicyde la API de Dataform con una política de acceso.En la política, vincula un usuario, grupo, dominio, agente de servicio o cuenta de servicio a un rol seleccionado con el siguiente formato:
{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "TYPE:IDENTIFIER", ] }, ], } }Reemplaza lo siguiente:
ROLE: Es el rol de IAM de Dataform que deseas otorgar en el repositorio.TYPE:user,group,domainoserviceAccount.IDENTIFIER: Es el usuario, grupo, dominio o cuenta de servicio al que deseas otorgarle el rol.
En la página de IAM, asegúrate de que todos los usuarios puedan ver la lista completa de repositorios de Dataform a través de un rol de Dataform con el permiso
dataform.repositories.list.En IAM, asegúrate de que solo los usuarios que requieran acceso completo a todos los repositorios de Dataform tengan el rol de administrador de Dataform en todos los repositorios.
Con el siguiente comando, se pasa la solicitud a la API de Dataform de repositories.setIamPolicy
que otorga el rol de editor de Dataform en el repositorio sales
a un solo usuario:
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.editor", "members": ["user:sasha@examplepetstore.com"]}] }}' "https://dataform.googleapis.com/v1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Otorga acceso público a un repositorio
Para otorgar acceso público a un repositorio de Dataform, otorga
roles de IAM en el repositorio a la principal
allAuthenticatedUsers.
Cuando asignas un rol de IAM a la principal allAuthenticatedUsers,
se otorga ese rol a las cuentas de servicio y a todos los usuarios de Internet
que se autenticaron con una Cuenta de Google. Esto
incluye cuentas que no están conectadas a una cuenta de Google Workspace
o a un dominio de Cloud Identity, como cuentas de Gmail personales. Los usuarios que no están autenticados, como los visitantes anónimos, no están incluidos. Si deseas obtener más información, consulta
Todos los usuarios autenticados.
Por ejemplo, cuando otorgas el rol de visualizador de Dataform a
allAuthenticatedUsers en el repositorio sales, todas las
cuentas de servicio y los usuarios de Internet que se autenticaron con una
Cuenta de Google tienen acceso de solo lectura a todos los recursos de código de sales.
Para otorgar acceso público a un repositorio de Dataform, sigue estos pasos:
En la terminal, pasa la solicitud
repositories.setIamPolicyde la API de Dataform con una política de acceso.En la política, vincula la principal
allAuthenticatedUsersa un rol seleccionado con el siguiente formato:{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "allAuthenticatedUsers", ] }, ], } }Reemplaza
ROLEpor un rol de IAM de Dataform que quieras otorgar a todos los usuarios autenticados.
Con el siguiente comando, se pasa la solicitud a la API de Dataform de repositories.setIamPolicy
que otorga el rol de visualizador de Dataform en el repositorio sales
a allAuthenticatedUsers:
curl -H "Content-Type: application/json" -X POST -d '{ "policy": { "bindings": [{ "role": "roles/dataform.viewer", "members": ["allAuthenticatedUsers"]}] }}' "https://dataform.googleapis.com/v1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Impide el acceso público a los repositorios
Para garantizar que no se otorgue acceso al público en ningún repositorio de Dataform, puedes restringir la principal allAuthenticatedUsers en tu
proyecto.
Para restringir allAuthenticatedUsers en tu proyecto, puedes establecer la política iam.allowedPolicyMemberDomains y quitar allAuthenticatedUsers de la lista de allowed_values.
Cuando restringes allAuthenticatedUsers en la política iam.allowedPolicyMemberDomains,
el principal allAuthenticatedUsers no se puede usar en ninguna
política de IAM de tu proyecto, lo que evita otorgar acceso público
a todos los recursos, incluidos los repositorios de Dataform.
Para obtener más información sobre la política iam.allowedPolicyMemberDomains
y las instrucciones para configurarla, consulta
Restringe identidades por dominio.
Federación de identidades de personal en Dataform
La federación de identidades de personal te permite usar un proveedor de identidad (IdP) externo para autenticar y autorizar a los usuarios a los servicios de Google Cloud con IAM.
Dataform admite la federación de identidades de personal sin limitaciones conocidas.
Controla el acceso a tablas individuales con IAM
En esta sección, se muestra cómo otorgar y revocar roles de IAM de BigQuery para tablas y vistas individuales de Dataform.
Cuando Dataform ejecuta una tabla o vista, crea el recurso en BigQuery. Durante el desarrollo en Dataform, puedes otorgar roles de BigQuery a tablas y vistas individuales para controlar su acceso en BigQuery después de la ejecución.
Para obtener más información sobre cómo otorgar y revocar el acceso a los recursos, consulta Otorga acceso a un recurso.
Otorga roles de BigQuery a una tabla o vista
Puedes otorgar roles de BigQuery a una tabla o vista en
Dataform agregando un bloque post_operations con la
declaración DCL GRANT
al archivo de definición .sqlx de la tabla o vista seleccionada.
Para otorgar roles de BigQuery a una tabla o vista seleccionada, sigue estos pasos:
En la consola de Google Cloud , ve a la página Dataform.
Selecciona un repositorio y, luego, un espacio de trabajo.
En el panel Archivos, expande el directorio
definitions/.Selecciona el archivo de definición
.sqlxde la tabla o vista a la que deseas otorgar acceso.En el archivo, ingresa el siguiente fragmento de código:
post_operations { GRANT "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} TO "USER_LIST" }Reemplaza lo siguiente:
ROLE_LIST: el rol de BigQuery o la lista de roles de BigQuery separados por comas que deseas otorgar.
RESOURCE_TYPE:
TABLEoVIEW.USER_LIST: Es la lista separada por comas de los usuarios a los que se les otorga el rol.
Para obtener una lista de los formatos válidos, consulta user_list.
Opcional: Haz clic en Formato.
Ejecuta la tabla o vista.
Si otorgaste acceso a una tabla incremental, quita la sentencia
GRANTdel archivo de definición de la tabla después de la primera ejecución.
En la siguiente muestra de código, se indica el rol de visualizador de BigQuery otorgado a un usuario en una tabla:
config { type: "table" }
SELECT ...
post_operations {
GRANT `roles/bigquery.dataViewer`
ON TABLE ${self()}
TO "user:222larabrown@gmail.com"
}
Revoca roles de BigQuery de una tabla o vista
Puedes revocar los roles de BigQuery de una tabla o vista agregando un
bloque post_operations con la
declaración DCL REVOKE
al archivo de definición .sqlx de la tabla o vista seleccionada.
Para revocar los roles de BigQuery de una tabla o vista seleccionada, sigue estos pasos:
En la consola de Google Cloud , ve a la página Dataform.
Selecciona un repositorio y, luego, un espacio de trabajo.
En el panel Archivos, expande el directorio
definitions/.Selecciona el archivo de definición
.sqlxde la tabla o vista a la que deseas revocar el acceso.En el bloque
post_operations, ingresa la siguiente sentenciaREVOKE:REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} FROM "USER_LIST"Reemplaza lo siguiente:
- ROLE_LIST: el rol de BigQuery o la lista de roles de BigQuery separados por comas que deseas revocar.
- RESOURCE_TYPE:
TABLEoVIEW. - USER_LIST: Es la lista separada por comas de los usuarios a los que se les revoca el rol. Para obtener una lista de los formatos válidos, consulta user_list.
Para revocar el acceso otorgado en una sentencia
GRANTen el archivo, reemplaza la sentenciaGRANTpor una sentenciaREVOKE.Opcional: Haz clic en Formato.
Ejecuta la tabla o vista.
Si revocaste el acceso a una tabla incremental, quita la sentencia
REVOKEdel archivo de definición de la tabla después de la primera ejecución.
En la siguiente muestra de código, se indica el rol de visualizador de BigQuery revocado de un usuario en una tabla:
config { type: "table" }
SELECT ...
post_operations {
REVOKE `roles/bigquery.dataViewer`
ON TABLE ${self()}
FROM "user:222larabrown@gmail.com"
}
Administra de forma colectiva los roles de BigQuery para tablas y vistas
Para controlar el acceso de BigQuery a tablas y vistas individuales en una
sola ubicación, puedes crear un archivo type: "operations" dedicado con
sentencias DCL
GRANT y
REVOKE.
Para administrar el acceso a la tabla de BigQuery en un solo archivo type: "operations",
sigue estos pasos:
En la consola de Google Cloud , ve a la página Dataform.
Selecciona un repositorio y, luego, un espacio de trabajo.
En el panel Archivos, junto a
definitions/, haz clic en el menú
Más.Haz clic en Crear archivo.
En el campo Agrega una ruta de archivo, ingresa el nombre del archivo seguido de
.sqlxdespués dedefinitions/. Por ejemplo,definitions/table-access.sqlx.Los nombres de archivo solo pueden incluir números, letras, guiones y guiones bajos.
Haz clic en Crear archivo.
En el panel Archivos, expande el directorio
definitions/y selecciona el archivo recién creado.En el archivo, ingresa el siguiente fragmento de código:
config { type: "operations" } GRANT "ROLE_LIST" ON RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST" REVOKE "ROLE_LIST" ON { "<var>" }}RESOURCE_TYPE RESOURCE_NAME TO "USER_LIST"Reemplaza lo siguiente:
- ROLE_LIST: el rol de BigQuery o la lista de roles de BigQuery separados por comas que deseas otorgar o revocar.
- RESOURCE_TYPE:
TABLEoVIEW. - RESOURCE_NAME: Es el nombre de la tabla o vista.
- USER_LIST: Es la lista separada por comas de los usuarios a los que se les otorga o revoca el rol. Para obtener una lista de los formatos válidos, consulta user_list.
Agrega las sentencias
GRANTyREVOKEsegún sea necesario.Para revocar el acceso otorgado en una sentencia
GRANTen el archivo, reemplaza la sentenciaGRANTpor una sentenciaREVOKE.Quitar la sentencia
GRANTsin agregar la sentenciaREVOKEno revoca el acceso.
Opcional: Haz clic en Formato.
Ejecuta el archivo después de cada actualización.
- Si otorgaste o revocaste el acceso en una tabla incremental, quita la
instrucción
GRANToREVOKEdel archivo después de la primera ejecución de la instrucción.
- Si otorgaste o revocaste el acceso en una tabla incremental, quita la
instrucción
Usa la API de Config para personalizar el comportamiento de IAM
Puedes usar el
método projects.locations.updateConfig de la API de Dataform
para personalizar el comportamiento de IAM y mejorar la seguridad.
Otorga un rol específico cuando se cree el recurso
Cuando configuras el campo setAuthenticatedUserAdmin como true en el
recurso projects.locations.repositories,
Dataform otorga automáticamente al usuario que crea el
repositorio el
rol de administrador de Dataform
(roles/dataform.admin) en ese repositorio. Además,
Dataform otorga a cualquier usuario que cree un espacio de trabajo en ese
repositorio el rol de Administrador de Dataform en el espacio de trabajo nuevo.
Puedes usar el campo creator_role
(versión preliminar)
en el
método projects.locations.updateConfig
para anular este comportamiento. Si setAuthenticatedUserAdmin es true y
configuras el campo creator_role con un rol personalizado, Dataform
otorga el rol personalizado en lugar del rol predeterminado dataform.admin.
Implementa permisos de programación mejorados
Para exigir que los usuarios necesiten permisos explícitos para programar
flujos de trabajo de Dataform, establece el campo enable_project_checks_for_scheduling en true en el
método projects.locations.updateConfig.
Cuando habilitas estas verificaciones para la programación, el usuario necesita los siguientes permisos:
Para crear una configuración de flujo de trabajo, sigue estos pasos:
- El permiso
dataform.workflowConfigs.createen el proyecto, otorgado por el rol de programador de código (roles/dataform.codeScheduler). - El permiso
dataform.repositories.scheduleWorkflowen el repositorio, otorgado por el rol de administrador de Dataform (roles/dataform.admin).
- El permiso
Para crear una configuración de lanzamiento, sigue estos pasos:
- El permiso
dataform.releaseConfigs.createen el proyecto, otorgado por el rol de programador de código (roles/dataform.codeScheduler). - El permiso
dataform.repositories.scheduleReleaseen el repositorio, otorgado por el rol de administrador de Dataform (roles/dataform.admin).
- El permiso
Habilita los espacios de trabajo privados
Para restringir el acceso al espacio de trabajo de Dataform de modo que solo el creador
del espacio de trabajo pueda leer y escribir código en ese espacio de trabajo, establece el
campo enable_private_workspace en true en el
método projects.locations.updateConfig.
Esta restricción también se aplica a la visualización de artefactos generados, como SQL compilado, errores de compilación y registros de ejecución para las compilaciones o invocaciones de flujo de trabajo del lugar de trabajo.
Este parámetro de configuración anula los roles de IAM estándar que otorgan acceso al lugar de trabajo a otros usuarios del repositorio.
¿Qué sigue?
- Para obtener más información sobre IAM, consulta Descripción general de IAM.
- Para obtener más información sobre cómo administrar el acceso a los recursos, consulta Administra el acceso a proyectos, carpetas y organizaciones.
- Para obtener más información sobre los conceptos clave de la federación de identidades de personal, consulta Federación de identidades de personal.
- Para obtener más información sobre los roles y permisos de IAM de BigQuery, consulta Control de acceso con IAM.
- Para obtener más información sobre cómo otorgar permisos detallados a los conjuntos de datos de BigQuery, consulta Controla el acceso a los conjuntos de datos.