sql >> Base de Datos >  >> RDS >> Oracle

Cómo crear un usuario en Oracle y asignar privilegios

Publicaremos información sobre el acceso y la seguridad de los usuarios en la base de datos de Oracle. Esta publicación brindará buena información sobre  Crear usuario en Oracle, privilegios del sistema y privilegios de objetos de Oracle, cómo otorgar privilegios a los usuarios, cómo mostrar todos los privilegios de un usuario en Oracle

Sentencia CREAR USUARIO

Se emplea para crear un usuario (esquema).

La autenticación predeterminada para un nuevo usuario es la base de datos. Al usuario se le asigna una contraseña, y la contraseña se mantiene encriptada en la base de datos. Hay otros dos tipos de autenticación posibles, el primero es la autenticación externa utilizando el nivel del sistema operativo. La autenticación externa comprueba la contraseña a nivel del sistema operativo.

El otro es la autenticación global que verifica la contraseña del usuario en el servicio de seguridad de Oracle u otro servicio de directorio de terceros.

Asignación de atributos

Podemos cambiar los atributos del usuario usando ALTER USER. Podemos modificarlos o asignarlos

Crear declaración de usuario con algunos atributos establecidos será

CREATE USER SCOTT
IDENTIFIED BY TTOC
DEFAULT TABLESPACE USERS
QUOTA 10M ON USERS
TEMPORARY TABLESPACE temp
QUOTA 5M ON system
PROFILE application_user
PASSWORD EXPIRE

Privilegios del Sistema Oracle

Permite al beneficiario crear, modificar, descartar y administrar objetos de la base de datos. Por ejemplo, los privilegios para crear tablespaces y eliminar las filas de cualquier tabla en una base de datos son privilegios del sistema.

Oracle tiene más de 100 privilegios de sistema (que se encuentran en la tabla SYSTEM_PRIVILEGE_MAP).

Hay 2 privilegios especiales en una base de datos de Oracle llamados SYSDBA y SYSOPER. Ambos privilegios permiten operaciones de base de datos tales como INICIO, APAGADO, APERTURA, MONTAJE, RESPALDO, ARCHIVELOG y RECUPERACIÓN. SYSDBA permite el comando CREATE DATABASE y las opciones CHANGE CHARACTER SET.

Los privilegios del sistema son proporcionados por el administrador de la base de datos a los usuarios mediante el comando otorgar y revocados mediante el comando revocar

Si el DBA necesita proporcionar privilegios del sistema a alguien para que otra persona también pueda otorgarlos, entonces debe otorgarse con la opción de administrador

GRANT create session TO user;
GRANT create session TO user with admin option;
Revoke create session from user;

Privilegios del sistema de usuario

Cuando se crea el usuario, generalmente otorgamos los siguientes privilegios del sistema

  • CREAR SESIÓN
  • CREAR TABLA
  • CREAR VISTA
  • CREAR SECUENCIA
  • CREAR PROCEDIMIENTO

Con esto el usuario puede comenzar a crear la tabla y otros objetos.

Sample
CREATE USER "TEST" IDENTIFIED BY TEST
DEFAULT TABLESPACE "TOOLS"
TEMPORARY TABLESPACE "TEMP";
grant CREATE TRIGGER to TEST;
grant CREATE PROCEDURE to TEST;
grant CREATE SESSION to TEST;
grant CREATE TYPE to TEST;
grant CREATE TABLE to TEST;
grant CREATE VIEW to TEST;
grant ALTER SESSION to TEST;
grant CREATE SEQUENCE to TEST;
grant CREATE SYNONYM to TEST;
grant CREATE ANY SYNONYM to TEST;
grant UNLIMITED TABLESPACE to TEST;

Privilegios de objetos de Oracle

Estos se otorgan en los objetos de la base de datos (como una tabla, una vista, un procedimiento, etc.…)

El propietario tiene todos los privilegios y un propietario puede otorgar privilegios específicos sobre los objetos

El propietario puede proporcionar los privilegios usando el siguiente comando

GRANT privileges ON object TO user;

Los privilegios pueden ser seleccionar, insertar, actualizar, borrar o TODOS

Si el propietario quiere otorgar privilegios a todos los usuarios

GRANT privileges ON object TO public;

Si el propietario desea otorgar privilegios al usuario con una opción de concesión. Básicamente, eso significa que el beneficiario puede asignar este privilegio a otros

GRANT privileges ON object TO user with grant option;

Del mismo modo, tenemos el comando revocar para eliminar los privilegios de los objetos

¿Qué es un rol de Oracle?

Un rol es un objeto de base de datos que se utiliza para aplicar privilegios. Se puede asignar un rol a un usuario para establecer privilegios en los objetos de la base de datos:

GRANT EBS_ADMIN TO SCOTT;

Otorgará el rol EBS_ADMIN con todos sus privilegios al usuario SCOTT.

Creación y uso de funciones

