Sunteți pe pagina 1din 10

16/2/2015

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

Accueil

ALM
SGBD

Java

4D

.NET

Dv.Web

Access

EDI

BigData

AccueilSGBD

Programmation
DB2

ForumsSGBD

Firebird

FAQsSGBD

SGBD

Office

InterBase

Solutionsd'entreprise

MySQL

TutorielsSGBD

SQL

NoSQL

Applications

PostgreSQL

OutilsSGBD

Oracle

Mobiles
Sybase

Systmes

SQLServer

LivresSGBDetSQL

Lagestiondesprivilges
Onemploietortlemot"droit"pourexpliquer,dansSQL,lesousensembleDCLdit"datacontrollanguage"quis'occupedelagestiondes
privilges.CettepartiedeSQL2s'occupedecontrlerquelutilisateurpeutounepeutpasutiliserteloutelordreSQLsurteloutelobjeteten
cettematireiln'yapasquedesdroits,maisaussides"usages"!
Articlelu16956fois.
L'auteur
SQLPro
L'article
Publile12novembre2003
1.Lanotiond'utilisateur
Publicvis:dbutant
Lienssociaux
Lanotiond'utilisateurpossdeunelacuneimportantedansSQLcarellefaitl'impassesurlafaondontoncrunutilisateur...

NOTA:SQL2aprvudesrglesd'accsspcifiquespourlesdiffrentesfamillesd'ordreSQL.Ainsipourlacrationd'unschma(unebase
dedonneenfait)oud'uncatalogue(unensembledebasesdedonnes),illaisselarglel'apprciationdel'diteurduSGBDR.Enrevanche
pourlesordresCREATE,ALTERetDROP,l'utilisateurcourantdoittrelemmequel'utilisateurpropritaire(auteur)duschmamodifi.
Rapellonsquelacrationd'unutilisateursefaitaumomentdelacrationduschma.Pardfautcedernierestlecrateurdesobjets.
Souventdanslesimplmentationcommerciales,ontrouveunpseudoordreSQLdugenreCREATEUSERnomUtilisateur,ouencoreune
procdurestockepermettantdedfinirunnouvelutilisateur.
Ainsi,pourMSSQLServer:
Exemple1

Slectionnez
sp_adduser'nomConnexion','nomNouvelUtilisateur'

Permetd'ajouterunnouvelutilisateuraffectlaconnexiondonne.
LanormeSQL2proposetroisfonctionspourconnatrel'utilisateur(c'estdireceluiquiseconnecteauserveur)etl'auteur,c'estdirele
crateurdesobjets:
SYSTEM_USER

nomdeconnexion

SESSION_USER

nomducrateur

CURRENT_USER

utilisateurcourant

Ainsi,pardfaut,SQLServerutiliselesnomssuivants:
Exemple2

Slectionnez
SELECTSYSTEM_USER,SESSION_USER,CURRENT_USER

Slectionnez
SYSTEM_USERSESSION_USERCURRENT_USER

sadbodbo

NotonsenmargelesuperutilisateurSQLPUBLICquiconcernetouslesutilisateurspasssetvenir.
2.Octroyerdesprivilges

Lesprivilgessont,pourunouplusieursutilisateurslapossibilitd'utilisercertainsobjetsetparmicesobjets,certainsordresSQL.

2.1.Lesdiffrentsprivilges

VoiciunelistedesdiffrentsprivilgesqueSQLpermetetlesobjetssurlesquelscesprivilgesportent:

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

1/10

16/2/2015

LeSQLdeAZlagestiondesprivilges
USAGE

domaine,jeudecaractres,collation,
translation

SELECT,INSERT,UPDATE,REFERENCES

nomducrateur

CURRENT_USER

table,vue,colonne(s)

Notonsqu'iln'estpaspossiblededfinirdesdroitssurlacration,lamodificationoulasuppressiondeslmentsdeschema(basede
donnes),cecitantdfinitlorsdelacrationduschema.

2.2.Attributiondeprivilges

C'estl'ordreSQLGRANTquipermetd'attribuerunprivilgediffrentsutilisateurssurdiffrentsobjets.
Voicilasyntaxedel'ordreSQLGRANT:

