En esta página, se explica cómo configurar un control de acceso detallado para Bases de datos de Spanner.
Si deseas obtener más información sobre el control de acceso detallado, consulta Acerca del control de acceso detallado.
La configuración del control de acceso detallado implica los siguientes pasos:
Luego, los usuarios de 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 se le otorgue a cada principal que será un usuario de control de acceso detallado
el rol de IAM Cloud Spanner Viewer
(roles/spanner.viewer
)
Se recomienda este rol 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 las principales.
Crea roles de base de datos y otorga privilegios
Un rol de base de datos es una colección de privilegios de acceso detallados. Puedes y puedes crear hasta 100 roles de base de datos por cada base de datos.
Decide los roles y las jerarquías de roles en tu base de datos y codifícalos en DDL. Como con otros cambios de esquema en Spanner, te recomendamos cambios de esquema por lotes en lugar de por separado. Para obtener más información, consulta Limita la frecuencia de las actualizaciones del esquema.
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 de Spanner Studio, para cada rol de base de datos que desees para crearlos y otorgarles privilegios, sigue estos pasos:
Para crear el rol, ingresa la siguiente declaración:
CREATE ROLE ROLE_NAME;
Todavía no hagas clic en Enviar.
Para otorgar privilegios al rol, ingresa una sentencia de
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 detallados.Por ejemplo, para otorgar
SELECT
,INSERT
yUPDATE
en las tablasemployees
ycontractors
a la 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 declaración
GRANT
. En la En el panel Explorer, navega hasta el rol que deseas otorgar. privilegios. Haz clic en Ver acciones. y selecciona el tipo de privilegio que quieres otorgarle a este rol. La declaración 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 .
gcloud
Para crear un rol de base de datos y otorgarle privilegios de acceso detallados,
usa gcloud spanner databases ddl update
con sentencias CREATE ROLE
y GRANT
.
Para obtener detalles sobre la sintaxis de 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 delimitada por comas de privilegios de control de acceso detallados. Para obtener información sobre los privilegios, Consulta Privilegios de control de acceso detallados.TABLES
es una lista de tablas delimitadas por comas.
Por ejemplo, para otorgar SELECT
,
INSERT
y UPDATE
en las tablas employees
y contractors
a la
rol hr_analyst
en la base de datos hrdb1
en la instancia hr
, ingresa
la siguiente declaración:
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
Con estas muestras de código, se crea y se descarta un rol de base de datos.
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Cómo crear una jerarquía de roles con herencia
Puedes crear una jerarquía de roles de base de datos si otorgas un rol de base de datos a con el otro. Los roles secundarios (conocidos como roles de los miembros) heredan los privilegios del superior.
Para otorgar un rol de base de datos a otro rol de base de datos, usa la siguiente instrucción:
GoogleSQL
GRANT ROLE role1 TO ROLE role2;
PostgreSQL
GRANT role1 TO role2;
Para obtener más información, consulta Jerarquía y herencia de roles de bases de datos.
Otorga acceso a los roles de bases de datos a las principales de IAM
Antes de que una principal pueda usar un rol de base de datos para acceder a Spanner recursos, debes otorgarles acceso al rol de base de datos.
Console
Para otorgar acceso a los roles de base de datos a una 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 aparece el menú Información panel aún no está abierto.
Haz clic en AGREGAR PRINCIPAL.
En el panel Otorgar acceso a database_name, en Agrega principales; especifica una o más principales de IAM.
En Asignar roles, en el menú Selecciona un rol, elige Cloud Spanner > Usuario de acceso detallado a Cloud Spanner.
Debes otorgar este rol solo una vez a cada principal. Esto hace que la a un usuario de control de acceso detallado.
Haz clic en AGREGAR OTRA FUNCIÓN.
En el menú Selecciona un rol, elige Cloud Spanner > Usuario de rol de base de datos de Cloud Spanner.
Sigue estos pasos para crear la condición de IAM que especifica los roles que se deben otorgar.
Junto al rol Usuario de rol 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 asignas un solo rol de base de datos, lo más común incluye el nombre del rol en el título de la condición. Si vas a otorgar varias en los roles, podrías indicar algo sobre el conjunto de roles.
Haz clic en EDITOR DE ESTADO.
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 del rol.O, para otorgar acceso a la principal a más de un rol, agrega más condiciones con el operador or (
||
), como se muestra a continuación 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 or.Puedes usar cualquier expresión de condición que sea compatible con 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 aparezca la condición. en la columna Condición de IAM junto al campo Función.
Haz clic en Guardar.
De vuelta en el panel de información, en Rol/Principal, verás que aparece Usuario de 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 el número de principales que están otorgada el rol de base de datos por esa condición. Puedes hacer clic en el flecha de expansión para ver la lista de principales.
Para corregir errores en los nombres o las condiciones de los roles de las bases de datos, o para agregar roles de base de datos adicionales para una principal, sigue estos pasos:
Expande la entrada Usuario de rol de base de datos de Cloud Spanner que muestra la lista. la condición que deseas.
Haz clic en el ícono de Editar (lápiz) junto a una principal.
En el panel Acceso de edición a database_name, realiza una de las siguientes acciones: lo siguiente:
Haz clic en AGREGAR OTRA FUNCIÓN.
Para editar la condición, haz clic en el ícono Editar (lápiz) junto a al nombre de la condición. Luego, en la página Editar condición, haz clic en EDITOR DE CONDICIÓN, realiza las correcciones y haz clic en Guardar. dos veces.
gcloud
Para otorgar acceso a los roles de bases de datos a una principal de IAM, sigue estos pasos:
Habilita el control de acceso detallado para la principal con el
gcloud spanner databases add-iam-policy-binding
comando 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
.Este comando hace que la principal sea un usuario de control de acceso detallado. Enviar esto comando solo una vez para cada principal.
Si se ejecuta de forma correcta, el comando genera la política completa para la base de datos.
Otorga permiso para usar uno o más roles de base de datos mediante el
gcloud spanner databases add-iam-policy-binding
comando 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 condición de IAM expresión que especifique los roles que se otorgarán a la principal.CONDITION
tiene el siguiente formato:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && resource.name.endsWith("/ROLE1")),title=TITLE,description=DESCRIPTION'
O, para otorgar acceso a la principal a más de un rol, agrega más condiciones con el operador or (
||
), como se muestra a continuación 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||
como "autor" y "título" usando un operador lógico.Puedes usar cualquier expresión de condición que sea compatible con IAM. Para obtener más información, consulta Descripción general de las condiciones de IAM.
Si se ejecuta de forma correcta, el comando genera la política completa para la base de datos.
En el siguiente ejemplo, se otorgan los roles de base de datos
hr_rep
yhr_manager
. a la 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 bases de datos
Una vez completada la configuración inicial y detallada del control de acceso, informa a los usuarios a los desarrolladores de aplicaciones que deben empezar a usar roles de bases de datos.
Los usuarios de control de acceso detallado deben comenzar a especificar un rol de base de datos cuando acceder a las bases de datos de Spanner a través de la consola de Google Cloud o con Google Cloud CLI.
Las aplicaciones que usan control de acceso detallado deben especificar un rol de base de datos cuando antes de acceder a la base de datos.
Para obtener más información, consulta Accede a una base de datos con un control de acceso detallado.
Transición de una principal a un control de acceso detallado
Para hacer la transición de una principal de IAM desde el nivel de la base de datos el control de acceso detallado a un control de acceso detallado, sigue estos pasos:
Habilita el control de acceso detallado para la principal y otorga acceso a todos los roles de base de datos, como se describe en Otorga acceso a los roles de bases de datos a las principales de IAM.
Actualiza todas las aplicaciones que se ejecutan como esta principal. Especifica los roles de base de datos en llamadas a los métodos de biblioteca cliente.
Revoca todos los roles de IAM a nivel de la base de datos de la principal. De esta manera, el acceso de la principal se rige por un solo método.
Excepción: Interactuar con recursos de Spanner en la consola de Google Cloud, todos los usuarios deben tener
roles/spanner.viewer
de IAM.Para revocar los roles de IAM a nivel de la base de datos, sigue las instrucciones que se indican en Quita los permisos a nivel de la base de datos.
Enumera los roles de la base de datos
Puedes enumerar los roles de base de datos asociados con una base de datos.
Console
Para enumerar los roles de la base de datos, ingresa la siguiente consulta en el Página de Spanner Studio para la base de datos:
GoogleSQL
SELECT * FROM INFORMATION_SCHEMA.ROLES;
PostgreSQL
SELECT * FROM information_schema.enabled_roles;
La respuesta incluirá el rol actual y los roles cuyos privilegios un rol de IAM que se puede usar a través de la herencia. Para recuperar todos los roles, usa el comando de Google Cloud CLI.
gcloud
Para obtener una lista sin filtros de roles de 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
Visualiza 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 privilegios en las tablas y las vistas.
Los privilegios SELECT
, INSERT
y UPDATE
en TABLE_PRIVILEGES
también son
se muestra 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 privilegios en las tablas y las vistas.
Los privilegios SELECT
, INSERT
y UPDATE
en table_privileges
también son
se muestra en column_privileges
.
Consulta usuarios de control de acceso detallados
Para ver una lista de principales que son usuarios de control de acceso detallados, ejecuta el siguiente comando:
kubectl. Para ejecutar el comando, debes tener habilitada la API de Cloud Asset en tu
proyecto y debes contar con los
cloudasset.assets.searchAllIamPolicies
permiso de IAM.
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.
Ver las principales de IAM con acceso a un rol de base de datos
Para ver una lista de principales a las que se les otorgó acceso a una cuenta en particular
base de datos, ejecuta el siguiente comando. Para ejecutar el comando, debes tener
Cloud Asset API habilitada en tu proyecto, y debes tener la
cloudasset.assets.searchAllIamPolicies
permiso de IAM.
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
Visualiza las condiciones de IAM de una principal
Para ver una lista de las condiciones de IAM que se especificaron cuando otorgues el rol Usuario de rol de 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)'
donde 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
El siguiente resultado de ejemplo muestra 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")
Revisa las políticas de IAM para ver las condiciones de los roles de la base de datos faltantes
Después de otorgar acceso a las principales a los roles de bases de datos, te recomendamos te aseguras de que cada vinculación de IAM tenga especificada una condición.
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, las principales de esta vinculación tienen acceso a todos los roles de la base de datos.
Descarta un rol de base de datos
Si descartas un rol de base de datos, se revoca automáticamente la membresía de otros roles del rol y revoca la membresía del rol en otros roles.
Para descartar un rol de base de datos, primero debes hacer lo siguiente:
- Revoca todos los privilegios de control de acceso detallados del rol.
- Quita cualquier vinculación de política de IAM que se refieran a ese rol, de modo que un rol de base de datos creado posteriormente con el mismo no hereda esas vinculaciones.
Console
Para descartar 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 detallados.Por ejemplo, para revocar
SELECT
, haz lo siguiente:INSERT
yUPDATE
en las tablasemployees
ycontractors
de la 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 detallados.Por ejemplo, para revocar
SELECT
, ejecuta lo siguiente:INSERT
yUPDATE
en los dispositivosemployees
ycontractors
del rol de base de datoshr_manager
, ingresa siguiente declaración:REVOKE SELECT, INSERT, UPDATE ON TABLE employees, contractors FROM hr_manager;
Puedes usar una plantilla de DDL para la declaración
REVOKE
. En la Panel Explorer, navega hasta el rol que quieres revocar. . Haz clic en Ver acciones. y selecciona el tipo de privilegio que quieres revocar para el acceso de este rol. La declaración de plantillaREVOKE
se propaga en una nueva pestaña del editor.Borra cualquier condición de IAM asociada al rol.
En la lista de roles del panel de información, busca el Rol Usuario de rol de base de datos de Cloud Spanner que tiene el título de condición de interés adyacente y, luego, expande el rol para ver las principales que tienen acceso al rol.
En una de las principales, haz clic en el ícono de Editar principal (lápiz).
En la página Acceso de edición, haz clic en el ícono Borrar rol (papelera). que está junto al rol Usuario de rol de base de datos de Cloud Spanner.
Haz clic en Guardar.
Repite los tres pasos anteriores para las demás principales que se mencionan en la condición.
Para quitar el rol, ve a la página de Spanner Studio y escribe lo siguiente: declaración:
DROP ROLE ROLE_NAME;
Haz clic en Enviar.
gcloud
Para revocar todos los privilegios de un rol y, luego, quitarlo, usa el
gcloud spanner databases ddl update
comando 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
gcloud spanner databases remove-iam-policy-binding
. comando 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 condición de IAM expresión que especifique los roles que se otorgarán a la principal.CONDITION
tiene el siguiente formato:--condition='expression=(resource.type == "spanner.googleapis.com/DatabaseRole" && (resource.name.endsWith("/ROLE1") || resource.name.endsWith("/ROLE2"))),title=TITLE,description=DESCRIPTION'
La especificación de la condición completa debe coincidir exactamente con la condición que se usó en el comando que otorgó permiso incluidos el título y la descripción.
Bibliotecas cliente
Con estas muestras de código, se crea y se descarta un rol de base de datos.
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
Más información
- Acerca del control de acceso detallado
- Control de acceso detallado para flujos de cambios
- Privilegios de control de acceso detallados
- Referencia de DDL de GoogleSQL
- Realiza actualizaciones del esquema