Oracle Database User Management II --- Autorización y autorización (usuarios y roles)

                            Oracle Database User Management II --- Autorización y autorización (usuarios y roles)

El libro está conectado la última vez, https://blog.csdn.net/alwaysbefine/article/details/112133204 , el sistema Oracle es muy complicado desde la perspectiva de la instalación, el uso después de la instalación y el mantenimiento posterior. De manera similar, Oracle tiene un sistema de usuario Cómo reconocer y gestionar a estos usuarios es un tema relativamente básico e importante.

1. La composición de usuarios integrada del sistema de base de datos de Oracle :

Justo después de instalar el software de Oracle, Oracle proporciona algunos usuarios y roles integrados en el sistema. Estos roles de usuario se pueden llamar usuarios básicos (roles). A través de la declaración SQL, seleccione * de dba_users orden por nombre de usuario; todos los usuarios del sistema pueden ser consultado, El número de usuarios integrados puede ser diferente dependiendo de los componentes seleccionados durante la instalación (no hay verificación especial, debería ser así), pero la mayoría de los usuarios están bloqueados y sus contraseñas caducadas. Entre ellos, sys, system, scott El usuario es un usuario listo para usar, y el inicio de sesión del sistema generalmente necesita especificar la identidad como sysdba, que es la identidad del administrador del sistema, el usuario del sistema tiene su propia función de dba y el usuario de scoot es un usuario normal. usuario y generalmente está bloqueado (a diferencia de otros El usuario está bloqueado y la contraseña ha caducado, el usuario no tiene una contraseña, solo un estado bloqueado). En otras palabras, una vez completada la instalación, los usuarios disponibles proporcionados por el sistema son three, sys, system y scoot.

 sys es poderoso, equivalente al usuario root en el sistema Linux, los cinco miembros permanentes del Consejo de Seguridad y el dios en el sistema Oracle.

El sistema tiene 6 permisos menos que sys, pero debido a que tiene el rol de dba, también es poderoso, equivalente al segundo al mando, el ayudante de Dios y el único segundo jefe en el sistema Oracle.

Scoot es el nombre del primer programador reclutado por Alison, Oracle. Es un usuario común configurado solo para conmemorar a este programador llamado Silent. Tiene muy pocos permisos y roles.

Por lo tanto, bloquee a los usuarios restantes cuando estén bloqueados y caduquen cuando caduque la contraseña. Nosotros tampoco los usamos. Solo necesitamos personalizar el usuario y asignar permisos y funciones de usuario personalizados. Por lo tanto, si los usuarios de sys, system y scoot han establecido contraseñas, téngalas en cuenta. (Por lo general, las contraseñas de estos usuarios se establecen durante la instalación. No puede instalar Oracle sin establecer las contraseñas de estos usuarios: reír ~~~).

Resumen: Después de instalar el sistema Oracle, observe bien a los usuarios integrados del sistema, no hay muchos, 11g solo tiene alrededor de 30, y la mayoría de ellos son usuarios no disponibles cuyos bloqueos han expirado. Tenga en cuenta la declaración SQL:

seleccione * del pedido de dba_users por nombre de usuario;

2. Todos los permisos del sistema de base de datos Oracle :

Consultar todos los permisos: inicie sesión en el usuario del sistema y ejecute la declaración SQL:  seleccione * de la orden de session_privs por PRIVILEGE; --Otros usuarios solo pueden encontrar 202 permisos, y todos los demás usuarios pueden consultar 202 permisos. El resultado es el siguiente: los permisos se pueden dividir en permisos del sistema y permisos de objetos. (Por ejemplo, seleccionar tabla es una autoridad de objeto. Los objetos generalmente se refieren a objetos como tablas y vistas. Los permisos como alterar usuario, crear usuario y crear rol se dividen en permisos del sistema)

