De ani de zile, inaccesibilitatea unei astfel de funcționalități a fost o sursă de dureri de cap pentru administratorii SQL Server. Ce ați făcut dacă trebuia să acordați drepturi mai multor utilizatori sau grupuri la nivel de instanță și să vă asigurați sincronizarea acestor drepturi? De exemplu, trebuie să acordați permisiunii View System State dreptul la un număr mare de utilizatori, astfel încât aceștia să poată vedea informațiile de blocare în centrele de dezvoltare. A fost necesar ca drepturile să fie acordate separat fiecărui utilizator sau grup de domenii.
Dacă toate numele de conectare erau nume de domeniu, a existat o soluție: ați putea crea un grup de domenii care să includă toți utilizatorii care aveau nevoie de aceste drepturi (a trebuit să creați grupuri separate pentru fiecare server dacă ar fi necesar să acordați drepturi mai multor servere). Ați putea adăuga utilizatori în acest grup, creați un nume de intrare asociat acestui grup de domenii și apoi acordați grupului statul View Server chiar pe server. Dar trebuia făcut foarte atent. În caz contrar, ați putea acorda dreptul de acces la utilizatorii care nu au avut anterior astfel de drepturi. Există chiar și posibilitatea de a acorda utilizatorilor drepturi care nu le pot fi furnizate.
Crearea unui rol folosind T / SQL
Există multe modalități de a crea un rol personalizat pe server, inclusiv T / SQL, SQL Server Management Studio și Windows PowerShell. Dacă doriți să creați un rol de server personalizat folosind T / SQL, aveți nevoie pentru a profita de trei echipe: Creați Server declarație rol va crea un rol de server personalizat, instrucțiuni Alter Server rolul de a adăuga utilizatori la rolul, și în cele din urmă, prin instrucțiuni de subvenționare prevăd rolul drepturile necesare.
Utilizarea acestor trei instrucțiuni este afișată în următorul cod, care creează un rol de server particularizat numit ViewServerState. Utilizatorul este adăugat la rolul SomeFakeLogin, iar rolul este acordat View State Server. Pentru a acorda acest drept altor utilizatori, pur și simplu le adăugați la rolul terminat cu instrucțiunea Alter Server Role.
UTILIZARE [master]
GO
CREAȚI ROLUL SERVER [ViewServerState] AUTHORIZATION [sa]
GO
ALTER ROLUL SERVER [ViewServerState] ADĂUGARE MEMBRĂ [SomeFakeLogin]
GO
GRANT VIEW STARE SERVER LA [ViewServerState]
GO
Pentru a șterge un utilizator dintr-un rol, utilizați instrucțiunea Alter Server Role. Acesta este folosit pentru parametrul Add Member și Drop Member:
ALTER ROLUL SERVER [ViewServerState] DROP MEMBER [SomeFakeLogin]
GO
Când aveți nevoie să implementați unul sau mai multe roluri de server de utilizatori pe mai multe instanțe ale SQL Server. există mai multe opțiuni posibile. Desigur, nu vă place să vă conectați individual la fiecare server și să creați roluri server personalizate pe ele. O opțiune este utilizarea consolei SQL Server Management Studio. În acesta, puteți rula script-uri pe T / SQL simultan pe mai multe instanțe.
De asemenea, puteți utiliza componentele Windows PowerShell din SQL Server pentru a implementa noi roluri de server de utilizatori pe toate instanțele SQL Server din organizația dvs. (Există mai multe modalități de a utiliza Windows PowerShell pentru a finaliza o sarcină, dar acestea depășesc domeniul de aplicare al acestui articol.)
SQL Server Management Studio Consola
Sarcina poate fi efectuată cu ușurință utilizând interfața grafică a SQL Server Management Studio. Pentru a crea un rol de server personalizat, conectați-vă la instanță folosind Object Explorer. În browserul de obiecte, navigați la nod <имя_экземпляра>/ Roluri de securitate / server. Faceți clic dreapta pe Rolul serverului și selectați Rolul serverului nou. În fereastra New Server Role care apare, în câmpul Name role role, specificați numele rolului, în câmpul Owner, specificați proprietarul rolului, apoi specificați obiectele și permisiunile care trebuie furnizate membrilor rolului (a se vedea Figura 1).
Fig. 1. Specificați drepturile pe care trebuie să le acorde rolul
Când ați terminat lucrul la pagina Generală, accesați pagina Membri (Figura 2) și specificați autentificările SQL Server. care trebuie să facă parte din acest rol de server pentru utilizatori.
Fig. 2. Definirea membrilor rolurilor
După ce ați definit membrii rolului pe pagina Membri, accesați pagina Membri. Rolul serverului este definit aici, al cărui rol de server al utilizatorului trebuie să fie membru. Dacă selectați un rol pe această pagină, utilizatorii care sunt membri ai rolului de server al utilizatorului care este creat vor avea, de asemenea, drepturile asupra rolului selectat.
Dacă creați un rol de utilizator și îl faceți membru al rolului serverului server-ului de tip serveradmin (a se vedea Figura 3), toți membrii rolului nou creat al utilizatorului vor avea și drepturi de rol serveradmin. Ca și în cazul cuiburilor de grupuri de domenii sau a bazelor de date, atunci când se atașează roluri, trebuie acordată atenție pentru a nu acorda utilizatorilor drepturi pe care nu ar trebui să le aibă
Fig. 3. Puteți include roluri personalizate în alte roluri ale serverului
Pentru a organiza cuiburile de roluri folosind T / SQL, veți avea nevoie din nou de instrucțiunea Role alter server cu parametrul Add Member. De exemplu, pentru a face rolul serverului personalizat ViewServerState ca membru al rolului serverului fixadmin, trebuie să schimbați rolul serverului fixadmin setat.
ALTER SERVER ROLE [setupadmin] ADAUGĂ MEMBRU [ViewServerState]
GO
Pot exista mulți utilizatori în rolurile serverului de utilizatori. Există zeci de drepturi la nivel de instanță pe care le puteți oferi rolului serverului pentru a simplifica gestionarea acestor drepturi. De asemenea, puteți crea un rol pentru administratorul bazei de date junior, care este de a furniza partea, dar nu toate drepturile de administrator. Puteți crea un grup AlwaysOnAdmin care oferă dreptul de a executa migrarea bazei de date AlwaysOn (care ar trebui efectuată în cadrul serverului SQL) fără a oferi drepturi administrative complete.
Există multe situații în care rolurile utilizatorilor de servere sunt foarte utile. Ele vor facilita foarte mult munca administratorului. De asemenea, aceste grupuri vor îmbunătăți securitatea instanțelor SQL Server prin reducerea probabilității de acordare aleatorie a drepturilor utilizatorilor care nu pot fi acordate.