¿Cómo puedo crear usuarios y tablas privadas de bases de datos?
Escenario
El administrador del sistema dbadmin tiene el permiso para acceder a las tablas creadas por usuarios comunes de forma predeterminada. Cuando Separación de Permisos está habilitada, el administrador dbadmin no tiene permiso para acceder a tablas de usuarios comunes o realizar operaciones de control (DROP, ALTER, y TRUNCATE).
Si es necesario crear un usuario privado y una tabla privada (tabla creada por el usuario privado) y solo el usuario privado puede acceder a la tabla privada y el administrador del sistema dbadmin y otros usuarios comunes no tienen el permiso para acceder a la tabla (INSERT, DELETE, UPDATE, SELECT y COPY). Sin embargo, el administrador del sistema dbadmin a veces necesita realizar las operaciones DROP, ALTER o TRUNCATE sin la autorización del usuario privado. En este caso, puede crear un usuario (usuario privado) con el atributo INDEPENDENT.
Principios
Esta función se implementa creando un usuario con el atributo INDEPENDENT.
INDEPENDENT | NOINDEPENDENT define los roles privados e independientes. Para un rol con el atributo INDEPENDENT, los derechos de los administradores para controlar y acceder a este rol están separados. Las normas específicas son las siguientes:
- Los administradores no tienen derechos para agregar, eliminar, consultar, modificar, copiar o autorizar los objetos de tabla correspondientes sin la autorización del rol INDEPENDENT.
- Los administradores no tienen derechos para modificar la relación de herencia del rol INDEPENDENT sin la autorización de este rol.
- Los administradores no tienen derechos para modificar el propietario de los objetos de tabla para el rol INDEPENDENT.
- Los administradores no tienen derechos para cambiar la contraseña de la base de datos del rol INDEPENDENT. El rol INDEPENDENT debe gestionar su propia contraseña, que no se puede restablecer si se pierde.
- El atributo SYSADMIN de un usuario no se puede cambiar por el atributo INDEPENDENT.
Procedimiento
- Conéctese a la base de datos de DWS como usuario dbadmin.
- Ejecute la siguiente instrucción SQL para crear el usuario privado u1:
1
CREATE USER u1 WITH INDEPENDENT IDENTIFIED BY 'password';
- Cambie al usuario u1, cree la tabla test e inserte datos en la tabla.
1 2 3
CREATE TABLE test (id INT, name VARCHAR(20)); INSERT INTO test VALUES (1, 'joe'); INSERT INTO test VALUES (2, 'jim');
- Cambie al usuario dbadmin y ejecute la siguiente instrucción de SQL para comprobar si el usuario dbadmin puede acceder a la tabla privada creada test por el usuario privado u1:
1
SELECT * FROM u1.test;
El resultado de la consulta indica que el usuario dbadmin no tiene el permiso de acceso. Esto significa que el usuario privado y la tabla privada se crean correctamente.
- Ejecute la instrucción DROP como el usuario dbadmin para eliminar la tabla test.
1
DROP TABLE u1.test;