ADMINISTER ANY SQL TUNING SET
ADMINISTER DATABASE TRIGGER
ADMINISTER RESOURCE MANAGER
ADMINISTER SQL MANAGEMENT OBJECT
ADMINISTER SQL TUNING SET
ADVISOR
ALTER ANY ASSEMBLY
ALTER ANY CLUSTER
ALTER ANY CUBE
ALTER ANY CUBE DIMENSION
ALTER ANY DIMENSION
ALTER ANY EDITION
ALTER ANY EVALUATION CONTEXT
ALTER ANY INDEX
ALTER ANY INDEXTYPE
ALTER ANY LIBRARY
ALTER ANY MATERIALIZED VIEW
ALTER ANY MINING MODEL
ALTER ANY OPERATOR
ALTER ANY OUTLINE
ALTER ANY PROCEDURE
ALTER ANY ROLE
ALTER ANY RULE
ALTER ANY RULE SET
ALTER ANY SEQUENCE
ALTER ANY SQL PROFILE
ALTER ANY TABLE
ALTER ANY TRIGGER
ALTER ANY TYPE
ALTER DATABASE
ALTER DATABASE LINK
ALTER PROFILE
ALTER PUBLIC DATABASE LINK
ALTER RESOURCE COST
ALTER ROLLBACK SEGMENT
ALTER SESSION
ALTER SYSTEM
ALTER TABLESPACE
ALTER USER
ANALYZE ANY
ANALYZE ANY DICTIONARY
AUDIT ANY
AUDIT SYSTEM
BACKUP ANY TABLE
BECOME USER
CHANGE NOTIFICATION
COMMENT ANY MINING MODEL
COMMENT ANY TABLE
CREATE ANY ASSEMBLY
CREATE ANY CLUSTER
CREATE ANY CONTEXT
CREATE ANY CUBE
CREATE ANY CUBE BUILD PROCESS
CREATE ANY CUBE DIMENSION
CREATE ANY DIMENSION
CREATE ANY DIRECTORY
CREATE ANY EDITION
CREATE ANY EVALUATION CONTEXT
CREATE ANY INDEX
CREATE ANY INDEXTYPE
CREATE ANY JOB
CREATE ANY LIBRARY
CREATE ANY MATERIALIZED VIEW
CREATE ANY MEASURE FOLDER
CREATE ANY MINING MODEL
CREATE ANY OPERATOR
CREATE ANY OUTLINE
CREATE ANY PROCEDURE
CREATE ANY RULE
CREATE ANY RULE SET
CREATE ANY SEQUENCE
CREATE ANY SQL PROFILE
CREATE ANY SYNONYM
CREATE ANY TABLE
CREATE ANY TRIGGER
CREATE ANY TYPE
CREATE ANY VIEW
CREATE ASSEMBLY
CREATE CLUSTER
CREATE CUBE
CREATE CUBE BUILD PROCESS
CREATE CUBE DIMENSION
CREATE DATABASE LINK
CREATE DIMENSION
CREATE EVALUATION CONTEXT
CREATE EXTERNAL JOB
CREATE INDEXTYPE
CREATE JOB
CREATE LIBRARY
CREATE MATERIALIZED VIEW
CREATE MEASURE FOLDER
CREATE MINING MODEL
CREATE OPERATOR
CREATE PROCEDURE
CREATE PROFILE
CREATE PUBLIC DATABASE LINK
CREATE PUBLIC SYNONYM
CREATE ROLE
CREATE ROLLBACK SEGMENT
CREATE RULE
CREATE RULE SET
CREATE SEQUENCE
CREATE SESSION
CREATE SYNONYM
CREATE TABLE
CREATE TABLESPACE
CREATE TRIGGER
CREATE TYPE
CREATE USER
CREATE VIEW
DEBUG ANY PROCEDURE
DEBUG CONNECT SESSION
DELETE ANY CUBE DIMENSION
DELETE ANY MEASURE FOLDER
DELETE ANY TABLE
DEQUEUE ANY QUEUE
DROP ANY ASSEMBLY
DROP ANY CLUSTER
DROP ANY CONTEXT
DROP ANY CUBE
DROP ANY CUBE BUILD PROCESS
DROP ANY CUBE DIMENSION
DROP ANY DIMENSION
DROP ANY DIRECTORY
DROP ANY EDITION
DROP ANY EVALUATION CONTEXT
DROP ANY INDEX
DROP ANY INDEXTYPE
DROP ANY LIBRARY
DROP ANY MATERIALIZED VIEW
DROP ANY MEASURE FOLDER
DROP ANY MINING MODEL
DROP ANY OPERATOR
DROP ANY OUTLINE
DROP ANY PROCEDURE
DROP ANY ROLE
DROP ANY RULE
DROP ANY RULE SET
DROP ANY SEQUENCE
DROP ANY SQL PROFILE
DROP ANY SYNONYM
DROP ANY TABLE
DROP ANY TRIGGER
DROP ANY TYPE
DROP ANY VIEW
DROP PROFILE
DROP PUBLIC DATABASE LINK
DROP PUBLIC SYNONYM
DROP ROLLBACK SEGMENT
DROP TABLESPACE
DROP USER
ENQUEUE ANY QUEUE
EXECUTE ANY ASSEMBLY
EXECUTE ANY CLASS
EXECUTE ANY EVALUATION CONTEXT
EXECUTE ANY INDEXTYPE
EXECUTE ANY LIBRARY
EXECUTE ANY OPERATOR
EXECUTE ANY PROCEDURE
EXECUTE ANY PROGRAM
EXECUTE ANY RULE
EXECUTE ANY RULE SET
EXECUTE ANY TYPE
EXECUTE ASSEMBLY
EXEMPT ACCESS POLICY
EXEMPT IDENTITY POLICY
EXPORT FULL DATABASE
FLASHBACK ANY TABLE
FLASHBACK ARCHIVE ADMINISTER
FORCE ANY TRANSACTION
FORCE TRANSACTION
GLOBAL QUERY REWRITE
GRANT ANY OBJECT PRIVILEGE
GRANT ANY PRIVILEGE
GRANT ANY ROLE
IMPORT FULL DATABASE
INSERT ANY CUBE DIMENSION
INSERT ANY MEASURE FOLDER
INSERT ANY TABLE
LOCK ANY TABLE
MANAGE ANY FILE GROUP
MANAGE ANY QUEUE
MANAGE FILE GROUP
MANAGE SCHEDULER
MANAGE TABLESPACE
MERGE ANY VIEW
ON COMMIT REFRESH
QUERY REWRITE
READ ANY FILE GROUP
RESTRICTED SESSION
RESUMABLE
SELECT ANY CUBE
SELECT ANY CUBE DIMENSION
SELECT ANY DICTIONARY
SELECT ANY MINING MODEL
SELECT ANY SEQUENCE
SELECT ANY TABLE
SELECT ANY TRANSACTION
SYSDBA
SYSOPER
UNDER ANY TABLE
UNDER ANY TYPE
UNDER ANY VIEW
UNLIMITED TABLESPACE
UPDATE ANY CUBE
UPDATE ANY CUBE BUILD PROCESS
UPDATE ANY CUBE DIMENSION
UPDATE ANY TABLE

