IUTLR INFO BD2 CR TP6 UserRolePrivs BRISSET Alan 1415 .pdf



Nom original: IUTLR-INFO-BD2-CR-TP6-UserRolePrivs-BRISSET-Alan-1415.pdfAuteur: Alan Brisset

Ce document au format PDF 1.4 a été généré par Writer / LibreOffice 4.2, et a été envoyé sur fichier-pdf.fr le 06/04/2015 à 21:42, depuis l'adresse IP 86.201.x.x. La présente page de téléchargement du fichier a été vue 636 fois.
Taille du document: 169 Ko (29 pages).
Confidentialité: fichier public


Aperçu du document


Université de La Rochelle
IUT – La Rochelle
Département Informatique
BD2 - UE 21 - M2106
Année universitaire 2014-2014

Compte rendu du :
TP-06
Utilisateurs, Privilèges et Rôles
Confidentialité́ et sécurité́ des données
Mise en oeuvre sur Oracle 10g
Par :
Alan BRISSET
Groupe de TP :
A1
Table des matières
I.

CRÉATION D'UN UTILISATEUR ET CONNEXION À LA BASE DE DONNÉES.............................2

II.

UTILISATEURS ET PRIVILÈGES OBJETS......................................................................................... 4

III.

UTILISATEURS ET PRIVILÈGES SYSTÈMES............................................................................... 16

IV.

SUPPRIMER UN UTILISATEUR...................................................................................................... 19

V.

UTILISATEURS, PRIVILÈGES ET RÔLES........................................................................................ 22

VI.

UTILISATEURS, PRIVILÈGES ET RÔLES : MÉTABASE..............................................................26

Soient SQL1 et SQL2 les sessions respectives des comptes SQL ALAN_BRISSET ET
ALAN_BRISSET_TEMP.

I. Création d'un utilisateur et connexion à la base
de données
SQL1
CREATE USER ALAN_BRISSET_TEMP
IDENTIFIED BY temp
DEFAULT TABLESPACE users;
Réponse de la console :
User created.

Cet ordre SQL permet de créer l'utilisateur ALAN_BRISSET_TEMP, ayant comme mot de passe
temp. Il met par défaut ses tables dans le répértoire users.

SQL1
SELECT username
FROM all_users
WHERE to_char (created, 'dd/mm/yyyy') = to_char (sysdate, 'dd/mm/yyyy')
AND upper (username) LIKE 'ALAN_BRISSET%';
Réponse de la console :

USERNAME
----------------------------ALAN_BRISSET_TEMP
Cet ordre SQL permet d'afficher le nom d'utilisateur parmi tous les utilisateurs, venant de
l'utilisateur qui a été crée dans la journée, et ayant un nom d'utilisateur commençant par
ALAN_BRISSET.

SQL2
@connexion_windows_temp.bat
Réponse de la console :

