Tape les ordres sans regarder, puis Entrée (casse ignorée, ; final facultatif). Une variante valide peut être refusée, ouvre alors la réponse. Pour les autres questions, réponds avant d’ouvrir : c’est l’effort de rappel qui fait retenir.
Rappel actif
Restitue de mémoire, sans support.
Cite les sept attributs d’un compte utilisateur Oracle. Lesquels sont obligatoires à la création, et lequel ne peut plus jamais changer ?
Nom unique, méthode d’authentification, tablespace par défaut, quotas, tablespace temporaire, profil, statut (verrouillé, expiré).
Obligatoires : le nom et la méthode d’authentification, les autres ont des valeurs par défaut. Le nom ne peut plus être modifié après création. Consultation :
DBA_USERS.Donne les sept paramètres de mot de passe d’un profil et ce que chacun limite.
Paramètre Limite FAILED_LOGIN_ATTEMPTSéchecs avant verrouillage PASSWORD_LOCK_TIMEjours de verrouillage après ces échecs PASSWORD_LIFE_TIMEjours avant expiration PASSWORD_GRACE_TIMEjours de grâce pour changer après expiration PASSWORD_REUSE_TIMEjours avant de pouvoir réutiliser un mot de passe PASSWORD_REUSE_MAXnombre de réutilisations du mot de passe PASSWORD_VERIFY_FUNCTIONfonction PL/SQL de complexité (propriété de SYS, renvoie un booléen) Donne les cinq paramètres de ressources d’un profil, avec leur unité. Quelle condition doit être remplie pour qu’ils s’appliquent ?
Paramètre Unité SESSIONS_PER_USERnombre de sessions CPU_PER_SESSIONcentisecondes CPU_PER_CALLcentisecondes CONNECT_TIMEminutes IDLE_TIMEminutes Le paramètre d’initialisation
RESOURCE_LIMIT = TRUE(défautFALSE). Les limites de mot de passe, elles, s’appliquent toujours.Attention : le cours indique des secondes pour
CONNECT_TIMEetIDLE_TIME. La documentation Oracle les définit en minutes :CONNECT_TIME 480vaut 8 heures, pas 8 minutes.
Tape la commande
Écris la commande exacte, puis Entrée pour vérifier.
Autorise l’utilisateur
HRà se connecter à la base.GRANT CREATE SESSION TO HR;Sans ce privilège système, un compte existe mais ne peut pas ouvrir de session.
Donne à
SCOTTle droit de lire la tableEMPLOYEESet de modifier uniquement sa colonneSALARY.GRANT SELECT, UPDATE(SALARY) ON EMPLOYEES TO SCOTT;Retire à
SCOTTces deux privilèges.REVOKE SELECT, UPDATE(SALARY) ON EMPLOYEES FROM SCOTT;REVOKE ... FROM, pasTO.Donne
CREATE SESSIONàHRen l’autorisant à le redonner à d’autres.GRANT CREATE SESSION TO HR WITH ADMIN OPTION;Privilège système, donc
ADMIN OPTION.Donne à
STOCKle droit de lireEMPLOYEESen l’autorisant à le redonner à d’autres.GRANT SELECT ON EMPLOYEES TO STOCK WITH GRANT OPTION;Privilège objet, donc
GRANT OPTION.Connecte-toi en tant que SYSDBA avec l’authentification par le système d’exploitation (sans nom ni mot de passe).
CONNECT / AS SYSDBALe
/seul signifie : l’OS a déjà identifié l’utilisateur. Avec un fichier de mots de passe :CONNECT sys/motdepasse AS SYSDBA.Crée un utilisateur
jdupontauthentifié par un service externe (OS, Kerberos…), sans mot de passe Oracle.CREATE USER jdupont IDENTIFIED EXTERNALLY;Pour l’authentification par l’OS, le nom doit porter le préfixe
OS_AUTHENT_PREFIX(ops$par défaut) :ops$jdupont.
Écris-le
Rédige la requête, la configuration ou le code, puis compare avec la réponse.
Crée l’utilisateur
scott(mot de passepwdscott), tablespace par défautusers, quota illimité surusers, obligé de changer son mot de passe à la première connexion.CREATE USER scott IDENTIFIED BY pwdscott DEFAULT TABLESPACE users QUOTA UNLIMITED ON users PASSWORD EXPIRE;Il ne peut pas encore se connecter : il manque
GRANT CREATE SESSION TO scott;.Crée un profil
dev_profile: 2 sessions simultanées maximum, déconnexion après 60 minutes d’inactivité, verrouillage après 3 échecs pendant 1 jour, mot de passe valable 90 jours. Puis affecte-le àscott.CREATE PROFILE dev_profile LIMIT SESSIONS_PER_USER 2 IDLE_TIME 60 FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1 PASSWORD_LIFE_TIME 90; ALTER USER scott PROFILE dev_profile;SESSIONS_PER_USERetIDLE_TIMEne s’appliquent que siRESOURCE_LIMIT = TRUE.Crée un rôle
HR_CLERKqui peut lire et modifierEMPLOYEES, et un rôleHR_MGRqui peut y insérer et supprimer. DonneHR_CLERKà Rachel et David,HR_MGRà Jenny et David.CREATE ROLE HR_CLERK; CREATE ROLE HR_MGR; GRANT SELECT, UPDATE ON EMPLOYEES TO HR_CLERK; GRANT INSERT, DELETE ON EMPLOYEES TO HR_MGR; GRANT HR_CLERK TO rachel, david; GRANT HR_MGR TO jenny, david;David cumule les privilèges des deux rôles.
Calcule
Pose le calcul et donne le résultat, puis Entrée pour vérifier.
Un profil a
CPU_PER_CALL 3000. Combien de secondes de CPU une seule requête peut-elle consommer avant d’être arrêtée ?Centisecondes : 3000 / 100 = 30 secondes. Seule la requête est arrêtée, la session continue (contrairement à
CPU_PER_SESSION).
Distingue
Deux notions proches : dis ce qui les sépare vraiment.
Privilège système et privilège objet : définition, exemple, et qui peut accorder chacun ?
- Système : droit d’effectuer un type d’opération dans la base (
CREATE SESSION,CREATE TABLESPACE,SELECT ANY TABLE). Accordé par l’administrateur, ou par quelqu’un qui l’a reçuWITH ADMIN OPTION. - Objet : droit d’agir sur un objet précis (
SELECT ON EMPLOYEES,EXECUTE ON ma_procedure). Accordé par le propriétaire de l’objet, l’administrateur, ou quelqu’un qui l’a reçuWITH GRANT OPTION.
- Système : droit d’effectuer un type d’opération dans la base (
CREATE TABLEetCREATE ANY TABLE: quelle différence, et lequel est dangereux à distribuer ?CREATE TABLE: créer des tables dans son propre schéma (avec un quota sur le tablespace).CREATE ANY TABLE: créer des tables dans n’importe quel schéma. Les privilègesANYportent sur toute la base : ils sont réservés aux administrateurs.WITH ADMIN OPTIONetWITH GRANT OPTION: à quel type de privilège s’applique chacun, et que se passe-t-il pour les tiers lors d’unREVOKE?WITH ADMIN OPTIONWITH GRANT OPTIONPrivilèges système (et rôles) objet REVOKEsur l’intermédiairepas transmis : ceux qui ont reçu de lui gardent le privilège transmis en cascade : ceux qui ont reçu de lui le perdent Moyen mnémotechnique : objet, cascade.
Authentification par fichier de mots de passe et par système d’exploitation : comment se connecte-t-on dans chaque cas, et à quoi servent-elles ?
Les deux servent aux connexions privilégiées (SYSDBA, SYSOPER), possibles même base fermée, par exemple pour la démarrer.
- OS :
CONNECT / AS SYSDBA, pas de mot de passe. Être membre du bon groupe système suffit. - Fichier de mots de passe :
CONNECT user/pwd AS SYSDBA. Le mot de passe est vérifié dans un fichier externe, lisible par l’instance sans ouvrir la base. Utile pour administrer à distance.
(Le résumé du cours attribue la copie des mots de passe dans un fichier externe à la ligne « Operating System » : cette description est celle du fichier de mots de passe.)
- OS :
Rôle et profil : les deux s’affectent à un utilisateur. Qu’est-ce que chacun contrôle, et combien peut-on en avoir à la fois ?
- Rôle : un ensemble de privilèges (ce que l’utilisateur a le droit de faire). Un utilisateur peut en avoir plusieurs.
- Profil : des limites (mots de passe, consommation de ressources). Un seul à la fois.
Explique pourquoi
Le mécanisme derrière la règle.
Pourquoi un
REVOKEavecGRANT OPTIONse propage-t-il en cascade, alors qu’avecADMIN OPTIONil ne se propage pas ?Un privilège objet est lié à son propriétaire : Oracle garde la trace de qui l’a accordé à qui. Si l’intermédiaire perd le droit, ce qu’il a distribué perd sa source et tombe avec. Un privilège système n’est pas lié à un objet ni à une chaîne d’attribution : une fois accordé, il appartient au bénéficiaire, quel que soit le sort de celui qui l’a donné.
Pourquoi les rôles rendent-ils la gestion des droits « dynamique » ? Illustre avec 50 comptables.
Sans rôle : 50
GRANTidentiques, et 50 de plus à chaque changement. Avec un rôleCOMPTABLE: on modifie le rôle une fois, et les 50 utilisateurs ont immédiatement les nouveaux privilèges. On peut aussi désactiver temporairement un rôle (avec un mot de passe, il faut le fournir pour l’activer).Pourquoi faut-il
QUOTA ... ON usersen plus deCREATE TABLEpour qu’un utilisateur crée effectivement des tables ?CREATE TABLEdonne le droit de créer, le quota donne l’espace pour stocker. Sans quota sur le tablespace, la création ou la première insertion échoue faute d’espace attribué. Le cours précise d’ailleurs « avec attribution d’un quota sur le tablespace ».
Cas pratique
Choisis et justifie avec les critères du cours.
Un stagiaire doit pouvoir consulter la table
VENTESdeCOMMERCE, sans rien modifier et sans pouvoir donner ce droit à quelqu’un d’autre. Pendant 3 mois, avec un mot de passe à changer à la première connexion. Liste les ordres.CREATE USER stagiaire IDENTIFIED BY temp123 PASSWORD EXPIRE; GRANT CREATE SESSION TO stagiaire; GRANT SELECT ON COMMERCE.VENTES TO stagiaire; -- sans GRANT OPTION -- après 3 mois ALTER USER stagiaire ACCOUNT LOCK;Un profil avec
PASSWORD_LIFE_TIME 90peut aussi faire expirer le mot de passe automatiquement.GRANT SELECT ON EMPLOYEES TO STOCK WITH GRANT OPTION;puis STOCK donneSELECTàUSER1. Ensuite, on retire le droit à STOCK. Que peut encore faire USER1 ? Et si c’étaitCREATE SESSIONdonné à HRWITH ADMIN OPTION, puis par HR à SCOTT ?- Privilège objet : USER1 perd
SELECT ON EMPLOYEES, leREVOKEest transmis en cascade. - Privilège système : SCOTT garde
CREATE SESSION, leREVOKEsur HR n’est pas transmis.
Conséquence pratique : avec
ADMIN OPTION, retirer le droit à l’intermédiaire ne suffit pas, il faut aussi chercher à qui il l’a donné.- Privilège objet : USER1 perd
Un développeur demande le rôle DBA « pour aller plus vite ». Que réponds-tu, et que proposes-tu à la place ?
DBA contient la plupart des privilèges système : il ne doit pas être accordé à un non-administrateur. Un développeur qui peut tout supprimer est un risque, même de bonne foi.
À la place : un rôle sur mesure (par exemple
CREATE SESSION,CREATE TABLE,CREATE VIEW,CREATE SEQUENCE,CREATE PROCEDURE) et un quota sur son tablespace, ouRESOURCEsi les privilèges qu’il contient suffisent.
Trouve l'erreur
Chaque affirmation contient au moins une faute.
«
CREATE USER ali IDENTIFIED BY pwd;Voilà, Ali peut se connecter. »Le compte existe, mais Ali n’a pas
CREATE SESSION: sa connexion est refusée. Il fautGRANT CREATE SESSION TO ali;.«
GRANT CREATE TABLE TO HR WITH GRANT OPTION;»CREATE TABLEest un privilège système : la délégation se fait avecWITH ADMIN OPTION.WITH GRANT OPTIONest réservé aux privilèges objet.« J’ai mis
CONNECT_TIME 480dans le profil pour limiter les sessions à 8 minutes, etCPU_PER_SESSION 10000pour 10 secondes de CPU. »Deux erreurs d’unité :
CONNECT_TIMEest en minutes : 480 vaut 8 heures. (Le cours parle de secondes, la documentation Oracle de minutes.)CPU_PER_SESSIONest en centisecondes : 10000 vaut 100 secondes.
Et rien ne s’applique si
RESOURCE_LIMITest resté àFALSE.« Le rôle CONNECT, c’est juste le droit de se connecter : je le donne à tout le monde sans réfléchir. »
Dans la version du cours, CONNECT contient aussi
CREATE TABLE,CREATE VIEW,CREATE SYNONYM,CREATE SEQUENCE,CREATE DATABASE LINK… Donc bien plus que se connecter.À noter : depuis Oracle 10gR2, CONNECT ne contient plus que
CREATE SESSION. La liste du cours est celle des versions antérieures. Dans tous les cas, mieux vaut vérifier avecDBA_SYS_PRIVSqu’avoir une certitude.
Et si...
Prévois la conséquence.
Et si un profil a
FAILED_LOGIN_ATTEMPTS 3etPASSWORD_LOCK_TIME 1, et qu’un attaquant tente 3 mots de passe faux sur le compte de Sara ?Le compte de Sara est verrouillé pendant 1 jour, même pour elle avec le bon mot de passe. Protection contre la force brute, mais aussi un moyen de bloquer un utilisateur légitime (déni de service). Le DBA peut déverrouiller avec
ALTER USER sara ACCOUNT UNLOCK;.Et si on retire un privilège d’un rôle déjà accordé à 30 utilisateurs connectés ?
Les 30 utilisateurs perdent ce privilège, sans
REVOKEindividuel : c’est le côté dynamique des rôles, qui joue dans les deux sens.