Estos permisos se utilizan comúnmente para crear tablas, eliminar tablas, modificar tablas, crear y eliminar roles de usuario y establecer conexiones. Por ejemplo, crear una tabla, crear cualquier tabla, crear un usuario, crear una sesión, crear un rol, etc.

Consultar todos los permisos de un usuario: seleccione * del orden de session_privs por PRIVILEGE; -Este usuario necesita iniciar sesión, y la consulta son los permisos del sistema del usuario

Los 202 permisos anteriores son todos permisos del sistema. Los permisos comúnmente utilizados son todos los permisos relacionados con tablas y vistas, es decir, permisos que incluyen las palabras tabla y vista. Por ejemplo, cree una tabla, cree cualquier tabla (de cualquier manera, no hay restricción de usuario, por ejemplo, para crear una tabla, con este permiso, puede crear una tabla para cualquier usuario, incluido usted mismo)

 

3. Las funciones integradas del sistema de base de datos Oracle :

¿Qué diablos es el personaje? De hecho, un rol es una colección lógica de permisos. Hablando de personas, a un rol se le asigna un nombre después de una combinación de permisos. Dado que es un conjunto, los permisos tienen la granularidad más pequeña, lo que significa que un rol puede tener solo un permiso. También puede haber n permisos. Algunos permisos especificados se recopilan y se les da un nombre, y este nombre es el rol.