Slectionnez
GRANT<privileges>
TO<gratifi>[{,<gratifi>}...]
[WITHGRANTOPTION]

Slectionnez
<privileges>::=
<privilge>[{,<privilge>}...]

Slectionnez
<privilege>::=
ALLPRIVILEGESON<objettable>
|<privilged'action>
|<privileged'usage>
|<privilegederfrence>

Slectionnez
<privilged'action>::=
<action>[{,<action>}...]ON<objettable>

Slectionnez
<privileged'usage>::=
USAGEON<objetd'usage>

Slectionnez
<privilegederfrence>::=
REFERENCES[(<listedecolonne>)]<nomdetable>

Slectionnez
<action>::=
SELECT
|DELETE
|INSERT[(<listedecolonne>)]
|UPDATE[(<listedecolonne>)]

Slectionnez
<objettable>::=
[TABLE]<nomdetableoudevue>

Slectionnez
<objetd'usage>::=
DOMAIN<nomdedomaine>
|COLLATION<nomdecollation>
|CHARACTERSET<nomdejeudecaractres>
|TRANSLATION<nomdetranslation>

Slectionnez
<gratifi>::=

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

2/10

16/2/2015

LeSQLdeAZlagestiondesprivilges
PUBLIC
|<utilisateur>

LaclauseWITHGRANTOPTION,estutilisepourautoriserlatransmissiondesdroits.LaclauseALLPRIVILEGESn'ad'intrtquedanslecadre
delatransmissiondesdroits.
Voicimaintenantunebatteried'exemplesafindemieuxcomprendrecommentutilisercetordre...Pournosexemples,nousavonsconsidr
quelesutilisateursDUPONT,DURAND,DUBOIS,DUVAL,DULACetDUFOURtaitcrdanslabasededonnes.Celuiquilancelesordres(sauf
indicationcontraire)estl'utilisateurDUHAMEL.
Exemple3

Slectionnez
GRANTSELECT
ONT_CHAMBRE
TODUBOIS

AutoriseDUBOISlancerdesordresSQLSELECTsurlatableT_CHAMBRE.Notezl'absencedumotTABLE.
Exemple4

Slectionnez
GRANTINSERT,UPDATE,DELETE
ONTABLET_CHAMBRE
TODUVAL,DUBOIS

AutoriseDUVALetDUBOISmodifierlesdonnespartouslesordresSQLdemisejour(INSERT,UPDATE,DELETE)maispasleslire!
Exemple5

Slectionnez
GRANTSELECT
ONTABLET_CMAMBRE
TODUFOURWITHGRANTOPTION

AutoriseDUFOURlancerdesordresSQLSELECTsurlatableT_CHAMBREmaisaussitransmettretoutautreutilisateurlesdroitsqu'ila
acquisdanscetordre.
Exemple6

Slectionnez
GRANTSELECT,INSERT,DELETE
ONTABLET_CHAMBRE
TODURANDWITHGRANTOPTION

AutoriseDURANDlancerdesordresSQLSELECT,INSERT,DELETEsurlatableT_CHAMBRE.
Exemple7

Slectionnez
GRANTSELECT,UPDATE
ONTABLET_CHAMBRE
TOPUBLIC

AutorisetouslesutilisateursprsentetvenirlancerdesordresSQLSELECTetUPDATEsurlatableT_CHAMBRE.
Exemple8:DURANDlancel'ordresuivant:

Slectionnez
GRANTALLPRIVILEGES
ONTABLET_CHAMBRE
TODUBOIS

CequiautoriseDUBOISlancersurlatableT_CHAMBRE,lesmmesordresSQL,queceuxautorisDURAND(SELECT,INSERT,DELETE).
Onparlealorsd'hritagededroitsc'estdirequel'utilisateurdotsdecesdroitspeutnouveaulescderunouplusieursautres
utilisateurs.
Exemple9:DURANDlancel'ordresuivant:

Slectionnez
GRANTUPDATE
ONTABLET_CHAMBRE
TODUBOIS

