El control de acceso detallado de Spanner combina los beneficios Identity and Access Management (IAM) con Control de acceso basado en roles de SQL. Con el control de acceso detallado, puedes definir roles de base de datos, otorgar privilegios a los roles y crear Políticas de IAM para otorgar permisos sobre roles de bases de datos a Principales de IAM.
Como administrador, debes habilitar el control de acceso detallado para IAM principales. Principales para los que esté habilitado el control de acceso detallado (“usuarios de control de acceso detallados”) debe suponer que para acceder a los recursos de Spanner.
Se rige el acceso a los recursos para los usuarios que no son usuarios de control de acceso detallados por roles a nivel de base de datos de IAM. El control de acceso detallado es totalmente compatible y puede coexistir con Control de acceso de IAM a nivel de la base de datos. Puedes usarla para acceder objetos de base de datos individuales. Para controlar el acceso a toda la base de datos, usa Roles de IAM.
Con el control de acceso detallado, puedes controlar el acceso a tablas, columnas, vistas y flujos de cambios.
Para administrar un control de acceso detallado, usa el siguiente DDL declaraciones:
- Declaraciones
CREATE
yDROP
para crear y descartar funciones de base de datos Los roles de base de datos son colecciones de privilegios. Puedes crear hasta 100 roles por una base de datos. Sentencias
GRANT
yREVOKE
para otorgar y revocar privilegios a roles de base de datos y desde ellos Los privilegios incluyenSELECT
,INSERT
,UPDATE
,DELETE
yEXECUTE
Nombres de privilegios se corresponden con las instrucciones de SQL con nombres similares. Por ejemplo, un rol con el El privilegioINSERT
puede ejecutar la instrucción de SQLINSERT
en las tablas que se especifican en la sentenciaGRANT
.Las siguientes declaraciones DDL otorgan
SELECT
en la tablaemployees
. para el rol de base de datoshr_rep
.GoogleSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO ROLE hr_rep;
PostgreSQL
CREATE ROLE hr_rep; GRANT SELECT ON TABLE employees TO hr_rep;
Para obtener más información sobre los privilegios, consulta Referencia detallada de los privilegios de control de acceso.
Instrucciones
GRANT
para otorgar roles a otras funciones para crear jerarquías de roles con herencia de privilegios.
Casos de uso
Los siguientes son casos de uso de muestra para un control de acceso detallado:
- Un sistema de información de RR.HH. que tiene roles de analista de compensación de ventas, la gestión de ventas y el analista de RR.HH., cada uno con diferentes niveles de acceso a los datos. Por ejemplo, los analistas de compensaciones y la administración de ventas no deberían ver tus números de seguridad.
- Una aplicación de transporte privado con conductor con diferentes privilegios y cuentas de servicio para pasajeros y conductores.
- Un registro que permite operaciones
SELECT
yINSERT
, pero noUPDATE
yDELETE
.
Recursos de Spanner y sus privilegios
A continuación, se presenta una lista de los recursos de Spanner y el control de acceso detallado privilegios que puedes otorgarle.
- Esquemas
- Puedes otorgar el privilegio
USAGE
en los esquemas a roles de base de datos específicos. Para un esquema no predeterminado, los roles de base de datos deben tener el privilegioUSAGE
para acceder los objetos de la base de datos. La verificación de privilegios tiene el siguiente aspecto:
¿Tienes USAGE
en el esquema?
No: Rechazar acceso
Sí: ¿También tienes los derechos correspondientes sobre la mesa?
No: Rechazar acceso
Sí, puedes acceder a la tabla.
- Tablas
- Puedes otorgar los privilegios
SELECT
,INSERT
,UPDATE
yDELETE
en desde tablas hacia roles de bases de datos. En el caso de las tablas intercaladas, se puede otorgar un privilegio superior no se propaga a la tabla secundaria. - Columnas
- Puedes otorgar
SELECT
,INSERT
yUPDATE
en un subconjunto de columnas en una desde una tabla de particiones. Así, el privilegio solo es válido para esas columnas.DELETE
no se permite a nivel de la columna. - Vistas
- Puedes otorgar el privilegio
SELECT
en una vista. Solo se admiteSELECT
para vistas. Spanner admite tanto las vistas de derechos del invocador como las vistas vistas de derechos. Si creas una vista con derechos de invocador, para consultarla, El usuario o rol de la base de datos necesita el privilegioSELECT
en la vista, además del El privilegioSELECT
en los objetos subyacentes a los que se hace referencia en la vista Si crear una vista con derechos de definidor, para consultar la vista, el rol de base de datos o el usuario solo necesita el privilegioSELECT
en la vista. Para obtener más información, consulta Descripción general de las vistas. - Cambiar transmisiones
- Puedes otorgar
SELECT
en flujos de cambios. También debes otorgarEXECUTE
en el de lectura asociada con un flujo de cambios. Para obtener información, consulta Control de acceso detallado para flujos de cambios. - Secuencias
- Puedes otorgar
SELECT
yUPDATE
en secuencias. Para obtener información, consulta Control de acceso detallado para secuencias. - Modelos
- Puedes otorgar
EXECUTE
a los modelos. Para obtener información, consulta Control de acceso detallado para modelos.
Funciones detalladas del sistema de control de acceso
El control de acceso detallado tiene roles del sistema predefinidos para cada base de datos. Al igual que los roles de base de datos definidos por el usuario, los roles del sistema pueden controlar el acceso a Recursos de Spanner.
Por ejemplo, a un usuario de control de acceso detallado se le debe otorgar el rol spanner_sys_reader
rol del sistema para acceder a Key Visualizer y necesita el sistema spanner_info_reader
para ver resultados sin filtros cuando consultes
INFORMATION_SCHEMA
tablas.
Para obtener más información, consulta Roles detallados del sistema de control de acceso.
Jerarquías y herencia de roles de bases de datos
Puedes crear jerarquías de roles de bases de datos, donde los roles secundarios heredarán los privilegios de los roles superiores. Los roles secundarios se conocen como miembros de el rol principal.
Por ejemplo, considera las siguientes instrucciones GRANT
:
GoogleSQL
GRANT SELECT ON TABLE employees TO ROLE pii_access;
GRANT ROLE pii_access TO ROLE hr_manager, hr_director;
PostgreSQL
GRANT SELECT ON TABLE employees TO pii_access;
GRANT pii_access TO hr_manager, hr_director;
hr_manager
y hr_director
son miembros de la función pii_access
y heredan la
El privilegio SELECT
en la tabla employees
.
hr_manager
y hr_director
también pueden tener miembros, que tendrán
hereda el privilegio SELECT
en employees
.
No hay límites para la profundidad de las jerarquías de roles, pero el rendimiento de las consultas podría degradarse con estructuras de jerarquía de roles profundas y amplias.
Copia de seguridad y restablecimiento
Las backups de Spanner incluyen un rol de base de datos. definiciones Cuando se restablece una base de datos a partir de una copia de seguridad, los roles de la base de datos se recrean con sus privilegios otorgados. Sin embargo, IAM políticas no son parte de las copias de seguridad de bases de datos, por lo que debes volver a otorgar acceso a roles de base de datos a principales en la base de datos restablecida.
Descripción general de la configuración del control de acceso detallado
A continuación, se muestran los pasos generales que debes seguir para comenzar a proteger los datos con un control de acceso detallado. Para obtener más información, consulta Configura un control de acceso detallado.
Debes tener los permisos de roles/spanner.admin
o
roles/spanner.databaseAdmin
roles de IAM para realizar estas tareas.
- Crear roles de base de datos y otorgarles privilegios
- Opcional: Crea jerarquías de roles con herencia otorgando roles a otros roles.
- Realiza estos pasos para cada principal que será un usuario de control de acceso detallado:
- Habilita el control de acceso detallado para la principal.
Luego, a la principal se le otorga automáticamente el rol de base de datos
public
. que no tiene privilegios de forma predeterminada. Esta operación se realiza una sola vez para cada principal. - Otorga permisos de IAM en uno o más roles de base de datos a la principal.
- Después de que la principal recibe todos los roles de base de datos necesarios, si la principal tiene roles de IAM a nivel de la base de datos, considera revocar los roles a nivel de la base de datos para que el control de acceso de la principal se administre a través de un solo método.
- Habilita el control de acceso detallado para la principal.
Luego, a la principal se le otorga automáticamente el rol de base de datos
Limitaciones
- Las operaciones de exportación no exportan los privilegios y roles de la base de datos, ni tampoco no las pueden importar. Debes configurar los roles y privilegios de forma manual una vez finalizada la importación.
- La pestaña Datos de la página TABLA en la consola de Google Cloud no está disponible para usuarios de control de acceso detallados.
- Las operaciones
UPDATE
yDELETE
requierenSELECT
en todas las columnas de claves.
¿Qué sigue?
Consulta los siguientes temas para obtener más información:
- Accede a una base de datos con un control de acceso detallado
- Control de acceso detallado para los flujos de cambios
- Configura un control de acceso detallado
- Referencia detallada de los privilegios de control de acceso
- Roles detallados del sistema de control de acceso
- Instrucciones
GRANT
yREVOKE
de GoogleSQL - Declaraciones
GRANT
yREVOKE
de PostgreSQL - Control de acceso detallado para secuencias
- Control de acceso detallado para modelos