Entonces, ¿cuáles son las colecciones lógicas de permisos --- roles? La declaración de consulta SQL es: select * from dba_roles order by role; Hay alrededor de 50 roles incorporados en la versión 11g, y un rol se llama dba.

Este dba es el jefe del rol, y los permisos básicos de la base de datos son propiedad de este rol. Para ver los permisos que posee un rol, aquí está el rol de dba como ejemplo, la declaración SQL es la siguiente:

seleccione * de role_sys_privs donde role = orden 'DBA' por PRIVILEGE;

El resultado es más o menos como el anterior, puede ver que los permisos de función de dba cubren todos los aspectos, los permisos del sistema y los permisos de objeto están básicamente ahí. De hecho, la razón principal por la que el sistema descrito anteriormente es tan extraordinario es debido a la función de dba.

La declaración SQL que prueba que el usuario del sistema tiene el rol dba es: SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'SYSTEM'; - consulta el rol del usuario del sistema.

De manera similar, para consultar qué roles tiene el usuario scott, la declaración SQL es: SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'SCOTT'; - Consultar los roles que tiene el usuario scott.

Debe recordarse aquí que todo el contenido entre comillas después del beneficiario debe estar en mayúsculas para encontrar el contenido; de lo contrario, no se informará ningún error y no se devolverá ningún contenido.

En otras palabras, el rol dba es el jefe de todos los roles, y básicamente todos los permisos están incluidos en este rol.

Otro rol comúnmente utilizado es el recurso, puede ver qué permisos tiene este rol de recurso : seleccione * de role_sys_privs donde role = 'RESOURCE' order by PRIVILEGE; Por supuesto, el rol del recurso es relativamente pequeño en comparación con los permisos de dba, adecuado para completar algunos Tareas básicas, como construir una mesa para uso personal, etc.

También hay un rol oculto. No se puede ver el público de rol intangible. Mucha gente dice que es una colección de todos los usuarios. Aquí, el benevolente ve al benevolente y al sabio. Debido a que esta cosa está oculta, muchos vientos sangrientos son causados ​​por ella. Cómo son los vientos sangrientos algo más adelante, hablaré de este público en detalle más adelante.

4. Combinación y separación de usuarios y permisos --- autorización y privación :

Los permisos son para los usuarios, al igual que la sal y el pan, como el agua y la comida. Los usuarios deben tener permisos para desempeñar un papel. Solo los permisos pueden limitar lo que los usuarios pueden y no pueden hacer. En el sistema Oracle, los usuarios con permisos que no se otorgan de forma predeterminada No se puede usar. Solo cuando se otorga un determinado permiso, el usuario puede hacer lo que este permiso permite, como crear usuario. Solo este usuario tiene este permiso o ha heredado este permiso para crear un nuevo usuario. Con tantas tonterías, hablemos de autorización y derecho a actuar.

(1) La declaración SQL para crear un nuevo usuario zsk es la siguiente: crear usuario zsk; -utilizar el sistema o el usuario sys para crear un nuevo usuario, porque solo hay dos usuarios con altos privilegios al principio, por lo que no hay elección.

(2), o ejecute la instrucción SQL bajo el usuario del sistema: SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'ZSK'; --No hay salida, lo que indica que este usuario es de hecho un usuario limpio sin ningún permiso

(3), conceder declaración, conceder xxx, xxx, xxxx al nombre de usuario; por ejemplo, declaración SQL: conceder crear sesión, crear tabla, crear cualquier tabla a zsk; --- conceder al usuario zsk inicio de sesión y permisos de creación de tabla. Estos tres permisos son permisos del sistema, no permisos de objeto. Por lo tanto, la consulta para su permiso es: seleccione * de dba_sys_privs donde grantee = 'ZSK'; - El resultado de salida es:

Cabe señalar que el valor de la tercera opción admim_option es no, lo que significa que el usuario zsk no tiene la autoridad para otorgar su propia autoridad a otros usuarios. Esto es lo que a menudo llamamos autorización en cascada.

Al mismo tiempo, hay dos sufijos al otorgar derechos, uno es con la opción de administrador, por ejemplo, la declaración anterior más este sufijo es: conceder crear sesión, crear tabla, crear cualquier tabla para zsk con la opción de administrador; -

