El control de acceso detallado de Cloud Spanner combina los beneficios de la administración de identidades y accesos (IAM) con el control de acceso tradicional basado en la función SQL. Con un control de acceso detallado, puedes definir funciones de la base de datos, otorgar privilegios a las funciones y crear políticas de IAM para otorgar permisos en funciones de la base de datos a las principales de IAM.
Como administrador, debes habilitar un control de acceso detallado para las principales de IAM individuales. Las principales para las que esté habilitado el control de acceso detallado ("usuarios de control de acceso detallados") deben asumir una función de base de datos para acceder a los recursos de Spanner.
El acceso a los recursos para usuarios que no son detallados en el control de acceso se rige por funciones de IAM a nivel de base de datos. El control de acceso detallado es totalmente compatible y puede coexistir con el control de acceso a nivel de la base de datos de IAM existente.
Con el control de acceso detallado, puedes controlar el acceso a las tablas, columnas, vistas y cambios de transmisión.
Para administrar el control de acceso detallado, usa las siguientes declaraciones DDL:
- Declaraciones
CREATE
yDROP
para crear y descartar funciones de bases de datos. Las funciones de base de datos son colecciones de privilegios. Puedes crear hasta 100 funciones para una base de datos. Declaraciones
GRANT
yREVOKE
para otorgar y revocar privilegios de funciones de base de datos. Los privilegios incluyenSELECT
,INSERT
,UPDATE
,DELETE
yEXECUTE
. Los nombres de privilegios corresponden a instrucciones de SQL con nombres similares. Por ejemplo, una función con el privilegioINSERT
puede ejecutar la instrucción de SQLINSERT
en las tablas que se especifican en la instrucciónGRANT
.Las siguientes declaraciones DDL otorgan
SELECT
en la tablaemployees
a la función de base de datoshr_rep
.CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO ROLE hr_rep;
Para obtener más información sobre los privilegios, consulta Referencia detallada de los privilegios de control de acceso.
Declaraciones
GRANT
para otorgar funciones a otras funciones a fin de crear jerarquías de funciones, con privilegios de privilegio.
Casos de uso
Los siguientes son casos de uso de ejemplo para un control de acceso detallado:
- Un sistema de información de RR.HH. tiene funciones para el analista de compensación de ventas, la administración de ventas y el analista de RR.HH., cada uno con diferentes niveles de acceso a los datos. Por ejemplo, los analistas de compensación y la administración de ventas no deberían ver los números de identificación personal.
- Una aplicación de transporte compartido con diferentes cuentas de servicio y privilegios para pasajeros y conductores
- Un registro que permite operaciones
SELECT
yINSERT
, pero no operacionesUPDATE
yDELETE
.
Recursos de Spanner y sus privilegios
La siguiente es una lista de los recursos de Spanner y los privilegios de control de acceso detallados que puedes otorgarles.
- Tablas
- Puedes otorgar los privilegios
SELECT
,INSERT
,UPDATE
yDELETE
en las tablas a las funciones de base de datos. En las tablas intercaladas, un privilegio otorgado en la tabla superior no se propaga a la tabla secundaria. - Columnas
- Puedes otorgar
SELECT
,INSERT
yUPDATE
en un subconjunto de columnas en una tabla. El privilegio solo es válido para esas columnas.DELETE
no se permite a nivel de columna. - Vistas
- Puedes otorgar
SELECT
en una vista. Solo se admiteSELECT
para las vistas. Debido a que Cloud Spanner solo admite vistas de derechos de invocador, una función de base de datos necesita el privilegioSELECT
en la vista y el privilegioSELECT
en los objetos subyacentes a los que hace referencia la vista. - Cambiar transmisiones
- Puedes otorgar
SELECT
a los flujos de cambios. También debes otorgarEXECUTE
en la función con valor de tabla (TVF) asociada con una transmisión de cambios. A fin de obtener más información, consulta Control de acceso detallado para transmisiones de cambios.
Funciones detalladas del sistema de control de acceso
El control de acceso detallado tiene funciones de sistema predefinidas para cada base de datos. Al igual que las funciones de bases de datos definidas por el usuario, las funciones del sistema pueden controlar el acceso a los recursos de Spanner.
Por ejemplo, un usuario de control de acceso detallado debe tener la función del sistema spanner_sys_reader
para acceder a Key Visualizer y necesita la función del sistema spanner_info_reader
a fin de poder ver resultados sin filtrar cuando se consultan las tablas INFORMATION_SCHEMA
.
Para obtener más información, consulta Funciones del sistema de control de acceso detalladas.
Jerarquías y herencias del rol de la base de datos
Puedes crear jerarquías de funciones de bases de datos, donde las funciones secundarias heredan los privilegios de las funciones superiores. Las funciones secundarias se conocen como miembros de la función superior.
Por ejemplo, considera las siguientes declaraciones GRANT
:
GRANT SELECT ON TABLE employees TO ROLE pii_access;
GRANT ROLE pii_access TO ROLE hr_manager, hr_director;
hr_manager
y hr_director
son miembros de la función pii_access
y heredan el privilegio SELECT
en la tabla employees
.
hr_manager
y hr_director
también pueden tener miembros, y esos miembros heredarían el privilegio SELECT
en employees
.
No hay límites en la profundidad de las jerarquías de funciones, pero el rendimiento de las consultas puede degradarse con estructuras de jerarquía de funciones amplias y profundas.
Copia de seguridad y restablecimiento
Las copias de seguridad de Spanner incluyen definiciones de funciones de la base de datos. Cuando se restablece una base de datos a partir de la copia de seguridad, las funciones de la base de datos se vuelven a crear con sus privilegios otorgados. Sin embargo, las políticas de IAM no forman parte de las copias de seguridad de la base de datos, por lo que debes volver a otorgar acceso a las funciones de base de datos a las principales en la base de datos restablecida.
Descripción general de la configuración del control de acceso detallado
A continuación, se describen los pasos de alto nivel que debes seguir para comenzar a proteger los datos con un control de acceso detallado. Para obtener más información, consulta Configura el control de acceso detallado.
Se te deben otorgar las funciones de IAM roles/spanner.admin
o roles/spanner.databaseAdmin
para realizar estas tareas.
- Crear roles de base de datos y otorgar privilegios a los roles
- Opcional: Otorga funciones a otras funciones para crear jerarquías de funciones con herencia.
- Sigue estos pasos para cada principal que será un usuario de control de acceso detallado:
- Habilita el control de acceso detallado para la principal.
Luego, se le otorga de forma automática la función de base de datos
public
, que no tiene privilegios de forma predeterminada. Esta es una operación única para cada principal. - Otorga permisos de IAM en una o más funciones de la base de datos a la principal.
- Después de que la principal obtiene todas las funciones de base de datos necesarias, si la principal tiene funciones de IAM a nivel de base de datos, considera revocar las funciones a nivel de base de datos para que el control de acceso de la principal se administre solo con un método.
- Habilita el control de acceso detallado para la principal.
Luego, se le otorga de forma automática la función de base de datos
Limitaciones
- El control de acceso detallado no es compatible con bases de datos de dialecto de PostgreSQL.
- Las operaciones de exportación no exportan las funciones y los privilegios de la base de datos, y las operaciones de importación no pueden importarlas. Debes configurar las funciones y los privilegios de forma manual después de que se complete la importación.
- La pestaña Datos de la página TABLA en Google Cloud Console no está disponible para los usuarios de control de acceso detallados.
- Las operaciones
UPDATE
yDELETE
requierenSELECT
en todas las columnas de claves.
Más información
Consulta los siguientes temas para obtener más información:
- Control de acceso detallado para transmisiones de cambios
- Configura un control de acceso detallado
- Referencia detallada de los privilegios de control de acceso
- Funciones del sistema de control de acceso detalladas
- Las declaraciones
GRANT
yREVOKE
en el tema lenguaje de definición de datos de Google SQL