ERROR : ORA-0104
USER ALAN_BRISSET_TEMP lacks CREATE SESSION PRIVILEGE : logon denied.
On a tout d'abord crée le fichier connexion_windows_temp.bat , contenant les champs :
SET USER=ALAN_BRISSET_TEMP (nom d'utilisateur => ALAN_BRISSET_TEMP)
SET USER_PWD=temp (mot de passe de l'utilisateur => temp)
Cependant, le nouvel utilisateur ALAN_BRISSET_TEMP n’a pas les droits de création de
session : il obtient donc un message d’erreur. Pour régler cela, on doit lui donner ce droit via le
compte ALAN_BRISSET.

SQL1
GRANT CREATE SESSION TO ALAN_BRISSET_TEMP ;

Réponse de la console :
Grant succedeed.
SQL2
@connexion_windows_temp.bat
La connexion se fait : ALAN_BRISSET_TEMP est connecté à la base SQL.

II. Utilisateurs et privilèges objets
SQL2
SELECT ID_PROP, NOMPROP, ADRESSE, VILLE, CODPOSTAL, TEL_PORTABLE
FROM PROPRIETAIRE;
Réponse de la console :
Error : table or view does not exist.
La console nous indique que la table PROPRIETAIRE n’existe pas, alors que nous savons très
bien qu’elle existe. Cela vient d’un souci de confidentialité : ALAN_BRISSET_TEMP n’a pas accès
à la consultation de la table PROPRIETAIRE ; indiquer qu’il n’y a pas accès lui donnerait
cependant l’information que la table existe, créant un problème de confidentialité. La console
retourne donc que la table n’existe pas. Le compte ALAN_BRISSET doit donc lui attribuer le
SELECT ON PROPRIETAIRE.

SQL1
GRANT SELECT ON PROPRIETAIRE TO ALAN_BRISSET_TEMP ;
Réponse de la console :
Grant succeeded.

SQL2
SELECT ID_PROP, NOMPROP, ADRESSE, VILLE, CODPOSTAL, TEL_PORTABLE
FROM PROPRIETAIRE;
Cette fois-ci, la commande marche.

SQL2
UPDATE ALAN_BRISSET.PROPRIETAIRE
SET ADRESSE=’1, rue du port’
WHERE ID_PROP=1 ;
Réponse de la console :
Error : table or view does not exist.
On retrouve le même souci que tout à l’heure, à propos de la non-permission de mettre à
jour une table, et des soucis de confidentialité. On donne donc cette permission à
ALAN_BRISSET_TEMP depuis ALAN_BRISSET.

SQL1
GRANT UPDATE (adresse) ON PROPRIETAIRE TO ALAN_BRISSET_TEMP;
Réponse de la console :
Grant succeeded.

SQL2
UPDATE ALAN_BRISSET.PROPRIETAIRE
SET ADRESSE=’1, rue du port’
WHERE ID_PROP=1 ;
Réponse de la console :
1 ligne mise à jour.

SELECT ID_PROP, ADRESSE
FROM ALAN_BRISSET.PROPRIETAIRE;
Réponse de la console :
ID_PROP

ADRESSE

1

1, rue du port

2

adr_prop_bat

SQL1
COLUMN ADRESSE format a20;
SELECT ID_PROP, ADRESSE
FROM ALAN_BRISSET.PROPRIETAIRE;
Réponse de la console :
ID_PROP

ADRESSE

1

1, rue du port

2

adr_prop_bat

On obtient le même résultat, preuve que la permission d'éditer la table a bien été accordée à
ALAN_BRISSET_TEMP, et qu'il voit la même chose que le compte ALAN_BRISSET.

Afin de pouvoir changer modifier le contenu des colonnes VILLE, CODPOSTAL de la table
PROPRIETAIRE de l’utilisateur ALAN_BRISSET, on lui attribue le droit d'UPDATE sur ces colonnes.

SQL1
GRANT UPDATE (VILLE, CODPOSTAL) ON PROPRIETAIRE
TO ALAN_BRISSET_TEMP;
Réponse de la console :
Grant succeeded.

SQL2
UPDATE ALAN_BRISSET.PROPRIETAIRE
SET VILLE = 'Royan'
WHERE ID_PROP=1;
UPDATE ALAN_BRISSET.PROPRIETAIRE
SET CODPOSTAL = 17200
WHERE ID_PROP=1 ;
Réponse de la console :
1 ligne mise à jour.
1 ligne mise à jour.

SQL2
SELECT ID_PROP, VILLE, CODPOSTAL
FROM ALAN_BRISSET.PROPRIETAIRE;
Réponse de la console :
ID_PROP

VILLE

CODPOSTAL

1

Royan

17200

2

ville_prop_bat

codpostal_prop_bat

ID_PROP

VILLE

CODPOSTAL

1

Royan

17200

2

ville_prop_bat

codpostal_prop_bat

SQL1
COLUMN VILLE format a20;
COLUMN CODPOSTAL FORMAT a20;
SELECT ID_PROP, VILLE, CODPOSTAL
FROM PROPRIETAIRE;
Réponse de la console :

On obtient le même résultat, preuve que la permission d'éditer la table a bien été accordée à
ALAN_BRISSET_TEMP, et qu'il voit la même chose que le compte ALAN_BRISSET.

Afin de permettre à l'utilisateur ALAN_BRISSET_TEMP de pouvoir modifier toute la table
BATEAU_PASSAGE, on lui donne un GRANT.

SQL1
GRANT UPDATE ON BATEAU_PASSAGE
TO ALAN_BRISSET_TEMP;
Réponse de la console :
Grant succeeded.

SQL2
UPDATE ALAN_BRISSET.BATEAU_PASSAGE
SET CODPORT = 'OL'
WHERE NOMPROP = 'Dutroux';
Réponse de la console :
1 ligne mise à jour.

SQL2
SELECT * FROM ALAN_BRISSET.BATEAU_PASSAGE;
Réponse de la console :
CODPORT NOMBAT

ARV

DEPART

ID_MOD

NOMPRO TEL_PORT ADRESSE EMPL_AFF
P

OL

L'audaci 21/03/20 28/03/20
eux

LR

Le

15

Dutroux 0674525 7 rue du

15

22/03/20 29/03/20

témérair

1

15

ABLE

010
1

port

Germain 0699887 8 rue du

15

766

1

2

port

e

SQL1
SELECT * FROM BATEAU_PASSAGE;
Réponse de la console :
CODPORT NOMBAT

ARV

DEPART

ID_MOD

NOMPRO TEL_PORT ADRESSE EMPL_AFF
P

OL

L'audaci 21/03/20 28/03/20
eux

LR

Le
témérair

15

15

22/03/20 29/03/20
15

1

ABLE

Dutroux 0674525 7 rue du
010

1

15

port

Germain 0699887 8 rue du
766

1

2

port

e

Le fait d'avoir pu changer un attribut montre qu'il est tout aussi possible de changer plusieurs
attributs de la table. ALAN_BRISSET_TEMP peut désormais modifier tous les attributs de la
table BATEAU_PASSAGE du compte ALAN_BRISSET.

Pour qu'ALAN_BRISSET_TEMP puisse insérer du contenu dans la table PROPRIETAIRE, il faut
que le compte ALAN_BRISSET lui en donne le droit.

SQL1

GRANT INSERT ON PROPRIETAIRE
TO ALAN_BRISSET_TEMP;

Réponse de la console :
Grant succeeded.

SQL2
INSERT INTO ALAN_BRISSET.PROPRIETAIRE (ID_PROP, NOMPROP, ADRESSE, VILLE,
CODPOSTAL, TEL_PORTABLE)
VALUES (3, 'prop3', 'adr_prop3', 'La Rochelle', 17000, NULL);

Réponse de la console :

1 ligne créée.

SQL2
COLUMN ID_PROP format a20;
COLUMN NOMPROP format a20;
COLUMN ADRESSE format a20;
SELECT ID_PROP, NOMPROP, ADRESSE
FROM ALAN_BRISSET.PROPRIETAIRE;

Réponse de la console :

ID_PROP

NOMPROP

ADRESSE

3

Prop3

La Rochelle

SQL1
COLUMN ID_PROP format a20;
COLUMN NOMPROP format a20;
COLUMN ADRESSE format a20;
SELECT ID_PROP, NOMPROP, ADRESSE
FROM PROPRIETAIRE;

Réponse de la console :

ID_PROP

NOMPROP

ADRESSE

3

Prop3

La Rochelle

Le droit d'insérer une ligne dans la table PROPRIETAIRE a bien été donnée au compte
ALAN_BRISSET_TEMP.

Pour que le compte ALAN_BRISSET_TEMP puisse supprimer du contenu dans la table
PROPRIETAIRE, il faut que le compte ALAN_BRISSET lui en donne le droit.

SQL1

GRANT DELETE ON PROPRIETAIRE TO ALAN_BRISSET_TEMP;
Réponse de la console :
Grant succeeded.

SQL2

DELETE FROM ALAN_BRISSET.PROPRIETAIRE;

Réponse de la console :

Une ligne supprimée.

SQL2

COLUMN ID_PROP format a20;
COLUMN NOMPROP format a20;
COLUMN ADRESSE format a20;
SELECT ID_PROP, NOMPROP, ADRESSE
FROM ALAN_BRISSET.PROPRIETAIRE;

Réponse de la console :

no row selected.

SQL1

COLUMN ID_PROP format a20;
COLUMN NOMPROP format a20;
COLUMN ADRESSE format a20;
SELECT ID_PROP, NOMPROP, ADRESSE
FROM PROPRIETAIRE;

Réponse de la console :

no row selected.

Le compte ALAN_BRISSET_TEMP a bien pu supprimer la ligne qu'il avait insérée auparavant. Il a
donc désormais le droit de supprimer du contenu dans la table PROPRIETAIRE du compte
ALAN_BRISSET.

On tente de lancer la fonction listerMesTables de l'utilisateur ALAN_BRISSET depuis le compte
ALAN_BRISSET_TEMP.

SQL2

SELECT * FROM TABLE (ALAN_BRISSET.listerMesTables)

Réponse de la console :
Identificateur non-valide.

La console nous indique que nous n'avons pas les privilèges suffisants pour créer l'objet. Il faut
donc accorder le privilège d'exécution au compte ALAN_BRISSET_TEMP.

SQL1

GRANT EXECUTE ON listerMesTables TO ALAN_BRISSET_TEMP;

Réponse de la console :
Grant succeeded.

SQL2

SELECT * FROM TABLE (ALAN_BRISSET.listerMesTables)

Réponse de la console :

BATEAU_PASSAGE
BATEAU_RESIDENT
CLIENT
COMMANDE
EMPLACEMENT
EMPLACEMENT_LIBRE
MODELE
PORT
PRODUIT
PROPRIETAIRE
SORTIE
TYPE_EMPLACEMENT

L'utilisateur ALAN_BRISSET_TEMP a bien le droit d'utiliser la fonction listerMesTables de
l'utilisateur ALAN_BRISSET. Il bénéficie donc du privilège d'exécution de cette fonction.

Conclusion : Même si la fonction listerMesTables est faite par ALAN_BRISSET_TEMP ou tout
autre utilisateur autre qu'ALAN_BRISSET, elle se trouve dans le schéma de ce dernier, et
s'exécutera donc dans son schéma.

III. Utilisateurs et privilèges système

SQL2

CREATE TABLE TEST (T NUMBER NOT NULL);

Réponse de la console :

Erreur : privilèges insuffisants.

Pour que l'utilisateur ALAN_BRISSET_TEMP puisse créer une table, il est nécessaire de lui en
donner le privilège. De plus, on doit lui attribuer de l'espace mémoire sur l'espace SQL.

SQL1

GRANT CREATE TABLE TO ALAN_BRISSET_TEMP;
ALTER USER ALAN_BRISSET_TEMP QUOTA 1M ON USERS;

Réponse de la console :

Grant succeeded.
User altered.

SQL2

CREATE TABLE TEST (T NUMBER NOT NULL);

Réponse de la console :

Table created.

SQL2

SELECT * FROM TABLE (ALAN_BRISSET.listerMesTables);

Réponse de la console :

BATEAU_PASSAGE
BATEAU_RESIDENT
CLIENT
COMMANDE
EMPLACEMENT
EMPLACEMENT_LIBRE
MODELE
PORT
PRODUIT
PROPRIETAIRE
SORTIE
TYPE_EMPLACEMENT

Conclusion : On remarque que la table qu'ALAN_BRISSET_TEMP a créée n'apparaît pas dans la
fonction listerMesTables du compte ALAN_BRISSET. Puisqu'elle est exécutée dans le schéma
d'ALAN_BRISSET et que la table a été créée dans celle du compte ALAN_BRISSET_TEMP, c'est
normal qu'elle n'y apparaisse pas.

IV. Supprimer un utilisateur

SQL2

DROP USER ALAN_BRISSET_TEMP;

Réponse de la console :

Erreur : privilèges insuffisants.

L'utilisateur ALAN_BRISSET_TEMP ne bénéficie pas des privilèges suffisants pour supprimer un
compte, même s'il s'agit du sien. Il faut donc lui attribuer ce privilège.

SQL1

GRANT DROP USER TO ALAN_BRISSET_TEMP;

Réponse de la console :

Grant succeeded.

SQL2

DROP USER ALAN_BRISSET_TEMP;

Réponse de la console :

Cannot drop a user that is currently connected.

La console nous indique qu'il est impossible de supprimer un utilisateur qui est connecté en
même temps. Un utilisateur ne peut donc se supprimer lui-même. On se déconnecte donc de
ALAN_BRISSET_TEMP, et on réalise la suppression de son compte depuis le compte
ALAN_BRISSET.

SQL1

DROP USER ALAN_BRISSET_TEMP;

Réponse de la console :

CASCADE must be specified to drop 'ALAN_BRISSET_TEMP'.

Cela signifie qu'il faut rajouter l'attribut CASCADE à la fin de la commande, afin de supprimer
toutes les références liées au compte ALAN_BRISSET_TEMP.

SQL1

DROP USER ALAN_BRISSET_TEMP CASCADE;

Réponse de la console :

Used dropped.

L'utilisateur ALAN_BRISSET_TEMP a bien été supprimé.

V. Utilisateurs, privilèges et rôles

SQL1

CREATE USER ALAN_BRISSET_TEMP
IDENTIFIED BY temp
DEFAULT TABLESPACE users
QUOTA 1M ON USERS;

Réponse de la console :

User created.

Le compte ALAN_BRISSET crée alors le rôle ROLE_UTILISATEUR2, qui va permettre de
rassembler les privilèges objets et systèmes dont va avoir besoin le compte
ALAN_BRISSET_TEMP.

SQL1

CREATE ROLE ROLE_UTILISATEUR2;
GRANT CREATE SESSION TO ROLE_UTILISATEUR2;
GRANT SELECT ON PROPRIETAIRE TO ROLE_UTILISATEUR2;
GRANT UPDATE (ADRESSE, VILLE, CODPOSTAL, TEL_PORTABLE) ON PROPRIETAIRE TO
ROLE_UTILISATEUR2;
GRANT DELETE ON PROPRIETAIRE TO ROLE_UTILISATEUR2;
GRANT CREATE TABLE TO ROLE_UTILISATEUR2;
GRANT EXECUTE ON listerMesTables TO ROLE_UTILISATEUR2;

Réponse de la console :

Role created.
Grant succeeded.
Grant succeeded.
Grant succeeded.
Grant succeeded.
Grant succeeded.
Grant succeeded.

Le compte ALAN_BRISSET attribue alors le rôle ROLE_UTILISATEUR2 au compte
ALAN_BRISSET_TEMP.

SQL1

GRANT ROLE_UTILISATEUR2 TO ALAN_BRISSET_TEMP;

Réponse de la console :

Grant succeeded.

L'utilisateur ALAN_BRISSET_TEMP bénéficie désormais des privilèges accordés au rôle
ROLE_UTILISATEUR2.

Afin que l’utilisateur créé n’indique pas systématiquement le nom du schéma auquel appartient
les objets utilisés dans les ordres SQL, il faut écrire la commande suivante :

SQL1

CREATE SYNONYM listerMesTables2 for listerMesTables;

Réponse de la console :

Synonym created.

On vérifie la solution en utilisant le synonyme avec le compte ALAN_BRISSET_TEMP.

SQL2

SELECT * FROM TABLE (ALAN_BRISSET.listerMesTables2);

Réponse de la console :

BATEAU_PASSAGE
BATEAU_RESIDENT
CLIENT
COMMANDE
EMPLACEMENT
EMPLACEMENT_LIBRE
MODELE
PORT
PRODUIT
PROPRIETAIRE
SORTIE
TYPE_EMPLACEMENT

Le synonyme marche bien.

Utilisateurs, privilèges et rôles : métabase

SQL1

SELECT USERNAME, GRANTED_ROLE, ADMIN_OPTION, DEFAULT_ROLE
FROM USER_ROLE_PRIVS;

Réponse de la console :

USERNAME

GRANTED_ROLE

AMN

DEF

ALAN_BRISSET

DBA

NO

YES

ALAN_BRISSET

ROLE_UTILISATEUR2

YES

YES

SQL2

SELECT USERNAME, GRANTED_ROLE, ADMIN_OPTION, DEFAULT_ROLE
FROM USER_ROLE_PRIVS;

Réponse de la console :
USERNAME

GRANTED_ROLE

AMN

DEF

ALAN_BRISSET_TEMP

ROLE_UTILISATEUR2

NO

YES

On constate que le compte ALAN_BRISSET bénéficie d'un accès au DBA, afin de pouvoir
gérer l'attribution des privilèges, et est administrateur du ROLE_UTILISATEUR2 qu'il a créé.
Le compte ALAN_BRISSET n'a pas accès au DBA, et n'est qu'utilisateur du
ROLE_UTILISATEUR2.

Voyons maintenant les privilèges objets du compte ALAN_BRISSET_TEMP.

SQL2

SELECT TABLE_NAME, COLUMN_NAME, PRIVILEGE, GRANTABLE
FROM ROLE_TAB_PRIVS
ORDER BY 1, 3;

Réponse de la console : NON à chaque table/colonne/fonction.

L'utilisateur ALAN_BRISSET_TEMP n'est administrateur d'aucun privilège objet.

Maintenant, voyons ses privilèges système.

SQL2

SELECT ROLE, PRIVILEGE, ADMIN_OPTION
FROM ROLE_SYS_PRIVS;

Réponse de la console :

ROLE

PRIVILEGE

ADM

ROLE_UTILISATEUR2

CREATE TABLE

NO

ROLE_UTILISATEUR2

CREATE SESSION

NO

L'utilisateur ALAN_BRISSET_TEMP n'est qu'utilisateur de ces privilèges : il ne peut effectuer
aucune action dessus.


Aperçu du document IUTLR-INFO-BD2-CR-TP6-UserRolePrivs-BRISSET-Alan-1415.pdf - page 1/29
 
IUTLR-INFO-BD2-CR-TP6-UserRolePrivs-BRISSET-Alan-1415.pdf - page 2/29
IUTLR-INFO-BD2-CR-TP6-UserRolePrivs-BRISSET-Alan-1415.pdf - page 3/29
IUTLR-INFO-BD2-CR-TP6-UserRolePrivs-BRISSET-Alan-1415.pdf - page 4/29
IUTLR-INFO-BD2-CR-TP6-UserRolePrivs-BRISSET-Alan-1415.pdf - page 5/29
IUTLR-INFO-BD2-CR-TP6-UserRolePrivs-BRISSET-Alan-1415.pdf - page 6/29
 




Télécharger le fichier (PDF)


IUTLR-INFO-BD2-CR-TP6-UserRolePrivs-BRISSET-Alan-1415.pdf (PDF, 169 Ko)

Télécharger
Formats alternatifs: ZIP



Documents similaires


iutlr info bd2 cr tp6 userroleprivs brisset alan 1415
bd c
database 2014 final fr corrige
doc ftp
capes info qcm 2009 www tunisie etudes info
capes info qcm 2009 www tunisie etudes info

Sur le même sujet..