La declaración SQL para consultar los privilegios del sistema de zsk es: select * from dba_sys_privs donde grantee = 'ZSK'; -El resultado de salida es:

En este momento, el usuario de zsk tiene derecho a otorgar sus permisos existentes con el valor del valor de la columna admin_option a otros. En otras palabras, si hay un permiso de sí, se puede pasar a otros usuarios, por ejemplo, para agregar un nuevo usuario. zsk1, luego inicie sesión en el usuario zsk y asigne los tres permisos anteriores a zsk1. Siempre que los tres permisos sean sí, entonces otros usuarios deben estar autorizados. Personas que han estado involucradas en operación y mantenimiento durante mucho tiempo entenderá de inmediato. Es sudo. Sí, la cascada es sudo.

Otro sufijo es con la opción de concesión. Este sufijo es para los permisos del objeto sudo. Si no está convencido, hum, usaré este sufijo para otorgar permisos del sistema a sudo. Lo siento, reportaré un error. Por ejemplo, aún el empoderamiento anterior:

El sistema le dice claramente, es decir, la última línea de la imagen de arriba, le pide que especifique la opción de administrador. Ahora, los amigos no tienen que preocuparse por confundirse entre los permisos del sistema y los permisos de los objetos.

Los permisos de objetos son seleccionar, soltar, alterar, actualizar, truncar, insertar permisos para operaciones de tabla y vista, como consultar la propia tabla de un usuario, eliminar una tabla debajo de un usuario, etc. Estos son permisos de objeto.

Luego, consultamos los permisos de la tabla access $ debajo del usuario sys para el usuario zsk sin agregar el sufijo de permiso sudo. La instrucción SQL es: grant select on sys.access $ to zsk;

En este punto, para consultar los permisos de objeto del usuario de zsk, la declaración SQL es: seleccione * de dba_tab_privs donde grantee = 'ZSK'; - El resultado es el siguiente:

En este momento, el valor de la sexta columna es No. Si se agrega el sufijo sudo, la sexta columna se convertirá en sí. La declaración SQL es: grant select on sys.access $ to zsk con opción de concesión;

La consulta para los permisos de objeto del usuario de zsk es: seleccione * de dba_tab_privs donde grantee = 'ZSK'; - Tenga en cuenta la diferencia entre los dos verdes

El otorgamiento de permisos del sistema es generalmente del usuario y el otorgamiento de permisos de objeto es generalmente del usuario .

(4), el derecho a operar

revocar el permiso del usuario; Por ejemplo, el usuario zsk anterior ahora tiene cuatro permisos, ahora elimine su nuevo permiso de tabla, consulte el permiso de acceso a la tabla de usuario del sistema $, puede hacer esto:

revocar crear tabla, crear cualquier tabla desde zsk;

revocar seleccionar en sys.access $ de zsk;

Hay tres puntos a los que debe prestar atención para eliminar el derecho: 1. Utilice y separe varios permisos del mismo tipo. 2. Los permisos del sistema y los permisos de los objetos no se pueden mezclar, es decir, escribir los permisos del sistema y los permisos de los objetos y luego revocarlos, lo que informará un error. 3. Una vez que la privación es exitosa, la privación no puede repetirse; de ​​lo contrario, se informará un error.

5. Operaciones de habilitación y desautorización de roles :

Para explicar mejor este problema, utilice el usuario zsk recién creado y el usuario administrador del sistema sys para operar.

(1) El nombre de usuario y el nombre de la función no pueden ser el mismo

Primero, los usuarios del sistema de aterrizaje para ver cuántos caracteres: el SELECT * de DBA_ROLES por el rol de la orden;  - no puedo ver zsk este rol,

Compruebe qué usuarios están allí, seleccione * del orden de dba_users por nombre de usuario; - puede ver que hay un usuario llamado zsk.

create role zsk; - En este momento, se informará un error y el nombre de usuario y el rol no se pueden repetir. Por lo tanto, el nombre del rol se cambia a zsk_role. Cree uno nuevo nuevamente: create role zsk_role; El rol es exitoso creado.

(2) Compruebe qué permisos tiene ahora este rol recién creado zsk_role.