Cetordrevaprovoquuneerreur,carDURANDn'estpasautorislancerdesordresUPDATEsurlatableT_CHAMBREetnepeutdonc
transmettreundroitqu'iln'apas!

2.3.Gestionfinedesprivilges

Estilpossibledegrerdesprivilgesplusfinsquesurl'intgralitdelatableoudevue?Enparticulier,peutongrerdesprivilgesau
niveaudecertainescolonnesd'unetable?

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

3/10

16/2/2015

LeSQLdeAZlagestiondesprivilges
LarponseestOUI,maisilfaututiliserunpeud'astuce...

2.3.1.PrivilgesINSERTetUPDATEsurcolonne

Onpeutemployerl'ordreGRANTpourcefaire:
Exemple10

Slectionnez
GRANTUPDATE(CHB_POSTE_TEL,CHB_COUCHAGE)
ONTABLET_CHAMBRE
TODULAC

CetordrepermetDULACdemodifieruniquementlescolonnes"postetlphonique"et"nombredeplacedecouchage"delatable
T_CHAMBRE.
Pluscurieux,onpeutdfinirlescolonnesutilisablespourunordred'insertionpourunutilisateur:
Exemple11

Slectionnez
GRANTINSERT(CHB_NUMERO,CHB_ETAGE,CHB_BAIN,CHB_DOUCHE,CHB_WC)
ONTABLET_CHAMBRE
TODULAC

CetordrepermetDULACd'insrerunenouvellelignedanslatable,uniquementenspcifiantlescolonneslistes.Leproblmeestquedans
cettelistenefigurepaslacolonneclef...Autrementdit,DULACnepourrajamaisrieninsrerdutout,saufsilaclefestcalculeparun
dclencheuravantinsertion.
NOTA:danslecasdel'attributiondeprivilgesd'insertionsurcolonne,ilestindispensabledefairefigurertouteslescolonnesNOTNULL
n'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_CHAMBRE
TODULAC

Cetordren'estpaslgalauniveaudeSQL.
MaisunordreGRANTpeutportersurunevue!
Nousvoiladoncsauv:crerunevuepourgrerlesprivilgesdeslectiondel'utilisateurDULAC..
Exemple13

Slectionnez
CREATEVIEWV_CHAMBRE
AS
SELECTCHB_NUMERO,CHB_ETAGE,CHB_BAIN,CHB_DOUCHE,CHB_WC
FROMT_CHAMBRE

Slectionnez
GRANTSELECT
ONV_CHAMBRE
TODULAC

Etletourestjou!

2.4.Particularitdesprivilgesd'usage

Maisquelestdoncl'intrtdegrerdesprivilgessurdesdomaines,descollations,destranslations,oudesjeuxdecaractres?
NOTA:pourleslecteursquineseraientpasfamiliarissaveccesobjetsd'unebasededonnes,voicilesrfrences.
Pourlesdomaines:
leSQLdeAZ,1erepartie,6.6lesdomaines
leSQLdeAZ,7emepartie,5.4Dfinirdesdomaines
Pourlesjeuxdecaractres,collationsettranslations,lire:
leSQLdeAZ,7emepartie,4Unequestiondecaractres
Pourcomprendrel'intrtdesprivilgesd'usageintressonsnousaudomaineenrapellantqueledomaineestconstitud'untypededonnes
assortiesd'autantderglesquel'onveut(contraintes)etmmeaucunesionledsire.Enoutre,ledomaineestutilisenremplacementd'un
typededonneSQLbasique,partoutoonenabesoin,dansladfinitiondestables,commesdansl'utilisationdelafonctionCASTpar
exemple.
Voicilacrationd'undomainepermettantdespcifierunpourcentage:
Exemple14

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

4/10

16/2/2015

LeSQLdeAZlagestiondesprivilges
Slectionnez
CREATEDOMAINDMN_POURCENTFLOAT
CHECK(VALUEBETWEEN0AND100)

Leproblmersidedanslefaitqu'unevuepeutavoirtcreavecuntranstypagededomaine...
Exemple15

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