El comando CREATE ROLE [IDENTIFIED BY ] crea un rol. La asignación de privilegios al rol se realiza mediante el comando GRANT. La revocación de privilegios se realiza mediante REVOKE FROM ROLE.

¿Cuál es la diferencia entre privilegios de sistema y de objeto?

Tablas y vistas del diccionario de datos

Oracle ha proporcionado vistas de diccionario de datos para obtener información sobre privilegios

Hay tres categorías de vistas

Comprobación de vistas de privilegios

Consultas útiles para los privilegios

cómo verificar los privilegios de usuario en Oracle

col role for a16
col pv for a75 hea 'PRIVILEGE OR ROLE'
break on role on type skip 1
define usercheck = 'SH'
select grantee, 'ROL' type, granted_role pv
from dba_role_privs where grantee = '&usercheck' union
select grantee, 'PRV' type, privilege pv
from dba_sys_privs where grantee = '&usercheck' union
select grantee, 'OBJ' type,
max(decode(privilege,'WRITE','WRITE,'))||max(decode(privilege,'READ','READ'))||
max(decode(privilege,'EXECUTE','EXECUTE'))||max(decode
(privilege,'SELECT','SELECT'))||
max(decode(privilege,'DELETE',',DELETE'))||max(decode
(privilege,'UPDATE',',UPDATE'))||
max(decode(privilege,'INSERT',',INSERT'))||' ON '||object_type||'
"'||a.owner||'.'||table_name||'"' pv
from dba_tab_privs a, dba_objects b
where a.owner=b.owner and a.table_name = b.object_name and
a.grantee='&usercheck'
group by a.owner,table_name,object_type,grantee union
select username grantee, '---' type, 'empty user ---' pv from dba_users
where not username in (select distinct grantee from dba_role_privs) and
not username in (select distinct grantee from dba_sys_privs) and
not username in (select distinct grantee from dba_tab_privs) and username like
'%&usercheck%'
group by username
order by grantee, type, pv;

Determinar los privilegios del sistema otorgados al usuario

SELECT GRANTEE, PRIVILEGE FROM DBA_SYS_PRIVS  
WHERE GRANTEE = 'USER';

Comprobar qué privilegios de mesa otorga usted a otros usuarios.

SELECT * FROM USER_TAB_PRIVS_MADE

Comprobar qué privilegios de mesa le otorgan otros usuarios

SELECT * FROM USER_TAB_PRIVS_RECD;

Comprobar qué privilegios de nivel de columna otorga usted a otros usuarios.

SELECT * FROM USER_COL_PRIVS_MADE;


Comprobar  qué privilegios de nivel de columna le otorgan otros usuarios

SELECT * FROM USER_COL_PRIVS_RECD;


Comprobar qué privilegios se otorgan a los roles

SELECT * FROM USER_ROLE_PRIVS;

Cómo otorgar y revocar privilegios  en Oracle

Objects grant/revoke from user  
grant select on dept to public;
revoke select  on dept  from public;
Objects grant/revoke from Role
grant delete on dept to dept_role;
revoke update on dept from dept_role;

Enlaces relacionados

Gestión de roles y privilegios de usuario:documentación de Oracle para referencia adicional
Vistas de Oracle:guía completa sobre cómo crear una vista de Oracle, descartar vistas de Oracle, modificar vistas de Oracle, cómo determinar la consulta de la vista ya creada
crear tabla en Oracle:las tablas son la unidad básica de almacenamiento de datos en una base de datos Oracle. Cubrimos cómo usar el comando de creación de tabla de Oracle para crear una tabla con una clave externa/clave principal
Secuencias en Oracle:¿Qué es Secuencia en Oracle? Descripción de todas las opciones Cómo crearlas Nueva función de secuencias de Oracle 12c , Cómo eliminarlos y modificarlos
crear un usuario en Oracle 12c:descubra cómo crear un usuario común en Oracle 12c, crear usuarios comunes y locales, crear un rol común y un rol local y cómo administrarlos

Espero que te guste la publicación. Por favor, envíanos tus comentarios

Cursos recomendados

Aquí está el buen curso de Udemy para Oracle SQL
Oracle-Sql-Step-by-step:este curso cubre sql básico, uniones, creación de tablas y modificación de su estructura, creación de vista, unión, unión, todo y mucho más. . Un gran curso y un curso imprescindible para principiantes de SQL
El curso completo de certificación de Oracle SQL :Este es un buen curso para cualquier persona que quiera estar preparado para trabajar con habilidades de desarrollador de SQL. Un buen curso explicado
Oracle SQL Developer:fundamentos, consejos y trucos :muchos desarrolladores utilizan la herramienta para desarrolladores Oracle Sql. Este curso nos brinda trucos y lecciones sobre cómo usarlo de manera efectiva y convertirnos en un desarrollador sql productivo
Oracle SQL Performance Tuning Masterclass 2020 :El ajuste del rendimiento es una de las habilidades críticas y más buscadas. Este es un buen curso para aprender sobre esto y comenzar a realizar ajustes de rendimiento de sql