seleccione * de role_sys_privs donde role = 'ZSK_ROLE' orden por PRIVILEGE; - No encontré ningún permiso para el rol

(3) Dar al rol de zsk_role los permisos del sistema del nuevo usuario crear usuario

conceder crear usuario a zsk_role; - Puede ver que básicamente no hay cambio entre el empoderamiento del rol y el empoderamiento del usuario

(4) Asignar el rol al usuario zsk

conceder zsk_role a zsk; -Asignar roles a los usuarios como un permiso.

(5) Inicie sesión en el usuario zsk, cree otro usuario normal y compruebe si hay una nueva autoridad de usuario.

Puede ver que el usuario zsk tiene la autoridad para crear un nuevo usuario.

(6) Inicie sesión en el usuario sys en este momento, verifique los permisos de zsk y no verá el permiso de creación de usuario, pero puede ver el rol de zsk_role cuando consulte el rol propiedad de zsk.

seleccione * de dba_tab_privs donde beneficiario = 'ZSK';

SELECCIONE GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS DONDE GRANTEE = 'ZSK';

( 7 ) Inicie sesión en el usuario sys y otorgue a zsk_role el permiso para consultar la tabla alter_qt en sys

conceda seleccionar en sys.alert_qt a zsk_role; - En este momento, cambie al usuario zsk y podrá consultar la tabla alert_qt en sys.

(8), un problema de activación de múltiples roles de usuario y permisos de roles prohibidos.

Como se mencionó anteriormente, un rol es una colección de permisos. El experimento anterior también ha verificado que cualquier permiso puede ser incluido en un rol, pero un usuario puede tener múltiples roles. Suponiendo que los usuarios de zsk tienen muchos roles, en este momento, tenemos para seleccionar un rol Es el rol predeterminado. Esta acción seleccionada se llama activación.

La declaración SQL es: set role zsk_role; - Opere bajo el usuario zsk, entonces los permisos de otros roles no entrarán en vigencia, y solo usarán los permisos del rol zsk_role.

¿Qué pasa si algún rol no es como usarlo y solo desea usar los permisos otorgados directamente por otros usuarios? Ejecute la instrucción SQL: set role none;

Cambie al usuario zsk y ejecute set role none; - En este momento, la creación de un nuevo usuario no se realizará correctamente. En otras palabras, establecer rol ninguno; significa que el usuario no usa ningún rol.

 

 

 

En conclusión:

seleccionar * de dba_roles ordenar por rol; - todos los roles

seleccionar * de dba_users ordenar por nombre de usuario; - todos los usuarios

seleccione * de dba_tab_privs donde concesionario = 'ZSK'; - Consultar los permisos de objeto del usuario zsk, zsk se puede reemplazar con cualquier usuario que desee consultar. Se pueden solicitar permisos avanzados

seleccione * de dba_sys_privs donde concesionario = 'ZSK'; - Consultar los permisos del sistema del usuario de zsk, zsk se puede reemplazar con cualquier usuario que desee consultar. Se pueden solicitar permisos avanzados

seleccione * de role_sys_privs donde role = 'ZSK_ROLE' orden por PRIVILEGE; - Consulta los privilegios del sistema de este rol zsk_role

select * from role_sys_privs donde role = 'DBA' order by PRIVILEGE; - Consulta los privilegios del sistema del rol dba. 202 registros.

seleccione * de role_tab_privs donde role = 'ZSK_ROLE' orden por PRIVILEGE; - Consulta los permisos de objeto del rol

select * from role_tab_privs donde role = 'DBA' order by PRIVILEGE; - Consulta los privilegios de objeto de este rol dba. 284 registros.

seleccione * de la orden de session_privs por PRIVILEGE; - Debe iniciar sesión con este usuario y debe consultar los permisos del sistema de este usuario. Debe iniciar sesión para ejecutar la consulta, y solo puede consultar los permisos del sistema de el usuario actual.
 

Preste atención a la habilitación en cascada, que es similar a la habilitación de sudo en los sistemas Linux. No espere que los dos permisos se mezclen.

 

 

 

 

 

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/alwaysbefine/article/details/112247239
Recomendado
Clasificación