Danscecasquevatilsepasserlorsdelasuppressiondudomaine?
SilasuppressiondudomainesefaitaveclaclauseRESTRICT,lefaitquecettevueutiliseuntranstypageprovoquerauneerreuretinterdirala
suppressioneffectivedudomaine.
Silasuppressiondudomainesefaitl'aidedelaclauseCASCADE,alorslavueestsupprime!
C'estpourquoionauratoutintrtintroduiredesprivilgesd'usagepourlesdomaines,collations,translationsetjeuxdecaractresmaisde
faonparcimonieusescertainsutilisateurscapablesd'instancierdesvuesparexemple.Celapermettradelimiterlesdgats...
Bienentenducequisepassedansnotreexempleaveclesdomainesestsimilaireacequipeutsepasseraveclescollations,translationset
jeuxdecaractres.

2.5.Privilgesderfrence

Lorsquel'oncredestablesenliaisonslesunesauxautres,onutilisetrssouventlemcanismed'intgritrfrentielafindegrerlesclefs
trangres.
Voyonscequisepassesi,dansnotrebaseexemple,nousattribuonslesdroitsainsi:
Exemple16

Slectionnez
GRANTSELECT,INSERT,UPDATE,DELETE
ONTABLET_CHAMBRE
TODUMONT

Slectionnez
GRANTSELECT,INSERT,UPDATE,DELETE
ONTABLET_PLANNING
TODUMONT

Slectionnez
GRANTSELECT,INSERT,UPDATE,DELETE
ONTABLETJ_CHB_PLN_CLI
TODUMONT

Dumontpourraslectionneretsupprimersansproblmesdanstouteslestables.Ilpourramettrejourlesdonnesetinsrersansaucun
problmedansleslestablesT_CHAMBREetT_PLANNING.
EnrevancheilseheurteraparfoisunrefusdelabasededonnespourlamisejourdelatabledejointureTJ_CHB_PLN_CLI.Pire,illui
seraimpossibled'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'aaucunprivilgesurlatable
T_CLIENT.Illuiseradoncimpossiblelorsdel'insertion,commelorsdelamisejourdeprciserunevaleurpourcettecolonnesansqu'ilse
voitautomatiquementinfligunrefusduserveur.
Ordonc,pourpouvoirdfinirunevaleurpourlacolonneCLI_IDlorsdel'excutiondesordresUPDATEetINSERT,notreutilisateurDUMONT,
doitavoirunprivilgesupplmentairedfinitcommesuit:
Exemple17

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

5/10

16/2/2015

LeSQLdeAZlagestiondesprivilges
Slectionnez
GRANTREFERENCES(CLI_ID)
ONTABLET_CLIENT
TODUMONT

NOTA:leprivilgederfrenceneportepasexclusivementsurlescontraintesd'intgritmaissurtoutecontraintefaisantrfrenceune
colonned'unetableexterne.
3.Rvocationdesprivilges

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

Slectionnez
REVOKE[GRANTOPTIONFOR]<privileges>
FROM<gratifi>[{,<gratifi>}...]
[RESTRICT
|CASCADE]

Slectionnez
<privileges>::=
<privilge>[{,<privilge>}...]

Slectionnez
<privilege>::=
ALLPRIVILEGESON<objettable>
|<privilged'action>
|<privileged'usage>
|<privilegederfrence>

Slectionnez
<privilged'action>::=
<action>[{,<action>}...]ON<objettable>

Slectionnez
<privileged'usage>::=
USAGEON<objetd'usage>

Slectionnez
<privilegederfrence>::=
REFERENCES[(<listedecolonne>)]<nomdetable>

Slectionnez
<action>::=
SELECT
|DELETE
|INSERT[(<listedecolonne>)]
|UPDATE[(<listedecolonne>)]

Slectionnez
<objettable>::=
[TABLE]<nomdetableoudevue>

Slectionnez
<objetd'usage>::=
DOMAIN<nomdedomaine>
|COLLATION<nomdecollation>
|CHARACTERSET<nomdejeudecaractres>
|TRANSLATION<nomdetranslation>

Slectionnez
<gratifi>::=
PUBLIC
|<utilisateur>

