Sunt foarte verde când vine vorba de gestionarea permisiunilor bazelor de date din SQL Sever.

Să păstrăm un exemplu simplu.

Spuneți că contul „administrator” este proprietarul schemelor A, B și C.

Există un alt cont „minion” pe care doriți să-l aveți drepturi depline (actualizați / ștergeți / insert / select / alter) pe orice obiect (tabel / vizualizare) creat sub schemele A, B și C.

Este posibil? Sau trebuie să executați o declarație de grant de fiecare dată când adăugați un tabel / vizualizare în aceste scheme? (mi se pare un pic prostie).

Răspuns

Puteți GRANT permisiuni de schemă care sunt eficiente pentru tot ceea ce există și pentru tot ce va exista în schema respectivă.

Acordați permisiuni de schemă

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>; 

Mai mult decât atât, dacă doriți să refuzați permisiunile pentru o anumită obiect în schema respectivă, puteți face.

Refuzarea permisiunilor obiectului

DENY INSERT ON OBJECT::<schema>.<object> TO <user>; 

Comentarii

  • De asemenea, utilizați paranteze pătrate dacă schema sau numele de utilizator are caractere speciale. de ex. .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • ' nu funcționează în Azure, vreo idee de ce? (comenzile funcționează, dar SSMS apare și spune " nu sunteți proprietarul Db .. bla bla bla. Este posibil să nu puteți salva tabelul " și destul de sigur, poți ' t (a acordat o DATE TOATE bazei de date (afișează permisiuni ' Baza de date ', ' < nume db > ', TheUserId, ' Creați tabel ' și state_desc din ' GRANT ') Există vreo altă magie care este necesară? Sau Azure este utilizabil numai de Dbo?

Răspuns

Pentru a simplifica puțin mai mult, puteți utiliza rolurile pentru a face treaba pe care o căutați.

Odată ce ați atribuit permisiuni pentru rol, puteți doar să adăugați utilizatori la rol. Astfel, nu trebuie să gestionați permisiunile pentru utilizatori individuali. Utilizatorii moștenesc permisiunile acordate rolului.

Mai jos este un exemplu pentru a începe:

 -- Create the database role CREATE ROLE TableSelector AUTHORIZATION [dbo] GO ---- Grant access rights to a specific schema in the database GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON SCHEMA::dbo TO TableSelector GO -- Add an existing user to the new role created EXEC sp_addrolemember "TableSelector", "MyDBUser" GO -- Revoke access rights on a schema from a role DENY ALTER -- you can customize here ... ON SCHEMA::dbo TO TableSelector 

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *