le sql de a à z - la gestion des privilèges

10
16/2/2015 Le SQL de A à Z la gestion des privilèges http://sqlpro.developpez.com/cours/sqlaz/dcl/ 1/10 Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter Études Emploi Club Contacts SGBD 4D Access Big Data DB2 Firebird InterBase MySQL NoSQL PostgreSQL Oracle Sybase SQLServer Accueil SGBD Forums SGBD FAQs SGBD Tutoriels SGBD SQL Outils SGBD Livres SGBD et SQL La gestion des privilèges On emploie à tort le mot "droit" pour expliquer, dans SQL, le sous ensemble DCL dit "data control language" qui s'occupe de la gestion des privilèges. Cette partie de SQL 2 s'occupe de contrôler quel utilisateur peut ou ne peut pas utiliser tel ou tel ordre SQL sur tel ou tel objet et en cette matière il n'y a pas que des droits, mais aussi des "usages" ! Article lu 16956 fois. L'auteur SQLPro L'article Publié le 12 novembre 2003 Public visé : débutant Liens sociaux 1. La notion d'utilisateurLa notion d'utilisateur possède une lacune importante dans SQL car elle fait l'impasse sur la façon dont on créé un utilisateur... NOTA : SQL 2 a prévu des règles d'accès spécifiques pour les différentes familles d'ordre SQL. Ainsi pour la création d'un schéma (une base de donnée en fait) ou d'un catalogue (un ensemble de bases de données), il laisse la règle à l'appréciation de l'éditeur du SGBDR. En revanche pour les ordres CREATE, ALTER et DROP, l'utilisateur courant doit être le même que l'utilisateur propriétaire (auteur) du schéma modifié. Rapellons que la création d'un utilisateur se fait au moment de la création du schéma. Par défaut ce dernier est le créateur des objets. Souvent dans les implémentation commerciales, on trouve un pseudo ordre SQL du genre CREATE USER nomUtilisateur, ou encore une procédure stockée permettant de définir un nouvel utilisateur. Ainsi, pour MS SQL Server : Exemple 1 Sélectionnez sp_adduser 'nomConnexion', 'nomNouvelUtilisateur' Permet d'ajouter un nouvel utilisateur affecté à la connexion donnée. La norme SQL2 propose trois fonctions pour connaître l'utilisateur (c'est à dire celui qui se connecte au serveur) et l'auteur, c'est à dire le créateur des objets : SYSTEM_USER nom de connexion SESSION_USER nom du créateur CURRENT_USER utilisateur courant Ainsi, par défaut, SQL Server utilise les noms suivants : Exemple 2 Sélectionnez SELECT SYSTEM_USER, SESSION_USER, CURRENT_USER Sélectionnez SYSTEM_USER SESSION_USER CURRENT_USER ‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐ ‐‐‐‐‐‐‐‐‐‐‐‐ sa dbo dbo Notons en marge le super utilisateur SQL PUBLIC qui concerne tous les utilisateurs passés et à venir. 2. Octroyer des privilègesLes privilèges sont, pour un ou plusieurs utilisateurs la possibilité d'utiliser certains objets et parmi ces objets, certains ordres SQL. 2.1. Les différents privilègesVoici une liste des différents privilèges que SQL permet et les objets sur lesquels ces privilèges portent : Accueil ALM Java .NET Dév. Web EDI Programmation SGBD Office Solutions d'entreprise Applications Mobiles Systèmes

Upload: tomecruzz

Post on 16-Nov-2015

6 views

Category:

Documents


2 download

DESCRIPTION

Le SQL de A à Z - la gestion des privilèges.pdf

TRANSCRIPT

  • 16/2/2015 LeSQLdeAZlagestiondesprivilges

    http://sqlpro.developpez.com/cours/sqlaz/dcl/ 1/10

    Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter tudes Emploi Club Contacts

    SGBD 4D Access BigData DB2 Firebird InterBase MySQL NoSQL PostgreSQL Oracle Sybase SQLServer

    AccueilSGBD ForumsSGBD FAQsSGBD TutorielsSGBD SQL OutilsSGBD LivresSGBDetSQL

    Lagestiondesprivilges

    Onemploietortlemot"droit"pourexpliquer,dansSQL,lesousensembleDCLdit"datacontrollanguage"quis'occupedelagestiondesprivilges.CettepartiedeSQL2s'occupedecontrlerquelutilisateurpeutounepeutpasutiliserteloutelordreSQLsurteloutelobjetetencettematireiln'yapasquedesdroits,maisaussides"usages"!

    Articlelu16956fois.

    L'auteur

    SQLPro

    L'article

    Publile12novembre2003

    Publicvis:dbutant

    Lienssociaux

    1.Lanotiond'utilisateur

    Lanotiond'utilisateurpossdeunelacuneimportantedansSQLcarellefaitl'impassesurlafaondontoncrunutilisateur...

    NOTA:SQL2aprvudesrglesd'accsspcifiquespourlesdiffrentesfamillesd'ordreSQL.Ainsipourlacrationd'unschma(unebasededonneenfait)oud'uncatalogue(unensembledebasesdedonnes),illaisselarglel'apprciationdel'diteurduSGBDR.EnrevanchepourlesordresCREATE,ALTERetDROP,l'utilisateurcourantdoittrelemmequel'utilisateurpropritaire(auteur)duschmamodifi.

    Rapellonsquelacrationd'unutilisateursefaitaumomentdelacrationduschma.Pardfautcedernierestlecrateurdesobjets.

    Souventdanslesimplmentationcommerciales,ontrouveunpseudoordreSQLdugenreCREATEUSERnomUtilisateur,ouencoreuneprocdurestockepermettantdedfinirunnouvelutilisateur.

    Ainsi,pourMSSQLServer:

    Exemple1

    Slectionnez

    sp_adduser'nomConnexion','nomNouvelUtilisateur'

    Permetd'ajouterunnouvelutilisateuraffectlaconnexiondonne.

    LanormeSQL2proposetroisfonctionspourconnatrel'utilisateur(c'estdireceluiquiseconnecteauserveur)etl'auteur,c'estdirelecrateurdesobjets:

    SYSTEM_USER nomdeconnexion

    SESSION_USER nomducrateur

    CURRENT_USER utilisateurcourant

    Ainsi,pardfaut,SQLServerutiliselesnomssuivants:

    Exemple2

    Slectionnez

    SELECTSYSTEM_USER,SESSION_USER,CURRENT_USER

    Slectionnez

    SYSTEM_USERSESSION_USERCURRENT_USERsadbodbo

    NotonsenmargelesuperutilisateurSQLPUBLICquiconcernetouslesutilisateurspasssetvenir.

    2.Octroyerdesprivilges

    Lesprivilgessont,pourunouplusieursutilisateurslapossibilitd'utilisercertainsobjetsetparmicesobjets,certainsordresSQL.

    2.1.Lesdiffrentsprivilges

    VoiciunelistedesdiffrentsprivilgesqueSQLpermetetlesobjetssurlesquelscesprivilgesportent:

    Accueil ALM Java .NET Dv.Web EDI Programmation SGBD Office Solutionsd'entreprise Applications Mobiles Systmes

    http://etudes.developpez.com/http://www.viadeo.com/shareit/share/?url=&Title=La+gestion+des+privil%C3%A8geshttp://dotnet.developpez.com/http://mysql.developpez.com/http://www.developpez.com/newsletter/http://alm.developpez.com/http://blog.developpez.com/http://applications.developpez.com/http://big-data.developpez.com/http://projets.developpez.com/http://sybase.developpez.com/http://www.developpez.net/forums/u3170/sqlpro/http://sqlpro.developpez.com/http://mobiles.developpez.com/http://java.developpez.com/http://general.developpez.com/faq/http://club.developpez.com/http://edi.developpez.com/http://www.developpez.net/forums/f4/bases-donnees/http://www.facebook.com/sharer.php?u=http://sgbd.developpez.com/http://magazine.developpez.com/http://access.developpez.com/http://sgbd.developpez.com/faq/http://interbase.developpez.com/https://plus.google.com/share?url=http://sqlpro.developpez.com/CV_FB/CVFB_V_2003.htmlhttp://4d.developpez.com/http://sgbd.developpez.com/http://firebird.developpez.com/http://programmation.developpez.com/http://www.developpez.com/http://sgbd.developpez.com/http://db2.developpez.com/http://web.developpez.com/http://www.facebook.com/pages/SGBDSQL/109541235747940http://sqlserver.developpez.com/http://nosql.developpez.com/http://www.developpez.net/forums/http://sgbd.developpez.com/index/rsshttp://solutions-entreprise.developpez.com/http://systeme.developpez.com/http://sgbd.developpez.com/telecharger/index/categorie/579/Outils-SGBDhttp://sgbd.developpez.com/cours/http://sql.developpez.com/http://sgbd.developpez.com/livres/http://general.developpez.com/cours/http://twitter.com/timeline/home?status=http://office.developpez.com/http://www.developpez.com/http://postgresql.developpez.com/http://oracle.developpez.com/http://club.developpez.com/contacts/http://emploi.developpez.com/http://chat.developpez.com/http://twitter.com/SGBD_SQL_DVP

  • 16/2/2015 LeSQLdeAZlagestiondesprivilges

    http://sqlpro.developpez.com/cours/sqlaz/dcl/ 2/10

    USAGE domaine,jeudecaractres,collation,translation

    SELECT,INSERT,UPDATE,REFERENCES nomducrateur

    CURRENT_USER table,vue,colonne(s)

    Notonsqu'iln'estpaspossiblededfinirdesdroitssurlacration,lamodificationoulasuppressiondeslmentsdeschema(basededonnes),cecitantdfinitlorsdelacrationduschema.

    2.2.Attributiondeprivilges

    C'estl'ordreSQLGRANTquipermetd'attribuerunprivilgediffrentsutilisateurssurdiffrentsobjets.

    Voicilasyntaxedel'ordreSQLGRANT:

    Slectionnez

    GRANTTO[{,}...][WITHGRANTOPTION]

    Slectionnez

    ::=[{,}...]

    Slectionnez

    ::=ALLPRIVILEGESON||

    Slectionnez

    ::=USAGEON::=DOMAIN|COLLATION|CHARACTERSET|TRANSLATION

    Slectionnez

    ::=

  • 16/2/2015 LeSQLdeAZlagestiondesprivilges

    http://sqlpro.developpez.com/cours/sqlaz/dcl/ 3/10

    PUBLIC|

    LaclauseWITHGRANTOPTION,estutilisepourautoriserlatransmissiondesdroits.LaclauseALLPRIVILEGESn'ad'intrtquedanslecadredelatransmissiondesdroits.

    Voicimaintenantunebatteried'exemplesafindemieuxcomprendrecommentutilisercetordre...Pournosexemples,nousavonsconsidrquelesutilisateursDUPONT,DURAND,DUBOIS,DUVAL,DULACetDUFOURtaitcrdanslabasededonnes.Celuiquilancelesordres(saufindicationcontraire)estl'utilisateurDUHAMEL.

    Exemple3

    Slectionnez

    GRANTSELECTONT_CHAMBRETODUBOIS

    AutoriseDUBOISlancerdesordresSQLSELECTsurlatableT_CHAMBRE.Notezl'absencedumotTABLE.

    Exemple4

    Slectionnez

    GRANTINSERT,UPDATE,DELETEONTABLET_CHAMBRETODUVAL,DUBOIS

    AutoriseDUVALetDUBOISmodifierlesdonnespartouslesordresSQLdemisejour(INSERT,UPDATE,DELETE)maispasleslire!

    Exemple5

    Slectionnez

    GRANTSELECTONTABLET_CMAMBRETODUFOURWITHGRANTOPTION

    AutoriseDUFOURlancerdesordresSQLSELECTsurlatableT_CHAMBREmaisaussitransmettretoutautreutilisateurlesdroitsqu'ilaacquisdanscetordre.

    Exemple6

    Slectionnez

    GRANTSELECT,INSERT,DELETEONTABLET_CHAMBRETODURANDWITHGRANTOPTION

    AutoriseDURANDlancerdesordresSQLSELECT,INSERT,DELETEsurlatableT_CHAMBRE.

    Exemple7

    Slectionnez

    GRANTSELECT,UPDATEONTABLET_CHAMBRETOPUBLIC

    AutorisetouslesutilisateursprsentetvenirlancerdesordresSQLSELECTetUPDATEsurlatableT_CHAMBRE.

    Exemple8:DURANDlancel'ordresuivant:

    Slectionnez

    GRANTALLPRIVILEGESONTABLET_CHAMBRETODUBOIS

    CequiautoriseDUBOISlancersurlatableT_CHAMBRE,lesmmesordresSQL,queceuxautorisDURAND(SELECT,INSERT,DELETE).

    Onparlealorsd'hritagededroitsc'estdirequel'utilisateurdotsdecesdroitspeutnouveaulescderunouplusieursautresutilisateurs.

    Exemple9:DURANDlancel'ordresuivant:

    Slectionnez

    GRANTUPDATEONTABLET_CHAMBRETODUBOIS

    Cetordrevaprovoquuneerreur,carDURANDn'estpasautorislancerdesordresUPDATEsurlatableT_CHAMBREetnepeutdonctransmettreundroitqu'iln'apas!

    2.3.Gestionfinedesprivilges

    Estilpossibledegrerdesprivilgesplusfinsquesurl'intgralitdelatableoudevue?Enparticulier,peutongrerdesprivilgesauniveaudecertainescolonnesd'unetable?

  • 16/2/2015 LeSQLdeAZlagestiondesprivilges

    http://sqlpro.developpez.com/cours/sqlaz/dcl/ 4/10

    LarponseestOUI,maisilfaututiliserunpeud'astuce...

    2.3.1.PrivilgesINSERTetUPDATEsurcolonne

    Onpeutemployerl'ordreGRANTpourcefaire:

    Exemple10

    Slectionnez

    GRANTUPDATE(CHB_POSTE_TEL,CHB_COUCHAGE)ONTABLET_CHAMBRETODULAC

    CetordrepermetDULACdemodifieruniquementlescolonnes"postetlphonique"et"nombredeplacedecouchage"delatableT_CHAMBRE.

    Pluscurieux,onpeutdfinirlescolonnesutilisablespourunordred'insertionpourunutilisateur:

    Exemple11

    Slectionnez

    GRANTINSERT(CHB_NUMERO,CHB_ETAGE,CHB_BAIN,CHB_DOUCHE,CHB_WC)ONTABLET_CHAMBRETODULAC

    CetordrepermetDULACd'insrerunenouvellelignedanslatable,uniquementenspcifiantlescolonneslistes.Leproblmeestquedanscettelistenefigurepaslacolonneclef...Autrementdit,DULACnepourrajamaisrieninsrerdutout,saufsilaclefestcalculeparundclencheuravantinsertion.

    NOTA:danslecasdel'attributiondeprivilgesd'insertionsurcolonne,ilestindispensabledefairefigurertouteslescolonnesNOTNULLn'ayantniclausedevaleurpardfaut,niremplissageparuntriggeravantinsertion.Sanscelacetteautorisationestillusoire!

    2.3.2.PrivilgesSELECTsurcolonne

    Cetypedeprivilgen'estpasgrdirectementparunordreSQL.Eneffet,iln'estpaspossibled'crire:

    Exemple12

    Slectionnez

    GRANTSELECT(CHB_NUMERO,CHB_ETAGE,CHB_BAIN,CHB_DOUCHE,CHB_WC)ONTABLET_CHAMBRETODULAC

    Cetordren'estpaslgalauniveaudeSQL.

    MaisunordreGRANTpeutportersurunevue!Nousvoiladoncsauv:crerunevuepourgrerlesprivilgesdeslectiondel'utilisateurDULAC..

    Exemple13

    Slectionnez

    CREATEVIEWV_CHAMBREASSELECTCHB_NUMERO,CHB_ETAGE,CHB_BAIN,CHB_DOUCHE,CHB_WCFROMT_CHAMBRE

    Slectionnez

    GRANTSELECTONV_CHAMBRETODULAC

    Etletourestjou!

    2.4.Particularitdesprivilgesd'usage

    Maisquelestdoncl'intrtdegrerdesprivilgessurdesdomaines,descollations,destranslations,oudesjeuxdecaractres?

    NOTA:pourleslecteursquineseraientpasfamiliarissaveccesobjetsd'unebasededonnes,voicilesrfrences.Pourlesdomaines:

    leSQLdeAZ,1erepartie,6.6lesdomainesleSQLdeAZ,7emepartie,5.4Dfinirdesdomaines

    Pourlesjeuxdecaractres,collationsettranslations,lire:

    leSQLdeAZ,7emepartie,4Unequestiondecaractres

    Pourcomprendrel'intrtdesprivilgesd'usageintressonsnousaudomaineenrapellantqueledomaineestconstitud'untypededonnesassortiesd'autantderglesquel'onveut(contraintes)etmmeaucunesionledsire.Enoutre,ledomaineestutilisenremplacementd'untypededonneSQLbasique,partoutoonenabesoin,dansladfinitiondestables,commesdansl'utilisationdelafonctionCASTparexemple.Voicilacrationd'undomainepermettantdespcifierunpourcentage:

    Exemple14

    http://sqlpro.developpez.com/cours/sqlaz/fondements/#L6.6http://sqlpro.developpez.com/cours/sqlaz/ddl/#L4http://sqlpro.developpez.com/cours/sqlaz/ddl/#L5.4

  • 16/2/2015 LeSQLdeAZlagestiondesprivilges

    http://sqlpro.developpez.com/cours/sqlaz/dcl/ 5/10

    Slectionnez

    CREATEDOMAINDMN_POURCENTFLOATCHECK(VALUEBETWEEN0AND100)

    Leproblmersidedanslefaitqu'unevuepeutavoirtcreavecuntranstypagededomaine...

    Exemple15

    Slectionnez

    SELECTCHB_ID,CHB_COUCHAGE,CAST(100*(CHB_COUCHAGE/(SELECTSUM(CHB_COUCHAGE)FROMT_CHAMBRE))ASDMN_POURCENT)ASPOURCENT_OCCUPATIONFROMT_CHAMBRE

    Danscecasquevatilsepasserlorsdelasuppressiondudomaine?

    SilasuppressiondudomainesefaitaveclaclauseRESTRICT,lefaitquecettevueutiliseuntranstypageprovoquerauneerreuretinterdiralasuppressioneffectivedudomaine.

    Silasuppressiondudomainesefaitl'aidedelaclauseCASCADE,alorslavueestsupprime!

    C'estpourquoionauratoutintrtintroduiredesprivilgesd'usagepourlesdomaines,collations,translationsetjeuxdecaractresmaisdefaonparcimonieusescertainsutilisateurscapablesd'instancierdesvuesparexemple.Celapermettradelimiterlesdgats...

    Bienentenducequisepassedansnotreexempleaveclesdomainesestsimilaireacequipeutsepasseraveclescollations,translationsetjeuxdecaractres.

    2.5.Privilgesderfrence

    Lorsquel'oncredestablesenliaisonslesunesauxautres,onutilisetrssouventlemcanismed'intgritrfrentielafindegrerlesclefstrangres.

    Voyonscequisepassesi,dansnotrebaseexemple,nousattribuonslesdroitsainsi:

    Exemple16

    Slectionnez

    GRANTSELECT,INSERT,UPDATE,DELETEONTABLET_CHAMBRETODUMONT

    Slectionnez

    GRANTSELECT,INSERT,UPDATE,DELETEONTABLET_PLANNINGTODUMONT

    Slectionnez

    GRANTSELECT,INSERT,UPDATE,DELETEONTABLETJ_CHB_PLN_CLITODUMONT

    Dumontpourraslectionneretsupprimersansproblmesdanstouteslestables.IlpourramettrejourlesdonnesetinsrersansaucunproblmedansleslestablesT_CHAMBREetT_PLANNING.EnrevancheilseheurteraparfoisunrefusdelabasededonnespourlamisejourdelatabledejointureTJ_CHB_PLN_CLI.Pire,illuiseraimpossibled'insrerdesdonnesdanscettederniretable...Quelenestlaraison?

    Regardonscommenttcrecettetabledejointure:

    Slectionnez

    CREATETABLETJ_CHB_PLN_CLI(CHB_IDINTEGERNOTNULL,PLN_JOURDATEnotnull,CLI_IDINTEGERnotnull,CHB_PLN_CLI_NB_PERSSMALLINTnotnull,CHB_PLN_CLI_RESERVENUMERIC(1)notnulldefault0,CHB_PLN_CLI_OCCUPENUMERIC(1)notnulldefault1,CONSTRAINTPK_TJ_CHB_PLN_CLIPRIMARYKEY(CHB_ID,PLN_JOUR),CONSTRAINTFK_CHB_IDREFERENCEST_CHAMBRE(CHB_ID),CONSTRAINTFK_PLN_JOURREFERENCEST_PLANNING(PLN_JOUR),CONSTRAINTFK_CLI_IDREFERENCEST_CLIENTCLI_ID))

    Elleutilise3tablesenrfrence:T_CHAMBRE,T_PLANNING,T_CLIENT.OrnotreutilisateurDUMONTn'aaucunprivilgesurlatableT_CLIENT.Illuiseradoncimpossiblelorsdel'insertion,commelorsdelamisejourdeprciserunevaleurpourcettecolonnesansqu'ilsevoitautomatiquementinfligunrefusduserveur.

    Ordonc,pourpouvoirdfinirunevaleurpourlacolonneCLI_IDlorsdel'excutiondesordresUPDATEetINSERT,notreutilisateurDUMONT,doitavoirunprivilgesupplmentairedfinitcommesuit:

    Exemple17

    http://sqlpro.developpez.com/cours/bddexemple/

  • 16/2/2015 LeSQLdeAZlagestiondesprivilges

    http://sqlpro.developpez.com/cours/sqlaz/dcl/ 6/10

    Slectionnez

    GRANTREFERENCES(CLI_ID)ONTABLET_CLIENTTODUMONT

    NOTA:leprivilgederfrenceneportepasexclusivementsurlescontraintesd'intgritmaissurtoutecontraintefaisantrfrenceunecolonned'unetableexterne.

    3.Rvocationdesprivilges

    L'ordreSQLREVOKEpermetdervoquer,c'estdire"retirer"unprivilge.Sasyntaxeestlasuivante:

    Slectionnez

    REVOKE[GRANTOPTIONFOR]FROM[{,}...][RESTRICT|CASCADE]

    Slectionnez

    ::=[{,}...]

    Slectionnez

    ::=ALLPRIVILEGESON||

    Slectionnez

    ::=USAGEON::=DOMAIN|COLLATION|CHARACTERSET|TRANSLATION

    Slectionnez

    ::=PUBLIC|

    Lagrandediffrencersideenfaitdansl'usagedesmotsclefsRESTRICTetCASCADE.EncasdeRESTRICT,sileoulesutilisateursvissontcdsleursdroitsd'autres,unmessaged'erreurapparatraetleSGBDRrefuseradervoquerleoulesdroits.Enrevanchel'usagedumotclefCASCADEentraineralarvocationdesdroitscdslamanired'unchateaudecarte.

  • 16/2/2015 LeSQLdeAZlagestiondesprivilges

    http://sqlpro.developpez.com/cours/sqlaz/dcl/ 7/10

    Anoterquel'utilisationdel'expressionGRANTOPTIONFORnervokepaslesdroitsmaissupprimelapossibilitdecessiondesdroitslorsquecesdroitsonttdfinisenutilisantlaclauseWITHGRANTOPTION.

    3.1.QuelquesexemplessimplesExemple18

    Slectionnez

    REVOKESELECTONT_CHAMBREFROMDUBOIS

    SupprimeleprivilgedeselectiondelatableT_CHAMBREattribuDUBOISdansl'exemple1.

    Exemple19

    Slectionnez

    REVOKEINSERT,DELETEONTABLET_CHAMBREFROMDUVAL,DUBOIS

    Supprimelesprivilgesd'insertionetdesuppressiondelatableT_CHAMBREattribuDUVALetDUBOISdansl'exemple2,maispasceluidemisejour(UPDATE).

    Exemple20

    Slectionnez

    REVOKEGRANTOPTIONFORSELECTONTABLET_CMAMBREFROMDUFOUR

    SupprimelapossibilitpourDUFOURdetransmettreleprivilgedeslectionsurlatableT_CHAMBRE.

    3.2.Problmatiquedervocation

    Ilexistecependantquelquespigesdansl'utilisationdumcanismedervocation.Nousallonsenmontrerquelquesunsl'aidedediffrentsexemples.Rapellonssimplementqueceluiquilancelesordres(saufindicationcontraire)estl'utilisateurDUHAMEL.

    Contrairementauxdroits"systmes"lesprivilgessontcumulatifs.Onpeutainsiobtenirplusieursfoislemmeprivilgesurlemmeobjetenprovenancedediffrentsutilisateurs.Leprivilgeseratotalementretirlorsquetouslesutilisateursayantdonnceprivilgel'aurontretir.

    Exemple21

    Slectionnez

    GRANTSELECTONT_CLIENTTODUCROSWITHGRANTOPTION

    Slectionnez

    GRANTSELECTONT_CLIENTTODUGLAND

    C'estmaintenantDUCROSquiestl'utilisateurquivalancerl'ordresuivant:

    Slectionnez

    GRANTSELECTONT_CLIENTTODUGLAND

    Enfin,DUHAMELreprendlamainpourrvoquerainsi:

    Slectionnez

    REVOKESELECTONT_CLIENTFROMDUGLAND

    DUGLANDpeutilslectionnerdeslignesdelatableT_CLIENT?LarponseestOUI,parcequ'ilpossdeencoreundroitdeslectionvenantdeDUCROS!

    Voiciuneautreproblmatique.LesuperutilisateurPUBLICnevisepersonneenparticulierniengnral.Onnepeutdoncretirerunprivilgeparticulierunutilisateurdonnmmesil'onaattribudesprivilges"PUBLIC".

    Exemple22

    Slectionnez

    GRANTSELECTONT_CLIENTTOPUBLIC

  • 16/2/2015 LeSQLdeAZlagestiondesprivilges

    http://sqlpro.developpez.com/cours/sqlaz/dcl/ 8/10

    Slectionnez

    REVOKEINSERT,DELETEONT_CLIENTFROMDUMOULIN

    CedernierordreSQLvaretournerunmessaged'erreuretneserapasexcutparcequeDUMOULINn'ajamaisreulesprivilgesINSERTetDELETEsurlatableCLIENT,bienqu'ilhritedesprivilgesdePUBLIC!

    EnfaitilfautcomprendrequelemodledegestiondesprivilgesdansSQLreposesurlathoriedesgraphesetpeutdevenirvitecompliqulorsquel'onveutgrerfinementdemultiplesdroits.

    4.Retrouverlesprivilges

    Lesvuesd'informationdeschemapermettentderetrouverlesprivilges,lesobjetsetlesutilisateurviss(originairesetdestinataires).PourcelalanormeSQL2prvue3vuesspcifiques:

    INFORMATION_SCHEMA Colonnes

    TABLE_PRIVILEGES GRANTOR,GRANTEE,TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,PRIVILEGE_TYPE,IS_GRANTABLE

    COLUMN_PRIVILEGES GRANTOR,GRANTEE,TABLE_CATALOG,TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,PRIVILEGE_TYPE,IS_GRANTABLE

    USAGE_PRIVILEGES GRANTOR,GRANTEE,OBJECT_CATALOG,OBJECT_SCHEMA,OBJECT_NAME,OBJECT_TYPE,PRIVILEGE_TYPE,IS_GRANTABLE

    Exemple23

    Slectionnez

    SELECTGRANTOR,GRANTEE,TABLE_NAME,''ASCOLUMN_NAME,PRIVILEGE_TYPE,IS_GRANTABLEFROMINFORMATION_SCHEMA.TABLE_PRIVILEGESWHEREGRANTEEIN('DUBOIS','DUVAL','DULAC')UNIONSELECTGRANTOR,GRANTEE,TABLE_NAME,COLUMN_NAME,PRIVILEGE_TYPE,IS_GRANTABLEFROMINFORMATION_SCHEMA.COLUMN_PRIVILEGESWHEREGRANTEEIN('DUBOIS','DULAC','DUVAL)ORDERBYGRANTEE,TABLE_NAME,PRIVILEGE_TYPE,COLUMN_NAME

    Slectionnez

    GRANTORGRANTEETABLE_NAMECOLUMN_NAMEPRIVILEGE_TYPEIS_GRANTABLEDUHAMELDUBOIST_CHAMBRESELECTFalseDUHAMELDUBOIST_CHAMBREINSERTFalseDUHAMELDUBOIST_CHAMBREUPDATEFalseDUHAMELDUBOIST_CHAMBREDELETEFalseDUHAMELDUVALT_CHAMBREINSERTFalseDUHAMELDUVALT_CHAMBREUPDATEFalseDUHAMELDUVALT_CHAMBREDELETEFalseDURANDDUBOIST_CHAMBRESELECTFalseDURANDDUBOIST_CHAMBREINSERTFalseDURANDDUBOIST_CHAMBREUPDATEFalseDURANDDUBOIST_CHAMBREDELETEFalseDUHAMELDULACT_CHAMBRECHB_POSTE_TELUPDATEFalseDUHAMELDULACT_CHAMBRECHB_COUCHAGEUPDATEFalseDUHAMELDULACT_CHAMBRECHB_NUMEROINSERTFalseDUHAMELDULACT_CHAMBRECHB_ETAGEINSERTFalsDUHAMELDULACT_CHAMBRECHB_BAININSERTFalseDUHAMELDULACT_CHAMBRECHB_DOUCHEINSERTFalseDUHAMELDULACT_CHAMBRECHB_WCINSERTFalseDUHAMELDULACV_CHAMBRESELECTFalse

    Sivousavezsuivilalettretouslesexemplesd'octroideprivilgesjusqu'l'exemple13,alorslarequteciavantdonneralersultatcidessus...

    5.Critiquesdiverses

    Pouraussisimplequ'ilsoit,cesystmequirevlequelquespigesestassezcompletmaisinsatisfaisant.Voyonsquelsensontleslimites...

    5.1.Pasdeprivilgessimultanssurplusieursobjets

    Ainsiiln'estpaspossibleded'octroyerdesprivilgesplusieursobjetsimultanment:

    Exemple24

    Slectionnez

    GRANTINSERT,DELETEONTABLET_CHAMBRE,T_CLIENT,T_PLANNINGFORDUVAL,DUBOIS

    Untelordreestsyntaxiquementincorrectdufaitdelaprsencedeplusieurstables...Laconsquenceestquelagestionfinedesdroitsde5utilisateurssurunebasededonnescomportantunecentainedetablesetraduitenaumoinsunecentainesd'ordrespasser...

  • 16/2/2015 LeSQLdeAZlagestiondesprivilges

    http://sqlpro.developpez.com/cours/sqlaz/dcl/ 9/10

    5.2.Pasdeprivilges"ngatif"

    Iln'estpaspossibled'appliquerunprivilgededniementunobjet.Celan'estpasdfinitparlanormeSQL.

    Exemple25

    Slectionnez

    DENYDELETETODUVAL,DUBOIS

    N'existepasenSQL.Ceseraitpourtantbienpratiquedepasserparuntelmcanisme...

    NousallonsvoircependantquelanormeSQL:1999(SQL3)proposel'ajoutduconceptdeROLEafindepaliercertainsdecesdfauts.

    6.SQL:1999etlesrles

    SQL:1999introduitlanotiondeROLEdjprsentedansdenombreusesimplmentationsdeSGBDR.

    Lebutdurleestdecollecterdesprivilgessurdesobjetspuisdefairerentrerlesutilisateursdansunrleouunautre.

    LadescriptiondesrlesetlesextensionsdesordresGRANTetREVOKEdufaitdel'introductiondenouveauxobjetsdanslesdfinitionsdesschma(procduresstockes,typesutilisateur,mthodes...)seravudanslespagesspcifiqueslaprsentationdeSQL:1999.

    7.Confidentialitdesdonnes

    Laconfidentialitd'unSGBDRreposesurquatreniveaux:

    fluxdedonnes:lerseauetlestramesquiycirculentinfrence:l'environnementdusystmeinformatique(OS)sesfichiers,sesutilisateurs,sesprogrammescryptage:quelcodageettransformationsubissentlesdonnesoulesfichierscontenantlesdonnescontroled'accs:commentl'accsauSGBDRestilgr(parSQLavecGRANTetREVOKE)

    Fairel'impassesurlecontrled'accsensupposantquelaconfidentialitestassureparunebonnegestiondesutilisateurs"systme"estullisoire.Lesexemplesdramatiquesdepollutiondebasesdedonnesavecdesvirusparcequelestechniciensn'ontpasvouluprotgerneseraitcequelaconnexionauserveurparunsimplemotdepassesontlgion!

    D'autantquesouventlesdveloppeursetchefdeprojetfontunamalgameentregestiondesdroitsauniveaudelabasededonnesetgestiondesdroitsauniveauapplicatif.Enoutrel'arrived'Internetobligl'introductiond'utilisateurs"anonymes".

    ToutcelaafavorisunenongestiondesdroitsetprivilgesquiafaitmontaupiloricertainsSGBDRmalpenssoumalutiliss.

    Laconclusionestsimple:ilfautgrerlesdroitstouslestagesdelapyramide.Aumoinsdemaniresimpliste.

    LivresSQLdveloppementSQLlecoursderfrencesurlelangageSQLAvantd'aborderleSQLDfinitionsSGBDRfichierouclient/serveur?Labasededonnesexemple(gestiond'unhtel)ModlisationMERISEMotsrservsduSQLLeSQLdeAZLesfondementsLesimple(?)SELECTLesjointures,oucommentinterrogerplusieurstablesGroupages,ensemblesetsousensemblesLessousrequtesInsrer,modifier,supprimerCrationdesbasesGrerlesprivilges("droits")TouteslesfonctionsdeSQLLestechniquesdesSGBDR

    LeserreurlesplusfrquentesenSQLLespetitspapiersdeSQLPro

    ConfrenceBorland2003L'hritagedesdonnesDonnesetnormesModlisationparmtadonnesOptimisezvotreSGBDRetvosrequtesSQLLetemps,samesure,sescalculsQBE,lelangagedeZLOOFDesimagesdansmabaseLajointuremanquanteClefsautoincrmentesL'indexationtextuelleL'artdes"Soundex"Uneseulecolonne,plusieursdonnesLadivisionrelationnelle,mytheouralit?Gestiond'arborescenceenSQLL'avenirdeSQLMthodesetstandards

    http://sqlpro.developpez.com/cours/standards/http://sqlpro.developpez.com/cours/sqlaz/erreurs/http://sqlpro.developpez.com/cours/sqlaz/ddl/http://sqlpro.developpez.com/cours/arborescence/http://sqlpro.developpez.com/cours/jointuremanquante/http://sqlpro.developpez.com/cours/sgbdr/http://sqlpro.developpez.com/cours/divrelationnelle/http://sqlpro.developpez.com/cours/sqlaz/dcl/http://sqlpro.developpez.com/cours/stockerimages/http://sqlpro.developpez.com/cours/definitions/http://sqlpro.developpez.com/cours/avenirsql/http://sqlpro.developpez.com/cours/sqlaz/fonctions/http://sqlpro.developpez.com/cours/qbehttp://sqlpro.developpez.com/cours/modelisation/merise/http://sqlpro.developpez.com/cours/sqlaz/select/http://sqlpro.developpez.com/cours/indextextuelle/http://sqlpro.developpez.com/cours/bddexemple/http://sqlpro.developpez.com/cours/soundex/http://sqlpro.developpez.com/cours/modelisation/metadonnees/http://sqlpro.developpez.com/cours/optimiser/http://sqlpro.developpez.com/cours/modelisation/heritage/http://sqlpro.developpez.com/cours/clefs/http://sqlpro.developpez.com/cours/motsreserves/http://sqlpro.developpez.com/booksql05/http://sqlpro.developpez.com/cours/sqlaz/techniques/http://sqlpro.developpez.com/cours/sqlaz/fondements/http://sqlpro.developpez.com/cours/sqlaz/ensembles/http://sqlpro.developpez.com/cours/borcon2003/http://sqlpro.developpez.com/cours/sqlaz/dml/http://sqlpro.developpez.com/cours/normes/http://sqlpro.developpez.com/cours/sqlaz/jointures/http://sqlpro.developpez.com/cours/stockageopt/http://sqlpro.developpez.com/booksql/http://sqlpro.developpez.com/cours/sqlaz/sousrequetes/http://sqlpro.developpez.com/cours/gestiontemps/

  • 16/2/2015 LeSQLdeAZlagestiondesprivilges

    http://sqlpro.developpez.com/cours/sqlaz/dcl/ 10/10

    Developpez.comNouscontacterParticipezInformationslgales

    ServicesForumSGBD&SQLBlogsHbergement

    PartenairesPlanetHoster

    LesdoublonsSQLServerEviterlescurseursUnaperudeTRANSACTSQLV2000SQLServer2000etlescollationsScurisationdesaccsauxbasesdedonnesSQLServerDesUDFpourSQLServerSQLServeretlefichierdelog...ParadoxDevieuxarticlespublisentre1995et1999dansladfunterevuePointDBF

    Copyright2003FrdricBrouard.Aucunereproduction,mmepartielle,nepeuttrefaitedecesiteetdel'ensembledesoncontenu:textes,documents,images,etc.sansl'autorisationexpressedel'auteur.Sinonvousencourezselonlaloijusqu'troisansdeprisonetjusqu'300000dedommagesetintrts.

    ResponsablebnvoledelarubriqueSGBD&SQL:FrancisWalterContacterparemail

    Copyright20002015www.developpez.com

    mailto:[email protected]://www.developpez.com/redirect/1058http://sqlpro.developpez.com/Paradox/ParadoxCookBook.htmlhttp://sqlpro.developpez.com/cours/sqlserver/log/http://www.developpez.com/participez/http://blog.developpez.com/http://www.developpez.com/legal/http://sqlpro.developpez.com/cours/sqlserver/udf/http://club.developpez.com/contacts/http://sqlpro.developpez.com/cours/doublons/http://sqlpro.developpez.com/cours/sqlserver/securisation/http://sqlpro.developpez.com/cours/sqlserver/collations/http://sqlpro.developpez.com/cours/sqlserver/MSSQLServer_avoidCursor/http://www.developpez.net/forums/u484506/francis-walter/http://sqlpro.developpez.com/cours/sqlserver/transactsql/http://www.developpez.com/hebergement/http://www.developpez.net/forums/f4/bases-donnees/