Lagrandediffrencersideenfaitdansl'usagedesmotsclefsRESTRICTetCASCADE.EncasdeRESTRICT,sileoulesutilisateursvissont
cdsleursdroitsd'autres,unmessaged'erreurapparatraetleSGBDRrefuseradervoquerleoulesdroits.Enrevanchel'usagedumot
clefCASCADEentraineralarvocationdesdroitscdslamanired'unchateaudecarte.

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

6/10

16/2/2015

LeSQLdeAZlagestiondesprivilges
Anoterquel'utilisationdel'expressionGRANTOPTIONFORnervokepaslesdroitsmaissupprimelapossibilitdecessiondesdroitslorsque
cesdroitsonttdfinisenutilisantlaclauseWITHGRANTOPTION.

3.1.Quelquesexemplessimples
Exemple18

Slectionnez
REVOKESELECT
ONT_CHAMBRE
FROMDUBOIS

SupprimeleprivilgedeselectiondelatableT_CHAMBREattribuDUBOISdansl'exemple1.
Exemple19

Slectionnez
REVOKEINSERT,DELETE
ONTABLET_CHAMBRE
FROMDUVAL,DUBOIS

Supprimelesprivilgesd'insertionetdesuppressiondelatableT_CHAMBREattribuDUVALetDUBOISdansl'exemple2,maispasceluide
misejour(UPDATE).
Exemple20

Slectionnez
REVOKEGRANTOPTIONFORSELECT
ONTABLET_CMAMBRE
FROMDUFOUR

SupprimelapossibilitpourDUFOURdetransmettreleprivilgedeslectionsurlatableT_CHAMBRE.

3.2.Problmatiquedervocation
Ilexistecependantquelquespigesdansl'utilisationdumcanismedervocation.Nousallonsenmontrerquelquesunsl'aidedediffrents
exemples.Rapellonssimplementqueceluiquilancelesordres(saufindicationcontraire)estl'utilisateurDUHAMEL.
Contrairementauxdroits"systmes"lesprivilgessontcumulatifs.Onpeutainsiobtenirplusieursfoislemmeprivilgesurlemmeobjet
enprovenancedediffrentsutilisateurs.Leprivilgeseratotalementretirlorsquetouslesutilisateursayantdonnceprivilgel'auront
retir.
Exemple21

Slectionnez
GRANTSELECT
ONT_CLIENT
TODUCROSWITHGRANTOPTION

Slectionnez
GRANTSELECT
ONT_CLIENT
TODUGLAND

C'estmaintenantDUCROSquiestl'utilisateurquivalancerl'ordresuivant:

Slectionnez
GRANTSELECT
ONT_CLIENT
TODUGLAND

Enfin,DUHAMELreprendlamainpourrvoquerainsi:

Slectionnez
REVOKESELECT
ONT_CLIENT
FROMDUGLAND

DUGLANDpeutilslectionnerdeslignesdelatableT_CLIENT?LarponseestOUI,parcequ'ilpossdeencoreundroitdeslectionvenant
deDUCROS!
Voiciuneautreproblmatique.LesuperutilisateurPUBLICnevisepersonneenparticulierniengnral.Onnepeutdoncretirerunprivilge
particulierunutilisateurdonnmmesil'onaattribudesprivilges"PUBLIC".
Exemple22

Slectionnez
GRANTSELECT
ONT_CLIENT
TOPUBLIC

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

7/10

16/2/2015

LeSQLdeAZlagestiondesprivilges

Slectionnez
REVOKEINSERT,DELETE
ONT_CLIENT
FROMDUMOULIN

CedernierordreSQLvaretournerunmessaged'erreuretneserapasexcutparcequeDUMOULINn'ajamaisreulesprivilgesINSERTet
DELETEsurlatableCLIENT,bienqu'ilhritedesprivilgesdePUBLIC!
EnfaitilfautcomprendrequelemodledegestiondesprivilgesdansSQLreposesurlathoriedesgraphesetpeutdevenirvitecompliqu
lorsquel'onveutgrerfinementdemultiplesdroits.
4.Retrouverlesprivilges

