Oracle
 sql >> Database >  >> RDS >> Oracle

Come creare utenti in Oracle e assegnare privilegi

Pubblicheremo le informazioni sull'accesso e la sicurezza degli utenti nel database di Oracle. Questo post fornirà buone informazioni su  Crea utente in Oracle, privilegi di sistema e privilegi di oggetti Oracle, come concedere i privilegi agli utenti, come mostrare tutti i privilegi di un utente in Oracle

CREA istruzione UTENTE

Viene utilizzato per creare un utente (schema).

L'autenticazione predefinita per un nuovo utente è il database. All'utente viene assegnata una password e la password viene mantenuta crittografata nel database. Sono possibili altri due tipi di autenticazione, il primo è l'autenticazione esterna utilizzando il livello del sistema operativo. L'autenticazione esterna verifica la password a livello di sistema operativo.

L'altro è l'autenticazione globale che controlla la password dell'utente nel servizio di sicurezza Oracle o in un altro servizio di directory di terze parti.

Assegnazione degli attributi

Possiamo modificare gli attributi dell'utente utilizzando ALTER USER. Possiamo modificarli o assegnarli

Verrà creata una dichiarazione utente con alcuni attributi impostati

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

Privilegi del sistema Oracle

Consente al beneficiario di creare, modificare, eliminare e gestire gli oggetti del database. Ad esempio, i privilegi per creare tablespace e per eliminare le righe di qualsiasi tabella in un database sono privilegi di sistema.

Oracle ha più di 100 privilegi di sistema (trovati nella tabella SYSTEM_PRIVILEGE_MAP).

Ci sono 2 privilegi speciali in un database Oracle chiamato SYSDBA e SYSOPER. Entrambi i privilegi consentono operazioni di database come STARTUP, SHUTDOWN, OPEN, MOUNT, BACKUP, ARCHIVELOG e RECOVER. SYSDBA consente il comando CREATE DATABASE e le opzioni CHANGE CHARACTER SET.

I privilegi di sistema sono forniti dall'amministratore del database agli utenti utilizzando il comando grant e revocati utilizzando il comando revoke

Se il DBA deve fornire il privilegio di sistema a qualcuno in modo che anche un'altra persona possa concederlo, allora deve essere fornito con l'opzione di amministratore

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

Privilegi del sistema utente

Quando l'utente viene creato, generalmente concediamo i seguenti privilegi di sistema

  • CREA SESSIONE
  • CREA TABELLA
  • CREA VISUALIZZA
  • CREA SEQUENZA
  • CREA PROCEDURA

Con questo utente può iniziare a creare la tabella e altri oggetti.

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;

Privilegi oggetto Oracle

Questi sono concessi su oggetti di database (come una tabella, una vista, una procedura, ecc...)

Il proprietario ha tutti i privilegi e un proprietario può concedere privilegi specifici sugli oggetti

Il proprietario può fornire i privilegi utilizzando il comando seguente

GRANT privileges ON object TO user;

I privilegi possono essere selezionare, inserire, aggiornare, eliminare o TUTTI

Se il proprietario vuole fornire privilegi a tutti gli utenti

GRANT privileges ON object TO public;

Se il proprietario desidera fornire il privilegio all'utente con un'opzione di concessione. Fondamentalmente, ciò significa che il beneficiario può assegnare ulteriormente questo privilegio ad altri

GRANT privileges ON object TO user with grant option;

Allo stesso modo, abbiamo il comando di revoca per rimuovere i privilegi dagli oggetti

Cos'è un ruolo oracolo?

Un ruolo è un oggetto di database utilizzato per imporre i privilegi. A un utente può essere assegnato un ruolo per impostare i privilegi sugli oggetti del database:

GRANT EBS_ADMIN TO SCOTT;

Concederà il ruolo EBS_ADMIN con tutti i suoi privilegi all'utente SCOTT.

Creazione e utilizzo di ruoli

Il comando CREATE ROLE [IDENTIFIED BY ] crea un ruolo. L'assegnazione dei privilegi al ruolo viene eseguita utilizzando il comando GRANT. La revoca dei privilegi viene eseguita utilizzando REVOKE FROM ROLE.

Qual ​​è la differenza tra i privilegi di sistema e di oggetto?

Tabelle e viste del dizionario dei dati

Oracle ha fornito viste del dizionario dei dati per ottenere informazioni sui privilegi

Esistono tre categorie di visualizzazioni

Controllo delle visualizzazioni dei privilegi

Query utili per i privilegi

come controllare i privilegi dell'utente in 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;

Determina i privilegi di sistema concessi all'utente

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

Verifica quali privilegi di tabella sono stati concessi da te ad altri utenti.

SELECT * FROM USER_TAB_PRIVS_MADE

Verifica quali privilegi di tabella ti sono stati concessi da altri utenti

SELECT * FROM USER_TAB_PRIVS_RECD;

Verifica quali privilegi a livello di colonna sono stati concessi da te ad altri utenti.

SELECT * FROM USER_COL_PRIVS_MADE;


Verifica  quali privilegi a livello di colonna ti sono stati concessi da altri utenti

SELECT * FROM USER_COL_PRIVS_RECD;


Verifica quali privilegi vengono concessi ai ruoli

SELECT * FROM USER_ROLE_PRIVS;

Come concedere e revocare i privilegi  in 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;

Link correlati

Gestione dei privilegi e dei ruoli dell'utente:documentazione Oracle per ulteriori riferimenti
Viste Oracle:guida completa su come creare viste Oracle, rilasciare viste Oracle, modificare viste Oracle, Come determinare la query della vista già creata
creare tabella in Oracle:le tabelle sono l'unità di base dell'archiviazione dei dati in un database Oracle. descriviamo come utilizzare il comando Oracle create table per creare una tabella con una chiave esterna/chiave primaria , Come eliminarli e modificarli
creare un utente in Oracle 12c :Scopri come creare un utente comune in Oracle 12c, creare un utente comune e locale, creare un ruolo comune e un ruolo locale e come gestirli

Spero che il post ti piaccia. Si prega di fornire il feedback

Corsi consigliati

Ecco il bel corso Udemy per Oracle SQL
Oracle-Sql-Step-by-step:questo corso copre SQL di base, join, creazione di tabelle e modifica della sua struttura, creazione di viste, unione, unione, tutto e molto altro . Un ottimo corso e un corso indispensabile per principianti SQL
Il corso completo di certificazione Oracle SQL :Questo è un buon corso per chiunque voglia essere pronto per il lavoro per le competenze di sviluppatore SQL. Un bel corso spiegato
Oracle SQL Developer:Essentials, Tips and Tricks :lo strumento di sviluppo Oracle Sql è utilizzato da molti sviluppatori. Questo corso offre trucchi e lezioni su come utilizzarlo in modo efficace e diventare uno sviluppatore sql produttivo
Oracle SQL Performance Tuning Masterclass 2020 :l'ottimizzazione delle prestazioni è una delle abilità critiche e più ricercate. Questo è un buon corso per conoscerlo e iniziare a ottimizzare le prestazioni di sql