Introduction▲
Rôles et privilèges sont définis pour sécuriser l'accès aux données de la base
Ces concepts sont mis en oeuvre pour protéger les données en accordant (ou retirant) des privilèges a un utilisateur ou un groupe d'utilisateurs
Un rôle est un regroupement de privilèges. Une fois créé il peut être assigné à un utilisateur ou à un autre rôle
Les privilèges sont de deux types
- Les privilèges de niveau système
Qui permettent la création, modification, suppression, exécution de groupes d'objets
les privilèges CREATE TABLE, CREATE VIEW, CREATE SEQUENCE par exemple permettent à l'utilisateur qui les a reçu de créer des tables, des vues et des séquences
- Les privilèges de niveau objet
Qui permettent les manipulations sur des objets spécifiques
les privilèges SELECT, INSERT, UPDATE, DELETE sur la table SCOTT.EMP par exemple permettent à l'utilisateur qui les a reçu de sélectionner, ajouter, modifier et supprimer des lignes dans la table EMP appartenant à l'utilisateur SCOTT
1. Assigner des privilèges système à un utilisateur▲
Assigner des privilèges système à un utilisateur
Lorsqu'un utilisateur est créé avec l'instruction CREATE USER, il ne dispose encore d'aucun droit car aucun privilège ne lui a encore été assigné
Il ne peut même pas se connecter à la base !
Il faut donc lui assigner les privilèges nécessaires
Il doit pouvoir se connecter, créer des tables, des vues, des séquences.
Pour lui assigner ces privilèges de niveau système il faut utiliser l'instruction GRANT dont voici la syntaxe
systeme_privilege représente un privilège système (liste en annexe 1)
role représente un rôle préalablement créé
ALL PRIVILEGES représente tous les privilèges système (à l'exception de SELECT ANY DICTIONARY)
user représente le nom de l'utilisateur qui doit bénéficier du privilège
PUBLIC assigne le privilège à tous les utilisateurs
WITH ADMIN OPTION assigne à l'utilisateur le droit d'assigner, de retirer, de modifier et de supprimer à son tour les privilèges du rôle reçus
Attention avec l'option ALL PRIVILEGES. Celle-ci accorde des droits quasi illimités à l'utilisateur qui en hérite, avec les risques de sécurité que cela implique
Pour que l'utilisateur puisse simplement se connecter à la base, il doit bénéficier du privilège système CREATE SESSION
GRANT
CREATE
SESSION
TO
nom_utilisateur ;
Ensuite il faut lui assigner des droits de création de table
GRANT
CREATE
TABLE
TO
nom_utilisateur ;
Puis les droits de création de vues
GRANT
CREATE
VIEW
TO
nom_utilisateur ;
Et il en va de même pour tous les autres privilèges qui lui sont assignés.
L'ensemble de ces privilèges peuvent être assignés au sein d'une même commande
GRANT
CREATE
SESSION
,CREATE
TABLE
,CREATE
VIEW
TO
nom_utilisateur ;
2. Assigner des privilèges objet à un utilisateur▲
object_privilege représente un privilège objet (liste en annexe 2)
role représente un rôle préalablement créé
ALL PRIVILEGES représente tous les privilèges assignés à l'exécuteur de l'instruction
column représente le nom de colonne d'une table
schema représente le nom d'un schéma
object représente le nom d'un objet du schéma
directory_name représente le nom d'une directory
JAVA SOURCE représente le nom d'une source Java
JAVA RESOURCE représente le nom d'une ressource Java
WITH GRANT OPTION assigne à l'utilisateur de droit d'assigner à son tour le privilège reçu à un autre utilisateur
(WITH GRANT OPTION s'applique à un utilisateur ou à PUBLIC, mais pas à un rôle)
WITH HIERARCHY OPTION assigne le privilèges aux sous-objets
Pour assigner à l'utilisateur le droit de sélectionner, insérer, modifier et supprimer des lignes dans la table EMP de l'utilisateur SCOTT
GRANT
SELECT
,INSERT
,UPDATE
,DELETE
ON
SCOTT.EMP
TO
nom_utilisateur ;
Une liste de colonnes peut être indiquée dans l'instruction afin de restreindre davantage les droits sur une table
GRANT
UPDATE
(
JOB, MGR )
ON
SCOTT.EMP
TO
nom_utilisateur ;
L'utilisateur peut modifier la table SCOTT.EMP mais uniquement les colonnes JOB et MGR
Pour pouvoir mettre à jour ou supprimer des lignes d'une table, les privilèges UPDATE ET DELETE ne suffisent pas. Le privilège SELECT est nécessaire
Un utilisateur munis des droits DBA ne pourra pas accorder de privilèges sur un objet qui ne lui appartient pas
Principes généraux appliqués aux privilèges
- Un utilisateur possède automatiquement tous les privilèges sur un objet qui lui appartient
- Un utilisateur ne peut pas donner plus de privilèges qu'il n'en a reçu
- s'il n'a pas reçu le privilège avec l'option WITH GRANT OPTION, un utilisateur ne peux pas assigner à son tour ce même privilège
L'instruction GRANT permet d'assigner un ou plusieurs privilèges système ou objet
Cependant, lorsque la liste des privilèges est importante, cette manière de procéder s'avère rapidement fastidieuse et répétitive
Si l'on prend l'exemple d'un utilisateur travaillant au service comptabilité, il doit recevoir un certain nombre de privilèges sur un certain nombre d'objets
Un autre utilisateur du même service à toutes les chances de se voir assigner des privilèges identiques
C'est pourquoi il est souhaitable de pouvoir regrouper des privilèges identiques dans un même ensemble
3. Créer des rôles et leur assigner des privilèges▲
Cet ensemble s'appelle un rôle et se créé avec l'instruction CREATE ROLE
role représente le nom du rôle
NOT IDENTIFIED (défaut) indique qu'aucun mot de passe n'est nécessaire pour activer le rôle
IDENTIFIED BY password indique qu'un mot de passe est nécessaire pour activer le rôle
IDENTIFIED USING package indique qu'un package va être utilisé pour fixer les droits de l'utilisateur
IDENTIFIED EXTERNALLY indique que l'autorisation provient d'une source externe (S.E.)
IDENTIFIED GLOBALLY pour un user GLOBAL géré par exemple par Enterprise Directory Service
Lorsque le rôle est créé, il ne contient rien et il faut l'alimenter à l'aide d'instructions GRANT
CREATE
ROLE comptabilite ;
GRANT
SELECT
, INSERT
, UPDATE
, DELETE
ON
CPT.FACTURE TO
comptabilite ;
GRANT
SELECT
, INSERT
, UPDATE
, DELETE
ON
CPT.LIG_FAC TO
comptabilite ;
GRANT
SELECT
, INSERT
, UPDATE
, DELETE
ON
CPT.JOURNAL TO
comptabilite ;
Une fois le rôle créé, il peut être assigné à un utilisateur ou à un autre rôle
GRANT
comptabilite TO
nom_utilisateur ;
Exemple d'utilisation d'un package pour l'utilisation d'un rôle
-- CREATION DU ROLE IDENTIFIE PAR LA PROCEDURE
create
role test identified
using
scott.test_check;
-- CREATION DU PACKAGE
create
or
replace
procedure
test_check
authid current_user
is
Begin
-- VERIFICATION DE L'ADRESSE IP DU DEMANDEUR
For
i in
(
select
sys_context (
‘USERENV', ‘IP_ADDRESS'
)
ip from
dual
)
Loop
If
i.ip !=
‘192
.168
.12
.196
' Then
-- MAUVAISE IP, SORTIE DE LA PROCEDURE
return;
End if;
-- IP OK, ON ACTIVE LE ROLE
dbms_session.set_role(‘TEST'
)
;
End
loop
;
End
;
-- CREATION D'UNE TABLE DE TEST
create
table
sys.test as
select
*
from
dual
;
-- ON DONNE LES DROITS AU ROLE
grant
select
on
sys.test to
test;
-- ON DONNE LE ROLE A SCOTT
grant
test to
scott;
-- ON DESACTIVE LE ROLE POUR SCOTT CAR SINON IL SERAIT ACTIVE PAR DEFAUT,
-- CE QUI NE SERAIT D'AUCUNE UTILITE
ALTER
USER
scott DEFAULT
ROLE ALL
EXCEPT
test;
-- CONNEXION
SQL
>
connect
scott/
tiger
SQL
>
select
*
from
sys.test;
-- DROITS REFUSES
-- SCOTT DEMANDE L'ACTIVATION DU ROLE TEST
set
role test;
-- SI L'ADRESSE IP EST RECONNUE
SQL
>
select
*
from
sys.test;
D
-
X
SQL
>
select
*
from
session_role;
ROLE
--------
CONNECT
RESOURCE
TEST
Trois rôles existent en standard
- CONNECT
- RESOURCE
- DBA
Les privilèges système assignés au rôle CONNECT
SQL
>
select
*
from
DBA_SYS_PRIVS where
grantee=
'CONNECT'
;
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
CONNECT
CREATE
VIEW
NO
CONNECT
CREATE
TABLE
NO
CONNECT
ALTER
SESSION
NO
CONNECT
CREATE
CLUSTER
NO
CONNECT
CREATE
SESSION
NO
CONNECT
CREATE
SYNONYM
NO
CONNECT
CREATE
SEQUENCE NO
CONNECT
CREATE
DATABASE
LINK NO
8
ligne(
s)
sélectionnée(
s)
.
Ce rôle permet l'ouverture (CREATE SESSION) et la modification (ALTER SESSION) d'une session
La création de tables, vues, clusters, séquences, synonymes et liens de bases de données
L'option ADMIN OPTION positionnée à NO indique que ces privilèges ne peuvent pas être assignés à un autre utilisateur ou rôle
Les privilèges système assignés au rôle RESOURCE
SQL
>
select
*
from
DBA_SYS_PRIVS where
grantee=
'RESOURCE'
;
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
RESOURCE
CREATE
TYPE
NO
RESOURCE
CREATE
TABLE
NO
RESOURCE
CREATE
CLUSTER
NO
RESOURCE
CREATE
TRIGGER
NO
RESOURCE
CREATE
OPERATOR NO
RESOURCE
CREATE
SEQUENCE NO
RESOURCE
CREATE
INDEXTYPE NO
RESOURCE
CREATE
PROCEDURE
NO
8
ligne(
s)
sélectionnée(
s)
.
Ce rôle permet de créer des types, tables clusters, opérateurs, séquences, index et procédures
Le rôle RESOURCE accorde un privilège UNLIMITED QUOTA à l'utilisateur est n'est donc à assigner qu'en connaissance de cause
Les privilèges système assignés au rôle DBA
1
*
select
*
from
DBA_SYS_PRIVS where
grantee=
'DBA'
order
by
PRIVILEGE
SQL
>
/
GRANTEE PRIVILEGE ADM
------------------------------ ---------------------------------------- ---
DBA
ADMINISTER DATABASE
TRIGGER
YES
DBA
ADMINISTER RESOURCE
MANAGER YES
DBA
ALTER
ANY
CLUSTER
YES
DBA
ALTER
ANY
DIMENSION
YES
DBA
ALTER
ANY
EVALUATION CONTEXT
YES
DBA
ALTER
ANY
INDEX
YES
DBA
ALTER
ANY
INDEXTYPE YES
DBA
ALTER
ANY
LIBRARY YES
DBA
ALTER
ANY
OUTLINE YES
DBA
ALTER
ANY
PROCEDURE
YES
DBA
ALTER
ANY
ROLE YES
DBA
ALTER
ANY
RULE YES
DBA
ALTER
ANY
RULE SET
YES
DBA
ALTER
ANY
SEQUENCE YES
DBA
ALTER
ANY
SNAPSHOT
YES
DBA
ALTER
ANY
TABLE
YES
DBA
ALTER
ANY
TRIGGER
YES
DBA
ALTER
ANY
TYPE
YES
...
...
DBA
SELECT
ANY
DICTIONARY YES
DBA
SELECT
ANY
SEQUENCE YES
DBA
SELECT
ANY
TABLE
YES
DBA
UNDER ANY
TABLE
YES
DBA
UNDER ANY
TYPE
YES
DBA
UNDER ANY
VIEW
YES
DBA
UPDATE
ANY
TABLE
YES
139
ligne(
s)
sélectionnée(
s)
.
La liste des privilèges assignés au rôle DBA est beaucoup plus longue du fait que ce rôle est octroyé aux utilisateurs ayant des droits d'administration de la base
D'une façon générale, il est fortement déconseillé d'utiliser ces rôles standards car ils accordent trop de droits aux utilisateurs
La liste des rôles définis est visible depuis la vue DBA_ROLES
SQL
>
select
*
from
DBA_ROLES ;
ROLE PASSWORD
------------------------------ --------
CONNECT
NO
RESOURCE
NO
DBA
NO
SELECT_CATALOG_ROLE NO
EXECUTE_CATALOG_ROLE NO
DELETE_CATALOG_ROLE NO
EXP_FULL_DATABASE NO
IMP_FULL_DATABASE NO
RECOVERY_CATALOG_OWNER NO
GATHER_SYSTEM_STATISTICS NO
LOGSTDBY_ADMINISTRATOR NO
AQ_ADMINISTRATOR_ROLE NO
AQ_USER_ROLE NO
GLOBAL_AQ_USER_ROLE GLOBAL
OEM_MONITOR NO
HS_ADMIN_ROLE NO
WKUSER NO
WM_ADMIN_ROLE NO
JAVAUSERPRIV NO
JAVAIDPRIV NO
JAVASYSPRIV NO
JAVADEBUGPRIV NO
EJBCLIENT NO
JAVA_ADMIN NO
JAVA_DEPLOY NO
CTXAPP NO
XDBADMIN NO
AUTHENTICATEDUSER NO
OLAP_DBA NO
SALES_HISTORY_ROLE NO
30
ligne(
s)
sélectionnée(
s)
.
La liste des privilèges système assignés à un rôle s'obtient en interrogeant les vues DBA_SYS_PRIVS et USER_SYS_PRIVS
SQL
>
desc
DBA_SYS_PRIVS
Nom NULL
? Type
----------------------------------------- -------- ------------
GRANTEE NOT
NULL
VARCHAR2
(
30
)
PRIVILEGE NOT
NULL
VARCHAR2
(
40
)
ADMIN_OPTION VARCHAR2
(
3
)
La liste des rôles assignés à un utilisateur s'obtient via les vues
DBA_ROLE_PRIVS et USER_ROLE_PRIVS
SQL
>
select
*
from
DBA_ROLE_PRIVS where
grantee =
'FD'
;
GRANTEE GRANTED_ROLE ADM DEF
------------------------------ ------------------------------ --- ---
FD DBA
NO
YES
FD CONNECT
NO
YES
FD RESOURCE
NO
YES
FD GATHER_SYSTEM_STATISTICS NO
YES
La liste des privilèges objet assignés à un utilisateur s'obtient en interrogeant les vues
DBA_TAB_PRIVS, ALL_TAB_PRIVS et USER_TAB_PRIVS
select
*
from
DBA_TAB_PRIVS where
grantee =
'FD'
;
GRANTEE OWNER
TABLE_NAME
GRANTOR PRIVILEGE GRANTABLE HIERARCHY
FD SYS ALL_DIRECTORIES SYS SELECT
NO
NO
FD SYS DBA_DIRECTORIES SYS SELECT
NO
NO
La liste des privilèges objet sur les colonnes de tables assignés à un utilisateur s'obtient en interrogeant les vues
DBA_COL_PRIVS, ALL_COL_PRIVS et USER_COL_PRIVS
La liste des rôles assignés à l'utilisateur au cours de sa session est visible via la vue SESSION_ROLES
SQL
>
select
*
from
SESSION_ROLES ;
ROLE
------------------------------
CONNECT
RESOURCE
La liste des privilèges assignés à l'utilisateur au cours de sa session est visible via la vue SESSION_PRIVS
SQL
>
select
*
from
SESSION_PRIVS ;
PRIVILEGE
-----------------------------------
CREATE
SESSION
ALTER
SESSION
UNLIMITED TABLESPACE
CREATE
TABLE
CREATE
CLUSTER
CREATE
SYNONYM
CREATE
VIEW
CREATE
SEQUENCE
CREATE
DATABASE
LINK
CREATE
PROCEDURE
CREATE
TRIGGER
CREATE
TYPE
CREATE
OPERATOR
CREATE
INDEXTYPE
Les privilèges assignés à un utilisateur via un rôle ne permettent pas la création de vues, de procédures, de fonctions de packages ni de clés étrangères par l'intermédiaire de code PL/SQL dynamique (DBMS_SQL, execute immediate)
Pour créer ces objets via PL/SQL, l'utilisateur doit avoir reçu directement les privilèges requis via l'instruction GRANT
Les vues SESSION_PRIVS et SESSION_ROLES sont utiles pour vérifier les droits acquis au cours de la session
Les rôles par défaut à la connexion pouvant être enrichis avec l'instruction SET ROLE (ou son équivalent PL/SQL : DBMS_SESSION.SET_ROLE)
Un mot de passe peut être ajouté à un rôle pour pouvoir l'activer avec l'instruction ALTER ROLE
IDENTIFIED permet de définir le système d'identification
NOT IDENTIFIED supprime le système d'identification
Cela permet de se prémunir de l'attribution du rôle par un utilisateur non autorisé qui tenterait de se l'attribuer via l'instruction SET ROLE
4. Activer et désactiver un rôle▲
Un rôle peut être activé ou désactivé pour un utilisateur avec l'instruction ALTER USER
DEFAULT ROLE spécifie les rôles assignés par défaut à la connexion
ALL assigne tous les rôles à l'utilisateur
ALL EXCEPT assigne tous les rôles à l'utilisateur à l'exception des rôles désignés
NONE n'assigne aucun rôle à l'utilisteur
Pour activer un rôle qui ne fait pas partie de ceux par défaut il faut utiliser l'instruction SET ROLE
5. Suppression d'un rôle▲
Un rôle peut être supprimé en utilisant l'instruction DROP ROLE
DROP
ROLE nom_role ;
Le rôle spécifié ainsi que tous les privilèges qui lui sont associés sont supprimés de la base et également retiré à tous les utilisateurs qui en bénéficiaient
6. Retirer des privilèges système▲
Les privilèges système qui ont été assignés à des utilisateurs ou à des rôles peuvent être retirés avec l'instruction REVOKE
Les arguments sont identiques à ceux décrits pour l'instruction GRANT
Pour pouvoir supprimer un privilège, il faut en avoir reçu l'autorisation avec l'option ADMIN OPTION
L'utilisteur disposant du rôle DBA peut révoquer les privilèges CONNECT, RESOURCE, DBA ou tout autre privilège système ou rôle
Retirer des privilèges à un utilisateur ne supprime pas son schéma ni les objets qu'il contient
7. Retirer des privilèges objet▲
Les privilèges objet qui ont été assignés à des utilisateurs ou à des rôles peuvent être retirés avec l'instruction REVOKE
CASCADE CONSTRAINTS (applicable uniquement pour révoquer des privilèges REFERENCES) supprime toutes les contraintes d'intégrité référentielles définies par l'utilisateur
FORCE retire le privilège EXECUTE sur les types objet
Pour pouvoir supprimer un privilège, il faut en avoir reçu l'autorisation avec l'option ADMIN OPTION
L'utilisteur disposant du rôle DBA ne peut pas retirer de privilèges qu'il n'a pas accordé
8. Liste des privilèges système▲
Privilège système | Description |
---|---|
CLUSTERS | |
CREATE CLUSTER | Création de clusters dans le schéma |
CREATE ANY CLUSTER | Création de clusters dans n'importe quel schéma |
ALTER ANY CLUSTER | Modification de clusters dans n'importe quel schéma |
DROP ANY CLUSTER | Suppression de clusters dans n'importe quel schéma |
CONTEXTS | |
CREATE ANY CONTEXT | Créations de tous context |
DROP ANY CONTEXT | Suppression de tous context |
DATABASE | |
ALTER DATABASE | Modification de la base |
ALTER SYSTEM | Autorise l'instruction ALTER SYSTEM |
AUDIT SYSTEM | Autorise les instructions AUDIT sql_statements |
DATABASE LINKS: | |
CREATE DATABASE LINK | Création de liens de base de données dans le schéma |
CREATE PUBLIC DATABASE LINK | Création de liens de base de données pour le groupe PUBLIC |
DROP PUBLIC DATABASE LINK | Suppression de liens de base de données pour le groupe PUBLIC |
DEBUGGING | |
DEBUG CONNECT SESSION | Connexion dans la session en cours au débugger utilisant le protocol Java Debug Wire Protocol (JDWP) |
DEBUG ANY PROCEDURE | Deboguage de tout code PL/SQL ou Java dans n'importe quel objet de la base |
DIMENSIONS | |
CREATE DIMENSION | Création de dimentions dans le schéma |
CREATE ANY DIMENSION | Création de dimentions dans n'importe quel schéma |
ALTER ANY DIMENSION | Modification de dimentions dans n'importe quel schéma |
DROP ANY DIMENSION | Suppression de dimentions dans n'importe quel schéma |
DIRECTORIES | |
CREATE ANY DIRECTORY | Création d'objets DIRECTORY |
DROP ANY DIRECTORY | Suppression d'objets DIRECTORY |
INDEXTYPES | |
CREATE INDEXTYPE | Création d'indextype dans le schéma |
CREATE ANY INDEXTYPE | Création d'indextype dans n'importe quel schéma |
ALTER ANY INDEXTYPE | Modification d'indextype dans n'importe quel schéma |
DROP ANY INDEXTYPE | Suppression d'indextype dans n'importe quel schéma |
EXECUTE ANY INDEXTYPE | Reférence un indextype dans n'importe quel schéma |
INDEXS | |
CREATE ANY INDEX | Création d'index dans n'importe quel schéma |
ALTER ANY INDEX | Modification d'index dans n'importe quel schéma |
DROP ANY INDEX | Suppression d'index dans n'importe quel schéma |
QUERY REWRITE | Autorise la réécriture via une vue matérialisée dans le schéma |
GLOBAL QUERY REWRITE | Autorise la réécriture via une vue matérialisée dans n'importe quel schéma |
LIBRARIES | |
CREATE LIBRARY | Création de librairies de fonctions/procédures externes dans le schéma |
CREATE ANY LIBRARY | Création de librairies de fonctions/procédures externes dans n'importe quel schéma |
DROP ANY LIBRARY | Suppression de librairies de fonctions/procédures externes dans n'importe quel schéma |
MATERIALIZED VIEWS | |
CREATE MATERIALIZED VIEW | Création de vues matérialisées dans le schéma |
CREATE ANY MATERIALIZED VIEW | Création de vues matérialisées dans n'importe quel schéma |
ALTER ANY MATERIALIZED VIEW | Modification de vues matérialisées dans n'importe quel schéma |
DROP ANY MATERIALIZED VIEW | Suppression de vues matérialisées dans n'importe quel schéma |
QUERY REWRITE | Autorise la réécriture via une vue matérialisée dans le schéma |
GLOBAL QUERY REWRITE | Autorise la réécriture via une vue matérialisée dans n'importe quel schéma |
ON COMMIT REFRESH | Création de vues matérialisées de type refresh-on-commit sur n'importe quelle table |
FLASHBACK ANY TABLE | Autorise une requête FlashBack sur n'importe quelle table, vue ou vue matérialisée dans n'importe quel schéma |
OPERATORS | |
CREATE OPERATOR | Création d'un opérateur dans le schéma |
CREATE ANY OPERATOR | Création d'un opérateur dans n'importe quel schéma |
DROP ANY OPERATOR | Suppression d'un opérateur dans n'importe quel schéma |
EXECUTE ANY OPERATOR | Référence un opérateur dans n'importe quel schéma |
OUTLINES | |
CREATE ANY OUTLINE | Création d' outlines publics |
ALTER ANY OUTLINE | Modification d' outlines publics |
DROP ANY OUTLINE | Suppression d' outlines publics |
PROCEDURES | |
CREATE PROCEDURE | Création de fonctions, procédures et packages dans le schéma |
CREATE ANY PROCEDURE | Création de fonctions, procédures et packages dans n'importe quel schéma |
ALTER ANY PROCEDURE | Modification de fonctions, procédures et packages dans n'importe quel schéma |
DROP ANY PROCEDURE | Suppression de fonctions, procédures et packages dans n'importe quel schéma |
EXECUTE ANY PROCEDURE | Exécution de fonctions, procédures et package de n'importe quel schéma |
PROFILS | |
CREATE PROFILE | Création de profils |
ALTER PROFILE | Modification de profils |
DROP PROFILE | Suppression de profils |
ROLES | |
CREATE ROLE | Création de rôles |
ALTER ANY ROLE | Modification de n'importe quel rôle |
DROP ANY ROLE | Suppression de n'importe quel rôle |
GRANT ANY ROLE | Assignation de n'importe quel rôle |
ROLLBACK SEGMENTS | |
CREATE ROLLBACK SEGMENT | Création de segments de rollback |
ALTER ROLLBACK SEGMENT | Modification de segments de rollback |
DROP ROLLBACK SEGMENT | Suppression de segments de rollback |
SEQUENCES | |
CREATE SEQUENCE | Création de séquences dans le schéma |
CREATE ANY SEQUENCE | Création de séquences dans n'importe quel schéma |
ALTER ANY SEQUENCE | Modification de n'importe quelle séquence |
DROP ANY SEQUENCE | Suppression de séquences dans n'importe quel schéma |
SELECT ANY SEQUENCE | Interrogation de séquences dans n'importe quel schéma |
SESSIONS | |
CREATE SESSION | Connexion à la base |
ALTER RESOURCE COST | Application de coûts pour les ressources de la session |
ALTER SESSION | Permet l'instruction ALTER SESSION |
RESTRICTED SESSION | Connexion restreinte à l'instance |
SYNONYMS | |
CREATE SYNONYM | Création de synonymes dans le schéma |
CREATE ANY SYNONYM | Création de synonymes dans n'importe quel schéma |
CREATE PUBLIC SYNONYM | Création de synonymes publics |
DROP ANY SYNONYM | Suppression de synonymes dans le schéma |
DROP PUBLIC SYNONYM | Suppression de synonymes publics |
TABLES | |
CREATE TABLE | Création de tables dans le schéma |
CREATE ANY TABLE | Création de tables dans n'importe quel schéma |
ALTER ANY TABLE | Modification de tables ou vues dans n'importe quel schéma |
BACKUP ANY TABLE | Autorise l'utilisation de l'outil Export |
DELETE ANY TABLE | Suppression de lignes des tables de n'importe quel schéma |
DROP ANY TABLE | Suppression ou troncature de tables dans n'importe quel schéma |
INSERT ANY TABLE | Insertion de lignes dans les tables de n'importe quel schéma |
LOCK ANY TABLE | Vérouillage des tables ou vues de n'importe quel schéma |
SELECT ANY TABLE | Interrogation des tables, vues ou vues matérialisées de n'importe quel schéma |
FLASHBACK ANY TABLE | Autorise les requêtes FlashBack sur n'importe quelle table de n'importe quel schéma |
UPDATE ANY TABLE | Mise à jour de lignes dans les tables de n'importe quel schéma |
TABLESPACES | |
CREATE TABLESPACE | Création de tablespace |
ALTER TABLESPACE | Modification de tablespace |
DROP TABLESPACE | Suppression de tablespace |
MANAGE TABLESPACE | Autorise la mise en ligne/hors ligne des tablespace |
UNLIMITED TABLESPACE | Quota illimité sur le tablespace |
TRIGGERS | |
CREATE TRIGGER | Création de déclencheurs dans le schéma |
CREATE ANY TRIGGER | Création de déclencheurs dans n'importe quel schéma |
ALTER ANY TRIGGER | Activation, désactivation, compilation de déclencheurs dans n'importe quel schéma |
DROP ANY TRIGGER | Suppression de déclencheurs dans n'importe quel schéma |
ADMINISTER DATABASE TRIGGER | Création de déclencheurs de base de données |
TYPES | |
CREATE TYPE | Création d'objets et de corps d'objets dans le schéma |
CREATE ANY TYPE | Création d'objets et de corps d'objets dans n'importe quel schéma |
ALTER ANY TYPE | Modification d'objets et de corps d'objets dans n'importe quel schéma |
DROP ANY TYPE | Suppression d'objets et de corps d'objets dans n'importe quel schéma |
EXECUTE ANY TYPE | Utilisation d'objets et de corps d'objets dans n'importe quel schéma |
UNDER ANY TYPE | Création de sous-types sous des types non finaux |
VIEWS | |
CREATE VIEW | Création de vues dans le schéma |
CREATE ANY VIEW | Création de vues dans n'importe quel schéma |
DROP ANY VIEW | Suppression de vues dans n'importe quel schéma |
UNDER ANY VIEW | Création de sous-vues sous n'importe quelle vue objet |
Autres | |
ANALYZE ANY | Analyse de tables, clusters et index dans n'importe quel schéma |
AUDIT ANY | Audit de n'importe quel objet de n'importe quel schéma |
COMMENT ANY TABLE | Pose de commentaires sur les tables et vues de n'importe quel schéma |
FORCE ANY TRANSACTION | Force le commit ou rollback de n'importe quelle transaction distibuée douteuse |
FORCE TRANSACTION | Force le commit ou rollback de n'importe quelle transaction distibuée douteuse |
GRANT ANY OBJECT PRIVILEGE | Assigne n'importe quel privilège objet |
GRANT ANY PRIVILEGE | Assigne n'importe quel privilège système |
RESUMABLE | Active l'allocation d'espace pour les instructions résumables |
SELECT ANY DICTIONARY | Interrogation de n'importe quel objet dans le dictionnaire du schéma SYS |
SYSDBA | Autorise les opérations STRTUP et SHUTDOWN ALTER DATABASE: open, mount, back up, ou changement du jeu de caractères CREATE DATABASE ARCHIVELOG et RECOVERY CREATE SPFILE Inclue le privilège RESTRICTED SESSION |
SYSOPER | Autorise les opérations STARTUP et SHUTDOWN ALTER DATABASE OPEN | MOUNT | BACKUP ARCHIVELOG et RECOVERY CREATE SPFILE Inclue le privilège RESTRICTED SESSION |
9. Liste des privilèges objet▲
Privilège objet | Description |
---|---|
TABLES | |
ALTER | Modifier la définition d'une table |
DELETE | Supprimer des lignes de la table |
DEBUG | Accès via un debugger |
INDEX | Création d'un index sur la table |
INSERT | Insertion de lignes dans la table |
REFERENCES | Création d'une contrainte d'intégrité |
SELECT | Interrogation d'une table |
UPDATE | Mise à jour de la table |
VIEWS | |
DEBUG | Accès via un debugger |
DELETE | Suppression de lignes |
INSERT | Insertion de lignes |
REFERENCES | Définition de contrainte d'intégrité |
SELECT | Interrogation de la vue |
UNDER | Création d'une sous-vue |
UPDATE | Mise à jour de la vue |
SEQUENCES | |
ALTER | Modification de la définition d'une séquence |
SELECT | Interrogation d'une séquence |
PROCEDURES | |
DEBUG | Accès via un debugger |
EXECUTE | Compilation, exécution d'une procédure, d'une fonction ou d'un package |
MATERIALIZED VIEWS | |
ON COMMIT REFRESH | Création d'une vue matérialisée de type refresh-on-commit sur la table |
QUERY REWRITE | Vue matérialisée en query rewrite |
SELECT | Interrogation d'une vue matérialisée |
DIRECTORIES | |
READ | Droits de lecture sur le répertoire |
WRITE | Droits d'écriture sur le répertoire |
LIBRARIES | |
EXECUTE | Utilisation d'un objet et de ses méthodes |
OBJECT TYPES | |
DEBUG | Accès via un debugger |
EXECUTE | Utilisation d'un objet et de ses méthodes |
UNDER | Création d'un sous-type |
INDEXTYPES | |
EXECUTE | Utilisation d'un indextype |
OPERATORS | |
EXECUTE | Utilisation d'un opérateur |