Lesvuesd'informationdeschemapermettentderetrouverlesprivilges,lesobjetsetlesutilisateurviss(originairesetdestinataires).Pour
celalanormeSQL2prvue3vuesspcifiques:
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,'<TABLE>'ASCOLUMN_NAME,PRIVILEGE_TYPE,IS_GRANTABLE
FROMINFORMATION_SCHEMA.TABLE_PRIVILEGES
WHEREGRANTEEIN('DUBOIS','DUVAL','DULAC')
UNION
SELECTGRANTOR,GRANTEE,TABLE_NAME,COLUMN_NAME,PRIVILEGE_TYPE,IS_GRANTABLE
FROMINFORMATION_SCHEMA.COLUMN_PRIVILEGES
WHEREGRANTEEIN('DUBOIS','DULAC','DUVAL)
ORDERBYGRANTEE,TABLE_NAME,PRIVILEGE_TYPE,COLUMN_NAME

Slectionnez
GRANTORGRANTEETABLE_NAMECOLUMN_NAMEPRIVILEGE_TYPEIS_GRANTABLE

DUHAMELDUBOIST_CHAMBRE<TABLE>SELECTFalse
DUHAMELDUBOIST_CHAMBRE<TABLE>INSERTFalse
DUHAMELDUBOIST_CHAMBRE<TABLE>UPDATEFalse
DUHAMELDUBOIST_CHAMBRE<TABLE>DELETEFalse
DUHAMELDUVALT_CHAMBRE<TABLE>INSERTFalse
DUHAMELDUVALT_CHAMBRE<TABLE>UPDATEFalse
DUHAMELDUVALT_CHAMBRE<TABLE>DELETEFalse
DURANDDUBOIST_CHAMBRE<TABLE>SELECTFalse
DURANDDUBOIST_CHAMBRE<TABLE>INSERTFalse
DURANDDUBOIST_CHAMBRE<TABLE>UPDATEFalse
DURANDDUBOIST_CHAMBRE<TABLE>DELETEFalse
DUHAMELDULACT_CHAMBRECHB_POSTE_TELUPDATEFalse
DUHAMELDULACT_CHAMBRECHB_COUCHAGEUPDATEFalse
DUHAMELDULACT_CHAMBRECHB_NUMEROINSERTFalse
DUHAMELDULACT_CHAMBRECHB_ETAGEINSERTFals
DUHAMELDULACT_CHAMBRECHB_BAININSERTFalse
DUHAMELDULACT_CHAMBRECHB_DOUCHEINSERTFalse
DUHAMELDULACT_CHAMBRECHB_WCINSERTFalse
DUHAMELDULACV_CHAMBRE<TABLE>SELECTFalse

Sivousavezsuivilalettretouslesexemplesd'octroideprivilgesjusqu'l'exemple13,alorslarequteciavantdonneralersultatci
dessus...
5.Critiquesdiverses
Pouraussisimplequ'ilsoit,cesystmequirevlequelquespigesestassezcompletmaisinsatisfaisant.
Voyonsquelsensontleslimites...

5.1.Pasdeprivilgessimultanssurplusieursobjets
Ainsiiln'estpaspossibleded'octroyerdesprivilgesplusieursobjetsimultanment:
Exemple24

Slectionnez
GRANTINSERT,DELETE
ONTABLET_CHAMBRE,T_CLIENT,T_PLANNING
FORDUVAL,DUBOIS

Untelordreestsyntaxiquementincorrectdufaitdelaprsencedeplusieurstables...
Laconsquenceestquelagestionfinedesdroitsde5utilisateurssurunebasededonnescomportantunecentainedetablesetraduitenau
moinsunecentainesd'ordrespasser...

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

8/10

16/2/2015

LeSQLdeAZlagestiondesprivilges

5.2.Pasdeprivilges"ngatif"
Iln'estpaspossibled'appliquerunprivilgededniementunobjet.Celan'estpasdfinitparlanormeSQL.
Exemple25

Slectionnez
DENYDELETE
TODUVAL,DUBOIS

N'existepasenSQL.Ceseraitpourtantbienpratiquedepasserparuntelmcanisme...
NousallonsvoircependantquelanormeSQL:1999(SQL3)proposel'ajoutduconceptdeROLEafindepaliercertainsdecesdfauts.
6.SQL:1999etlesrles

SQL:1999introduitlanotiondeROLEdjprsentedansdenombreusesimplmentationsdeSGBDR.
Lebutdurleestdecollecterdesprivilgessurdesobjetspuisdefairerentrerlesutilisateursdansunrleouunautre.
LadescriptiondesrlesetlesextensionsdesordresGRANTetREVOKEdufaitdel'introductiondenouveauxobjetsdanslesdfinitionsdes
schma(procduresstockes,typesutilisateur,mthodes...)seravudanslespagesspcifiqueslaprsentationdeSQL:1999.
7.Confidentialitdesdonnes
Laconfidentialitd'unSGBDRreposesurquatreniveaux:
fluxdedonnes:lerseauetlestramesquiycirculent
infrence:l'environnementdusystmeinformatique(OS)sesfichiers,sesutilisateurs,sesprogrammes
cryptage:quelcodageettransformationsubissentlesdonnesoulesfichierscontenantlesdonnes
controled'accs:commentl'accsauSGBDRestilgr(parSQLavecGRANTetREVOKE)
Fairel'impassesurlecontrled'accsensupposantquelaconfidentialitestassureparunebonnegestiondesutilisateurs"systme"est
ullisoire.Lesexemplesdramatiquesdepollutiondebasesdedonnesavecdesvirusparcequelestechniciensn'ontpasvouluprotgerne
seraitcequelaconnexionauserveurparunsimplemotdepassesontlgion!
D'autantquesouventlesdveloppeursetchefdeprojetfontunamalgameentregestiondesdroitsauniveaudelabasededonnesetgestion
desdroitsauniveauapplicatif.Enoutrel'arrived'Internetobligl'introductiond'utilisateurs"anonymes".
ToutcelaafavorisunenongestiondesdroitsetprivilgesquiafaitmontaupiloricertainsSGBDRmalpenssoumalutiliss.
Laconclusionestsimple:ilfautgrerlesdroitstouslestagesdelapyramide.Aumoinsdemaniresimpliste.
Livres
SQLdveloppement
SQLlecoursderfrencesurlelangageSQL
Avantd'aborderleSQL
Dfinitions
SGBDRfichierouclient/serveur?
Labasededonnesexemple(gestiond'unhtel)
ModlisationMERISE
MotsrservsduSQL
LeSQLdeAZ
Lesfondements
Lesimple(?)SELECT
Lesjointures,oucommentinterrogerplusieurstables
Groupages,ensemblesetsousensembles
Lessousrequtes
Insrer,modifier,supprimer
Crationdesbases
Grerlesprivilges("droits")
TouteslesfonctionsdeSQL
LestechniquesdesSGBDR
LeserreurlesplusfrquentesenSQL
LespetitspapiersdeSQLPro
ConfrenceBorland2003
L'hritagedesdonnes
Donnesetnormes
Modlisationparmtadonnes
OptimisezvotreSGBDRetvosrequtesSQL
Letemps,samesure,sescalculs
QBE,lelangagedeZLOOF
Desimagesdansmabase
Lajointuremanquante
Clefsautoincrmentes
L'indexationtextuelle
L'artdes"Soundex"
Uneseulecolonne,plusieursdonnes
Ladivisionrelationnelle,mytheouralit?
Gestiond'arborescenceenSQL
L'avenirdeSQL
Mthodesetstandards

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

9/10

16/2/2015

LeSQLdeAZlagestiondesprivilges
Lesdoublons
SQLServer
Eviterlescurseurs
UnaperudeTRANSACTSQLV2000
SQLServer2000etlescollations
ScurisationdesaccsauxbasesdedonnesSQLServer
DesUDFpourSQLServer
SQLServeretlefichierdelog...
Paradox
Devieuxarticlespublisentre1995et1999dansladfunterevuePointDBF

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

ResponsablebnvoledelarubriqueSGBD&SQL:FrancisWalterContacterparemail

Developpez.com
Nouscontacter
Participez
Informationslgales

Services
ForumSGBD&SQL
Blogs
Hbergement

Partenaires

PlanetHoster

Copyright20002015www.developpez.com

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

10/10