En esta página, se explica cómo configurar el control de acceso detallado para Spanner en bases de datos con dialecto de GoogleSQL y bases de datos con dialecto de PostgreSQL.
Para obtener más información sobre el control de acceso detallado, consulta Información sobre el control de acceso detallado.
Para configurar el control de acceso detallado, sigue estos pasos:
Luego, los usuarios del control de acceso detallado deben especificar un rol de base de datos para realizar consultas, DML o operaciones de fila en la base de datos.
Antes de comenzar
Asegúrate de que a cada principal que sea un usuario de control de acceso detallado se le otorgue
el rol de IAM Cloud Spanner Viewer
(roles/spanner.viewer
).
Este rol se recomienda a nivel del proyecto para los usuarios que deben interactuar con
recursos de Spanner en la consola de Google Cloud .
Para obtener instrucciones, consulta Otorga permisos a los principales.
Crea roles de base de datos y otorga privilegios
Un rol de base de datos es un conjunto de privilegios de acceso detallados. Puedes crear hasta 100 roles de base de datos para cada base de datos.
Decide los roles y las jerarquías de roles en tu base de datos y encódelos en DDL. Al igual que con otros cambios de esquema en Spanner, te recomendamos que emitas los cambios de esquema en un lote en lugar de hacerlo por separado. Para obtener más información, consulta Limita la frecuencia de las actualizaciones de esquemas.
Console
Para crear un rol de base de datos y otorgarle privilegios de acceso detallados, sigue estos pasos:
Ve a la página Instancias en la consola de Google Cloud .
Selecciona la instancia que contiene la base de datos para la que deseas agregar el rol.
Selecciona la base de datos.
En la página Descripción general, haz clic en Spanner Studio.
En la página Spanner Studio, para cada rol de base de datos al que desees crear y otorgar privilegios, sigue estos pasos:
Para crear el rol, ingresa la siguiente sentencia:
CREATE ROLE ROLE_NAME;
Aún no hagas clic en Enviar.
Para otorgar privilegios al rol, ingresa una sentencia
GRANT
en la siguiente línea después de la sentenciaCREATE ROLE
.Para obtener detalles sobre la sintaxis de la sentencia
GRANT
, consulta Lenguaje de definición de datos de GoogleSQL. Para obtener información sobre los privilegios, consulta Privilegios de control de acceso detallado.Por ejemplo, para otorgar
SELECT
,INSERT
yUPDATE
en las tablasemployees
ycontractors
al rol de base de datoshr_manager
, ingresa la siguiente sentencia:GoogleSQL
GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO ROLE hr_manager;
PostgreSQL
GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO hr_manager;
Puedes usar una plantilla de DDL para la sentencia
GRANT
. En el panel Explorador, navega al rol para el que deseas otorgar privilegios. Haz clic en Ver acciones y selecciona el tipo de privilegio al que quieres otorgar acceso para este rol. La sentencia de plantillaGRANT
se propaga en una nueva pestaña del editor.
Haz clic en Enviar.
Si hay errores en tu DDL, la consola de Google Cloud muestra un error.
gcloud
Para crear un rol de base de datos y otorgarle privilegios de acceso detallados,
usa el comando gcloud spanner databases ddl update
con las sentencias CREATE ROLE
y GRANT
.
Para obtener detalles de sintaxis sobre las sentencias CREATE ROLE
y GRANT
, consulta Lenguaje de definición de datos de GoogleSQL.
Por ejemplo, usa el siguiente comando para crear un rol de base de datos y otorgarle privilegios en una o más tablas.
GoogleSQL
gcloud spanner databases ddl update DATABASE_NAME --instance=INSTANCE_NAME \ --ddl='CREATE ROLE ROLE_NAME; GRANT PRIVILEGES ON TABLE TABLES TO ROLE ROLE_NAME;'
PostgreSQL
gcloud spanner databases ddl update DATABASE_NAME --instance=INSTANCE_NAME \ --ddl='CREATE ROLE ROLE_NAME; GRANT PRIVILEGES ON TABLE TABLES TO ROLE_NAME;'
Reemplaza lo siguiente:
PRIVILEGES
es una lista de privilegios de control de acceso detallados delimitados por comas. Para obtener información sobre los privilegios, consulta Privilegios de control de acceso detallado.TABLES
es una lista de tablas delimitada por comas.
Por ejemplo, para otorgar SELECT
, INSERT
y UPDATE
en las tablas employees
y contractors
al rol de base de datos hr_analyst
en la base de datos hrdb1
en la instancia hr
, ingresa la siguiente sentencia:
GoogleSQL
gcloud spanner databases ddl update hrdb1 --instance=hr \ --ddl='CREATE ROLE hr_analyst; GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO ROLE hr_analyst;'
PostgreSQL
gcloud spanner databases ddl update hrdb1 --instance=hr \ --ddl='CREATE ROLE hr_analyst; GRANT SELECT, INSERT, UPDATE ON TABLE employees, contractors TO hr_analyst;'
Bibliotecas cliente
Estas muestras de código crean y eliminan un rol de base de datos.
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Crea una jerarquía de roles con herencia
Para crear una jerarquía de roles de base de datos, otorga un rol de base de datos a otro. Los roles secundarios (conocidos como roles de miembro) heredan los privilegios del superior.
Para otorgar un rol de base de datos a otro, usa la siguiente sentencia:
GoogleSQL
GRANT ROLE role1 TO ROLE role2;
PostgreSQL
GRANT role1 TO role2;
Para obtener más información, consulta Jerarquías y herencia de roles de bases de datos.
Otorga acceso a los roles de la base de datos a las principales de IAM
Antes de que un principal pueda usar un rol de base de datos para acceder a los recursos de Spanner, debes otorgarle acceso al rol de base de datos.
Console
Para otorgar acceso a roles de base de datos a un principal de IAM, sigue estos pasos:
En la página Descripción general de la base de datos, haz clic en MOSTRAR PANEL DE INFORMACIÓN si el panel de información aún no está abierto.
Haz clic en AGREGAR PRINCIPAL.
En el panel Otorgar acceso a database_name, en Agregar principales, especifica uno o más principales de IAM.
En Asignar roles, en el menú Seleccionar un rol, selecciona Cloud Spanner > Usuario de acceso detallado de Cloud Spanner.
Debes otorgar este rol solo una vez a cada principal. Hace que el principal sea un usuario de control de acceso detallado.
Haz clic en AGREGAR OTRA FUNCIÓN.
En el menú Selecciona un rol, selecciona Cloud Spanner > Usuario de roles de base de datos de Cloud Spanner.
Sigue estos pasos para crear la condición de IAM que especifica los roles que se otorgarán.
Junto al rol de Usuario de roles de base de datos de Cloud Spanner, haz clic en AGREGAR CONDICIÓN DE IAM.
En el panel Agregar condición, ingresa un título y una descripción opcional para la condición.
Si otorgas un solo rol de base de datos, por lo general, debes incluir el nombre del rol en el título de la condición. Si otorgas varios roles, puedes indicar algo sobre el conjunto de roles.
Haz clic en EDITOR DE CONDICIONES.
En el campo Expresión, ingresa el siguiente código:
resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/ROLE")
Reemplaza
ROLE
por el nombre de tu rol.O bien, para otorgar acceso al principal a más de un rol, agrega más condiciones con el operador o (
||
), como se muestra en el siguiente ejemplo:resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))
Este código otorga dos roles. Reemplaza
ROLE1
yROLE2
por los nombres de tus roles. Para otorgar más de dos roles, agrega más condiciones o.Puedes usar cualquier expresión de condición que admita IAM. Para obtener más información, consulta Descripción general de las condiciones de IAM.
Haz clic en Guardar.
En el panel anterior, verifica que la condición aparezca en la columna IAM Condition junto al campo Role.
Haz clic en Guardar.
En el panel de información, en Rol/Principal, observa que aparece Usuario del rol de base de datos de Cloud Spanner para cada condición definida.
El número entre paréntesis junto a la condición indica la cantidad de principales a los que se les otorga el rol de base de datos con esa condición. Puedes hacer clic en la flecha del expansor para ver la lista de principales.
Para corregir errores en los nombres o las condiciones de los roles de la base de datos, o bien para agregar roles de base de datos adicionales para un principal, sigue estos pasos:
Expande la entrada Usuario de roles de la base de datos de Cloud Spanner que enumera la condición que deseas.
Haz clic en el ícono Editar (lápiz) junto a una directora.
En el panel Editar acceso a database_name, haz una de estas acciones:
Haz clic en AGREGAR OTRA FUNCIÓN.
Para editar la condición, haz clic en el ícono Editar (lápiz) junto al nombre de la condición. Luego, en la página Editar condición, haz clic en EDITOR DE CONDICIONES, realiza las correcciones necesarias y haz clic en Guardar dos veces.
gcloud
Para otorgar acceso a roles de base de datos a un principal de IAM, sigue estos pasos:
Habilita el control de acceso detallado para el principal con el comando
gcloud spanner databases add-iam-policy-binding
de la siguiente manera:gcloud spanner databases add-iam-policy-binding DATABASE_NAME \ --instance=INSTANCE_NAME \ --role=roles/spanner.fineGrainedAccessUser \ --member=MEMBER_NAME \ --condition=None
MEMBER_NAME
es el identificador del principal. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.Con este comando, el principal se convierte en un usuario de control de acceso detallado. Envía este comando solo una vez para cada principal.
Si se ejecuta de forma correcta, el comando muestra toda la política de la base de datos.
Otorga permiso para usar uno o más roles de la base de datos con el comando
gcloud spanner databases add-iam-policy-binding
de la siguiente manera:gcloud spanner databases add-iam-policy-binding DATABASE_NAME \ --instance=INSTANCE_NAME \ --role=roles/spanner.databaseRoleUser \ --member=MEMBER_NAME \ --condition=CONDITION
MEMBER_NAME
es el identificador del principal. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.CONDITION
es una expresión de condición de IAM que especifica los roles que se otorgarán al principal.CONDITION
tiene la siguiente forma:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/ROLE1")),title=TITLE,description=DESCRIPTION'
O bien, para otorgar acceso al principal a más de un rol, agrega más condiciones con el operador o (
||
), como se muestra en el siguiente ejemplo:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))),title=TITLE,description=DESCRIPTION'
Este código otorga dos roles. Reemplaza
ROLE1
yROLE2
por los nombres de tus roles. Para otorgar más de dos roles, agrega más condiciones o con el operador||
.Puedes usar cualquier expresión de condición que admita IAM. Para obtener más información, consulta Descripción general de las condiciones de IAM.
Si se ejecuta de forma correcta, el comando muestra toda la política de la base de datos.
En el siguiente ejemplo, se otorgan los roles de la base de datos
hr_rep
yhr_manager
al principaljsmith@example.com
.gcloud spanner databases add-iam-policy-binding myDatabase \ --instance=myInstance \ --role=roles/spanner.databaseRoleUser \ --member=user:jsmith@example.com \ --condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/hr_rep") || resource.name.endsWith("/hr_manager"))),title=HR roles,description=Grant permissions on HR roles'
Bibliotecas cliente
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Informa a los usuarios y desarrolladores que comiencen a usar los roles de la base de datos
Después de completar la configuración inicial del control de acceso detallado, informa a los usuarios y a los desarrolladores de aplicaciones que deben comenzar a usar los roles de base de datos.
Los usuarios de control de acceso detallado deben comenzar a especificar un rol de base de datos cuando acceden a las bases de datos de Spanner a través de la consola de Google Cloud o Google Cloud CLI.
Las aplicaciones que usan el control de acceso detallado deben especificar un rol de base de datos cuando accedan a ella.
Para obtener más información, consulta Cómo acceder a una base de datos con control de acceso detallado.
Cómo migrar un principal al control de acceso detallado
Para migrar un principal de IAM del control de acceso a nivel de la base de datos al control de acceso detallado, sigue estos pasos:
Habilita el control de acceso detallado para el principal y otorga acceso a todos los roles de base de datos necesarios, como se describe en Otorga acceso a roles de base de datos a los principales de IAM.
Actualiza todas las aplicaciones que se ejecutan como este principal. Especifica los roles de la base de datos adecuados en las llamadas a los métodos de la biblioteca cliente.
Revocar todos los roles de IAM a nivel de la base de datos del principal De esta manera, el acceso del principal se rige por un solo método.
Excepción: Para interactuar con los recursos de Spanner en la consola deGoogle Cloud , todos los usuarios deben tener el rol de IAM
roles/spanner.viewer
.Para revocar los roles de IAM a nivel de la base de datos, sigue las instrucciones que se indican en Cómo quitar permisos a nivel de la base de datos.
Cómo enumerar los roles de la base de datos
Puedes enumerar los roles de la base de datos asociados con una base de datos.
Console
Para obtener una lista de los roles de la base de datos, ingresa la siguiente consulta en la página de Spanner Studio de la base de datos:
GoogleSQL
SELECT * FROM INFORMATION_SCHEMA.ROLES;
PostgreSQL
SELECT * FROM information_schema.enabled_roles;
La respuesta incluye el rol actual y los roles cuyos privilegios puede usar el rol actual a través de la herencia. Para recuperar todos los roles, usa el comando de Google Cloud CLI.
gcloud
Para obtener una lista sin filtrar de los roles de la base de datos, ingresa el siguiente comando.
Requiere el permiso spanner.databaseRoles.list
.
gcloud spanner databases roles list --database=DATABASE_NAME --instance=INSTANCE_NAME
Bibliotecas cliente
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Cómo ver los privilegios otorgados a un rol de base de datos
Para ver los privilegios otorgados a un rol, ejecuta las siguientes consultas:
GoogleSQL
SELECT * FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES WHERE grantee = 'ROLE_NAME'; SELECT * FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES WHERE grantee = 'ROLE_NAME'; SELECT * FROM INFORMATION_SCHEMA.CHANGE_STREAM_PRIVILEGES WHERE grantee = 'ROLE_NAME';
INFORMATION_SCHEMA.TABLE_PRIVILEGES
muestra los privilegios de las tablas y las vistas.
Los privilegios SELECT
, INSERT
y UPDATE
en TABLE_PRIVILEGES
también se muestran en COLUMN_PRIVILEGES
.
PostgreSQL
SELECT * FROM information_schema.table_privileges WHERE grantee = 'ROLE_NAME'; SELECT * FROM information_schema.column_privileges WHERE grantee = 'ROLE_NAME'; SELECT * FROM information_schema.change_stream_privileges WHERE grantee = 'ROLE_NAME';
information_schema.table_privileges
muestra los privilegios de las tablas y las vistas.
Los privilegios SELECT
, INSERT
y UPDATE
en table_privileges
también se muestran en column_privileges
.
Cómo ver los usuarios del control de acceso detallado
Para ver una lista de principales que son usuarios de control de acceso detallado, ejecuta el siguiente comando: Para ejecutar el comando, debes tener habilitada la API de Cloud Asset en tu
proyecto y debes tener el permiso de IAM cloudasset.assets.searchAllIamPolicies
.
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles=roles/spanner.fineGrainedAccessUser AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' \ --flatten=policy.bindings[].members[] \ --format='table(policy.bindings.members)'
El resultado es similar a este:
MEMBERS user:222larabrown@gmail.com user:baklavainthebalkans@gmail.com serviceAccount:cs-fgac-sa-1@cloud-spanner-demo.google.com.iam.gserviceaccount.com serviceAccount:cs-fgac-sa-2@cloud-spanner-demo.google.com.iam.gserviceaccount.com
Para obtener más información, consulta Habilita una API en tu proyecto de Google Cloud .
Cómo ver los principales de IAM con acceso a un rol de base de datos
Para ver una lista de principales a los que se les otorgó acceso a un rol de base de datos en particular, ejecuta el siguiente comando. Para ejecutar el comando, debes tener habilitada la API de Cloud Asset en tu proyecto y debes tener el permiso de IAM cloudasset.assets.searchAllIamPolicies
.
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles=roles/spanner.databaseRoleUser AND policy:"resource.name" AND policy:/ROLE_NAME AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' \ --flatten=policy.bindings[].members[] \ --format='table(policy.bindings.members)'
El resultado es similar a este:
MEMBERS 222larabrown@gmail.com
Cómo ver las condiciones de IAM de un principal
Para ver una lista de las condiciones de IAM que se especificaron cuando se otorgó el rol Usuario de roles de la base de datos de Cloud Spanner a una principal, ejecuta el siguiente comando:
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles=roles/spanner.databaseRoleUser AND policy:resource.name AND policy:"PRINCIPAL_IDENTIFIER" AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' \ --flatten=policy.bindings[] \ --format='table(policy.bindings.condition.expression)'
En el ejemplo anterior, PRINCIPAL_IDENTIFIER es:
{ user:user-account-name | serviceAccount:service-account-name }
Ejemplos de PRINCIPAL_IDENTIFIER:
user:222larabrown@gmail.com serviceAccount:cs-fgac-sa-1@cloud-spanner-demo.google.com.iam.gserviceaccount.com
En el siguiente resultado de ejemplo, se muestran dos expresiones de condición.
EXPRESSION resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/hr_analyst") resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/hr_manager")
Verifica las políticas de IAM para detectar condiciones de rol de base de datos faltantes
Después de otorgar acceso a los roles de la base de datos a las principales, te recomendamos que te asegures de que cada vinculación de IAM tenga una condición especificada.
Para realizar esta verificación, ejecuta el siguiente comando:
gcloud asset search-all-iam-policies \ --scope=projects/PROJECT_NAME \ --query='roles:roles/spanner.databaseRoleUser AND resource=//spanner.googleapis.com/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME' --flatten=policy.bindings[].members[]
El resultado es similar a este:
ROLE MEMBERS EXPRESSION roles/spanner.databaseRoleUser serviceAccount:cs-fgac-sa-1@... roles/spanner.databaseRoleUser serviceAccount:cs-fgac-sa-2@... resource.type == "spanner…"
Ten en cuenta que al primer resultado le falta una condición y, por lo tanto, los principales de esta vinculación tienen acceso a todos los roles de la base de datos.
Cómo descartar un rol de la base de datos
Si descartas un rol de base de datos, se revoca automáticamente la membresía de otros roles en él y la membresía del rol en otros roles.
Para descartar un rol de base de datos, primero debes hacer lo siguiente:
- Revocar todos los privilegios de control de acceso detallado del rol
- Quita todas las vinculaciones de políticas de IAM que hagan referencia a ese rol, de modo que un rol de base de datos creado más adelante con el mismo nombre no herede esas vinculaciones.
Console
Para eliminar un rol de base de datos, sigue estos pasos:
En la página Descripción general de la base de datos, haz clic en Spanner Studio.
Para revocar los privilegios del rol, ingresa una sentencia
REVOKE
.GoogleSQL
Para obtener detalles sobre la sintaxis de la sentencia
REVOKE
, consulta Lenguaje de definición de datos de GoogleSQL. Para obtener información sobre los privilegios, consulta Privilegios de control de acceso detallado.Por ejemplo, para revocar
SELECT
,INSERT
yUPDATE
en las tablasemployees
ycontractors
del rol de base de datoshr_manager
, ingresa la siguiente sentencia:REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM ROLE hr_manager;
PostgreSQL
Para obtener detalles sobre la sintaxis de la sentencia
REVOKE
, consulta Lenguaje de definición de datos de PostgreSQL. Para obtener información sobre los privilegios, consulta Privilegios de control de acceso detallado.Por ejemplo, para revocar los privilegios
SELECT
,INSERT
yUPDATE
en las tablasemployees
ycontractors
del rol de la base de datoshr_manager
, ingresa la siguiente sentencia:REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM hr_manager;
Puedes usar una plantilla de DDL para la sentencia
REVOKE
. En el panel Explorador, navega al rol para el que deseas revocar el privilegio. Haz clic en Ver acciones y selecciona el tipo de privilegio para el que quieres revocar el acceso a este rol. La sentencia de plantillaREVOKE
se propaga en una nueva pestaña del editor.Borra cualquier condición de IAM asociada con el rol.
En la lista de roles del panel de información, busca el rol Usuario de roles de la base de datos de Cloud Spanner que tenga el título de la condición de interés junto a él y, luego, expándelo para ver las principales que tienen acceso al rol.
En el caso de uno de los directores, haz clic en el ícono Editar director (lápiz).
En la página Editar acceso, haz clic en el ícono Borrar rol (papelera) junto al rol de Usuario de roles de base de datos de Cloud Spanner.
Haz clic en Guardar.
Repite los tres pasos anteriores para los demás principales que aparecen en la condición.
Para eliminar el rol, ve a la página Spanner Studio y, luego, ingresa la siguiente instrucción:
DROP ROLE ROLE_NAME;
Haz clic en Enviar.
gcloud
Para revocar todos los privilegios de un rol y, luego, descartarlo, usa el comando
gcloud spanner databases ddl update
de la siguiente manera:GoogleSQL
gcloud spanner databases ddl update DATABASE_NAME \ --instance=INSTANCE_NAME \ --ddl='REVOKE PERMISSIONS ON TABLE TABLE_NAME FROM ROLE ROLE_NAME; DROP ROLE ROLE_NAME;'
PostgreSQL
gcloud spanner databases ddl update DATABASE_NAME \ --instance=INSTANCE_NAME \ --ddl='REVOKE PERMISSIONS ON TABLE TABLE_NAME FROM ROLE_NAME; DROP ROLE ROLE_NAME;'
Los valores válidos para
PERMISSIONS
sonSELECT
,INSERT
,UPDATE
yDELETE
.Para borrar las condiciones de IAM relacionadas, usa el comando
gcloud spanner databases remove-iam-policy-binding
de la siguiente manera:gcloud spanner databases remove-iam-policy-binding DATABASE_NAME \ --instance=INSTANCE_NAME \ --role=ROLE_NAME \ --member=MEMBER_NAME \ --condition=CONDITION
MEMBER_NAME
es el identificador del principal. Debe tener el formatouser|group|serviceAccount:email
odomain:domain
.CONDITION
es una expresión de condición de IAM que especifica los roles que se otorgarán al principal.CONDITION
tiene la siguiente forma:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))),title=TITLE,description=DESCRIPTION'
Toda la especificación de la condición debe coincidir exactamente con la especificación de la condición que se usó en el comando que otorgó el permiso, incluido el título y la descripción.
Bibliotecas cliente
Estas muestras de código crean y eliminan un rol de base de datos.
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Más información
- Información sobre el control de acceso detallado
- Control de acceso detallado para los flujos de cambios
- Privilegios de control de acceso detallado
- Referencia de DDL de GoogleSQL
- Realiza actualizaciones de esquemas