En este documento, se muestra cómo hacer lo siguiente en Dataform:
- Otorga el acceso requerido a Dataform.
- Controla el acceso a Dataform con IAM.
- Controla el acceso a tablas individuales con IAM.
Antes de comenzar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery and Dataform APIs.
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.
- Editor de datos de BigQuery en proyectos a los que Dataform necesita acceso de lectura y escritura. Por lo general, incluyen el proyecto que aloja tu repositorio de Dataform.
- Visualizador de datos de BigQuery en proyectos a los que Dataform necesita acceso de solo lectura
- Usuario del trabajo de BigQuery en el proyecto que aloja tu repositorio de Dataform
- Propietario de datos de BigQuery si deseas consultar conjuntos de datos de BigQuery
- Roles de BigQuery para el control de acceso a nivel de la columna si deseas usar etiquetas de política de BigQuery
Cualquier cuenta de servicio a la que se le otorguen los roles requeridos puede obtener acceso a BigQuery o Secret Manager en el proyecto al que pertenece la cuenta de servicio, independientemente de los Controles del servicio de VPC.
Para obtener más información, consulta Configura los Controles del servicio de VPC para Dataform.
Cualquier usuario que tenga el permiso
dataform.repositories.create
de IAM puede ejecutar código con la cuenta de servicio predeterminada de Dataform y todos los permisos otorgados a esa cuenta de servicio.Para obtener más información, consulta Consideraciones de seguridad para los permisos de Dataform.
- Para modificar la configuración de un flujo de trabajo con las credenciales de otro usuario de la Cuenta de Google adjuntas, debes adjuntar tus propias credenciales de usuario de la 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.
- No puedes modificar el resultado de la compilación de una configuración de lanzamiento si hay configuraciones de flujo de trabajo que hacen referencia a la configuración de lanzamiento y tienen adjuntas las credenciales de otro usuario de la Cuenta de Google.
No puedes establecer un parámetro de configuración de flujo de trabajo para autenticarte con credenciales de usuario de la Cuenta de Google y hacer referencia a un parámetro de configuración de lanzamiento con una programación. Esta limitación tiene las siguientes consecuencias:
- No puedes actualizar una configuración de lanzamiento para que use una programación si hay configuraciones de flujo de trabajo que hacen referencia a la configuración de lanzamiento y que están configuradas para autenticarse con credenciales de usuario de la Cuenta de Google.
- No puedes crear una configuración de flujo de trabajo que se autentique con credenciales de usuario de la Cuenta de Google y que apunte a una configuración de versión con una programación.
- No puedes crear ni actualizar un parámetro de configuración de flujo de trabajo para usar credenciales de usuario de la Cuenta de Google y apuntar a un parámetro de configuración de lanzamiento con una programación.
En la consola de Google Cloud , ve a la página Dataform.
Selecciona o crea un repositorio.
En la consola de Google Cloud , ve a la página IAM.
Haz clic en Otorgar acceso.
En el campo Nuevos principales, ingresa el ID de la cuenta de servicio o el correo electrónico de la Cuenta de Google del usuario (Vista previa).
En la lista Seleccionar un rol, selecciona el rol Usuario de trabajo de BigQuery.
Haz clic en Agregar otro rol y, luego, en la lista Selecciona un rol, elige el rol de Editor de datos de BigQuery.
Haz clic en Agregar otro rol y, luego, en la lista Selecciona un rol, elige el rol de Visualizador de datos de BigQuery.
Haz clic en Guardar.
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 de Dataform.
Ve a Permisos y, luego, haz clic en Otorgar acceso.
En el campo Principales nuevas, ingresa el ID de tu cuenta de servicio predeterminada de Dataform.
El ID de tu cuenta de servicio de Dataform predeterminada tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
En la lista Seleccionar un rol, selecciona el rol Creador de tokens de cuenta de servicio.
Haz clic en Guardar.
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.config.get
dataform.config.update
dataform.locations.get
dataform.locations.list
dataform.releaseConfigs.create
dataform.releaseConfigs.delete
dataform.releaseConfigs.get
dataform.releaseConfigs.list
dataform.releaseConfigs.update
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.
workflowConfigs. create dataform.
workflowConfigs. delete dataform.workflowConfigs.get
dataform.workflowConfigs.list
dataform.
workflowConfigs. update dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.commentThreads.create
dataform.commentThreads.delete
dataform.commentThreads.get
dataform.commentThreads.list
dataform.commentThreads.update
dataform.comments.create
dataform.comments.delete
dataform.comments.get
dataform.comments.list
dataform.comments.update
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.repositories.commit
dataform.
repositories. computeAccessTokenStatus dataform.repositories.create
dataform.repositories.delete
dataform.
repositories. fetchHistory dataform.
repositories. fetchRemoteBranches dataform.repositories.get
dataform.
repositories. getIamPolicy dataform.repositories.list
dataform.
repositories. queryDirectoryContents dataform.repositories.readFile
dataform.
repositories. setIamPolicy dataform.repositories.update
dataform.workspaces.commit
dataform.workspaces.create
dataform.workspaces.delete
dataform.
workspaces. fetchFileDiff dataform.
workspaces. fetchFileGitStatuses dataform.
workspaces. fetchGitAheadBehind dataform.workspaces.get
dataform.
workspaces. getIamPolicy dataform.
workspaces. installNpmPackages dataform.workspaces.list
dataform.
workspaces. makeDirectory dataform.
workspaces. moveDirectory dataform.workspaces.moveFile
dataform.workspaces.pull
dataform.workspaces.push
dataform.
workspaces. queryDirectoryContents dataform.workspaces.readFile
dataform.
workspaces. removeDirectory dataform.workspaces.removeFile
dataform.workspaces.reset
dataform.
workspaces. searchFiles dataform.
workspaces. setIamPolicy dataform.workspaces.writeFile
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
compilationResults. create dataform.
compilationResults. get dataform.
compilationResults. list dataform.
compilationResults. query dataform.locations.get
dataform.locations.list
dataform.
workflowInvocations. cancel dataform.
workflowInvocations. create dataform.
workflowInvocations. delete dataform.
workflowInvocations. get dataform.
workflowInvocations. list dataform.
workflowInvocations. query dataform.locations.get
dataform.locations.list
- 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
) Ve a la página IAM y administración > Roles.
En el campo Filtro, selecciona Usado en, escribe
Dataform
y, luego, presiona Intro.Haz clic en uno de los roles enumerados para ver sus permisos en el panel derecho.
Por ejemplo, el rol de administrador de Dataform tiene acceso completo a todos los recursos de Dataform.
En la terminal, pasa la solicitud de la API de Dataform
repositories.setIamPolicy
con una política de acceso.En la política, vincula un usuario, un grupo, un dominio o una 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
,domain
oserviceAccount
IDENTIFIER
: Es el usuario, el grupo, el dominio o la cuenta de servicio al que deseas otorgar 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.
En la terminal, pasa la solicitud de la API de Dataform
repositories.setIamPolicy
con una política de acceso.En la política, vincula la principal
allAuthenticatedUsers
a un rol seleccionado con el siguiente formato:{ "policy": { "bindings": [ { "role": "roles/ROLE", "members": [ "allAuthenticatedUsers", ] }, ], } }
Reemplaza
ROLE
por un rol de IAM de Dataform que quieras otorgar a todos los usuarios autenticados.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
.sqlx
de la tabla o vista a la que quieres 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: Es el rol de BigQuery o la lista de roles de BigQuery separados por comas que deseas otorgar.
RESOURCE_TYPE:
TABLE
oVIEW
.USER_LIST: Es la lista separada por comas de los usuarios a los que se 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 instrucción
GRANT
del archivo de definición de la tabla después de la primera ejecución.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
.sqlx
de la tabla o la vista a la que quieres revocar el acceso.En el bloque
post_operations
, ingresa la siguiente instrucciónREVOKE
:REVOKE "ROLE_LIST" ON "RESOURCE_TYPE" ${self()} FROM "USER_LIST"
Reemplaza lo siguiente:
- ROLE_LIST: Es el rol de BigQuery o la lista de roles de BigQuery separados por comas que deseas revocar.
- RESOURCE_TYPE:
TABLE
oVIEW
. - USER_LIST: Es la lista separada por comas de los usuarios a los que se les revocó el rol. Para obtener una lista de los formatos válidos, consulta user_list.
Para revocar el acceso otorgado en una sentencia
GRANT
del archivo, reemplaza la sentenciaGRANT
por una sentenciaREVOKE
.Opcional: Haz clic en Formato.
Ejecuta la tabla o vista.
Si revocaste el acceso a una tabla incremental, quita la instrucción
REVOKE
del archivo de definición de la tabla después de la primera ejecución.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 Agregar una ruta de archivo, ingresa el nombre del archivo seguido de
.sqlx
despué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: Es el rol de BigQuery o la lista de roles de BigQuery separados por comas que deseas otorgar o revocar.
- RESOURCE_TYPE:
TABLE
oVIEW
. - 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
GRANT
yREVOKE
según sea necesario.Para revocar el acceso otorgado en una sentencia
GRANT
del archivo, reemplaza la sentenciaGRANT
por una sentenciaREVOKE
.Quitar la instrucción
GRANT
sin agregar la instrucciónREVOKE
no revoca el acceso.
Opcional: Haz clic en Formato.
Ejecuta el archivo después de cada actualización.
- Si otorgaste o revocaste el acceso a una tabla incremental, quita la instrucción
GRANT
oREVOKE
del archivo después de la primera ejecución de la instrucción.
- Si otorgaste o revocaste el acceso a una tabla incremental, quita la instrucción
- Para obtener más información sobre IAM, consulta la 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.
Otorga el acceso requerido a Dataform
En esta sección, se muestra cómo otorgar los roles de Identity and Access Management (IAM) que requieren las cuentas de servicio de Dataform para ejecutar flujos de trabajo en BigQuery.
Acerca de las cuentas de servicio en Dataform
Cuando creas tu primer repositorio de Dataform, Dataform genera automáticamente una cuenta de servicio predeterminada. Dataform usa la cuenta de servicio predeterminada para interactuar con BigQuery en tu nombre. De forma predeterminada, a la cuenta de servicio predeterminada de Dataform no se le otorgan roles ni permisos de BigQuery. Debes otorgar el acceso requerido a la cuenta de servicio predeterminada de Dataform.
El ID de tu cuenta de servicio de Dataform predeterminada tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
Reemplaza PROJECT_NUMBER por el ID numérico de tu proyecto deGoogle Cloud . Puedes encontrar el ID de tu proyecto en el Google Cloud panel de la consola.Google Cloud Para obtener más información, consulta Identifica proyectos.
Además de la cuenta de servicio predeterminada de Dataform, puedes usar otras cuentas de servicio para ejecutar flujos de trabajo en tu nombre. Puedes configurar cuentas de servicio personalizadas de las siguientes maneras:
Cuando creas un repositorio o una configuración de flujo de trabajo de Dataform, puedes seleccionar cualquier cuenta de servicio asociada a tu proyecto Google Cloud al que tengas acceso. Debes configurar los permisos necesarios para todas las cuentas de servicio asociadas con tus recursos de Dataform.
Una cuenta de servicio personalizada asociada con un repositorio de Dataform solo se usa para ejecutar flujos de trabajo desde ese repositorio. Todas las demás operaciones del repositorio se siguen realizando con la cuenta de servicio predeterminada de Dataform.
Roles necesarios para las cuentas de servicio de Dataform y las Cuentas de Google
Las cuentas de servicio predeterminadas y personalizadas, así como las credenciales de usuario de la Cuenta de Google (versión preliminar) que se usan para la autenticación en Dataform, requieren los siguientes roles de IAM de BigQuery para poder ejecutar flujos de trabajo en BigQuery:
Además, debes otorgar a la cuenta de servicio predeterminada de Dataform el rol de creador de tokens de cuenta de servicio (roles/iam.serviceAccountTokenCreator
) para que pueda acceder a las cuentas de servicio personalizadas que quieras usar en Dataform.
Si habilitaste el modo act-as estricto (versión preliminar) y configuraste el parámetro de configuración Frecuencia para una configuración de flujo de trabajo, otorga el rol de Usuario de cuenta de servicio (roles/iam.serviceAccountUser
) a la cuenta de servicio predeterminada de Dataform en la cuenta de servicio efectiva para la configuración del flujo de trabajo.
Consideraciones de seguridad para las cuentas de servicio y las Cuentas de Google de Dataform
Otorgar los roles que requiere Dataform a una cuenta de servicio o a una Cuenta de Google de un usuario (versión preliminar) conlleva las siguientes consideraciones de seguridad:
Para restringir los datos que una cuenta de servicio o usuario puede 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 la Cuenta de Google de otro usuario, se aplican las siguientes restricciones:
Otorga los roles de BigQuery necesarios a una cuenta de servicio o una Cuenta de Google que se use en Dataform
Para otorgar los roles de IAM de BigQuery necesarios a tu cuenta de servicio predeterminada de Dataform, a una cuenta de servicio personalizada que quieras usar en Dataform o a la Cuenta de Google de un usuario que quieras usar para autenticarte en Dataform (versión preliminar), sigue estos pasos:
Otorga acceso a la creación de tokens a una cuenta de servicio personalizada
Para usar una cuenta de servicio personalizada en Dataform, la cuenta de servicio predeterminada de Dataform debe poder acceder a la cuenta de servicio personalizada. Para otorgar este acceso, debes agregar la cuenta de servicio predeterminada de Dataform como principal a la cuenta de servicio personalizada con el rol de creador de tokens de cuentas de servicio.
Para otorgar acceso a la cuenta de servicio predeterminada de Dataform a una cuenta de servicio personalizada, sigue estos pasos:
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 Identity and Access Management (IAM) para el control de acceso. Para obtener más información sobre los roles y los permisos en IAM, consulta Comprende los roles y los permisos.
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. |
|
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 Viewer( Read-only access to all code resources. |
|
Dataform Editor( Edit access to Workspaces and Read-only access to Repositories. |
|
Dataform Service Agent( Gives permission for the Dataform API to access a secret from Secret Manager |
|
Dataform Viewer( Read-only access to all Dataform resources. |
|
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 la cuenta de servicio predeterminada de Dataform y todos los permisos otorgados a esa cuenta de servicio. Esto incluye la ejecución de flujos de trabajo de Dataform.
El permiso dataform.repositories.create
se incluye en los siguientes roles de IAM:
Para restringir los datos que una cuenta de servicio o usuario puede 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 obtener más información sobre la cuenta de servicio predeterminada de Dataform y los roles y permisos que requiere, consulta Otorga el acceso requerido a Dataform.
Consulta los roles de Dataform
En la consola de Google Cloud , sigue estos pasos:
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 de Dataform individual, sigue estos pasos:
El siguiente comando pasa la solicitud de la API de Dataform 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/v1beta1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Otorga acceso público a un repositorio
Puedes otorgar acceso público a un repositorio de Dataform otorgando roles de IAM en el repositorio a la principal allAuthenticatedUsers
.
Cuando asignas un rol de IAM al 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:
El siguiente comando pasa la solicitud de la API de Dataform 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/v1beta1/projects/examplepetstore/locations/us-central1/repositories/sales:setIamPolicy"
Cómo impedir el acceso público a los repositorios
Para garantizar que no se otorgue acceso público a ningún repositorio de Dataform, puedes restringir el principal de 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 externo (IdP) para autenticar y autorizar a los usuarios en los servicios con IAM. Google Cloud
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 una 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 el siguiente muestra de código, se muestra 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"
}
Cómo revocar 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 instrucción REVOKE
de DCL al archivo de definición .sqlx
de la tabla o vista seleccionada.
Para revocar roles de BigQuery de una tabla o vista seleccionada, sigue estos pasos:
En el siguiente muestra de código, se muestra cómo se revoca el rol de visualizador de BigQuery de un usuario en una tabla:
config { type: "table" }
SELECT ...
post_operations {
REVOKE `roles/bigquery.dataViewer`
ON TABLE ${self()}
FROM "user:222larabrown@gmail.com"
}
Administrar 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 instrucciones de DCL GRANT
y REVOKE
.
Para administrar el acceso a las tablas de BigQuery en un solo archivo type: "operations"
, sigue estos pasos: