26
Lucruri pe care un administrator IT ar trebui sa le stie (III) - See more at: http://www.tutorialeonline.net/ro/article/lucruri-pe-care-un-administrator-it-ar-trebui-sa-le- stie-iii#sthash.MDwgIiF6.dpuf II. Things an IT specialist should know about MSSQL Server 1. conectarea la MSSQL prin intermediul SQL Server Management Studio; 2. conectarea la MSSQL prin intermediul SQLCMD; 3. configurarea Authentication Mode; 4. selectarea unei baze de date; 5. principals and permissions; Conectarea la MSSQL prin intermediul SQL Server Management Studio Aşa cum am menţionat şi în prima parte , SQL Server Management Studio este un instrument de administrare al bazelor de date SQL Server ce permite prin intermediul unei singure interfeţe efectuarea de operaţiuni precum: backup/restore; crearea/modificarea de obiecte (baze de date, tabele, indexări, etc); scrierea/modificarea/executarea de fraze SQL; etc. Instalarea SQL Server Management Studio nu este obligatorie. Mulţi asociază interfaţa SQL Server Management Studio cu MSSQL Server (oarecum din cauză că aproape toate operaţiile se pot realiza prin intermediul aceleiaşi interfeţe), dar trebuie reţinut faptul că Management Studio este un utilitar ce nu este neapărat necesar a fi instalat odată cu rolul de SGBD. De fapt, acest utilitar poate fi instalat chiar şi în absenţa rolului de server de baze de date. Tocmai datorită faptului că SQL Server Management Studio este un utilitar destul de intuitiv, nu am să insist prea mult asupra lui – în prezentul articol dorind a mă axa mai mult pe managementul unei instanţe MSSQL din linie de comandă, caz în care utilitarul SQLCMD este suficient (şi în general instalat odată cu instanţa). În cazul în care utilitarul nu este instalat, SQL Server Management Studio poate fi descărcat (versiunea EXPRESS) de pe site-ul Microsoft. Conectarea la instanţele MSSQL găzduite de furnizorii de servicii de hosting se poate realiza prin intermediul SQL Server Management Studio (nu există motive de îngrijorare în privinţa securităţii conexiunilor via internet – în acest sens există mecanisme de criptare şi securizare). Implicit, SQL Management Studio poate fi accesat din Start – All Programs – Microsoft SQL Server 2008 R2 – SQL Management Studio).

Lucruri pe care un administrator IT ar trebui sa le stie.doc

Embed Size (px)

Citation preview

Page 1: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Lucruri pe care un administrator IT ar trebui sa le stie (III) - See more at: http://www.tutorialeonline.net/ro/article/lucruri-pe-care-un-administrator-it-ar-trebui-sa-le-stie-iii#sthash.MDwgIiF6.dpuf

II. Things an IT specialist should know about MSSQL Server

1. conectarea la MSSQL prin intermediul SQL Server Management Studio;2. conectarea la MSSQL prin intermediul SQLCMD;3. configurarea Authentication Mode;4. selectarea unei baze de date;5. principals and permissions;

Conectarea la MSSQL prin intermediul SQL Server Management Studio

Aşa cum am menţionat şi în prima parte, SQL Server Management Studio este un instrument de administrare al bazelor de date SQL Server ce permite prin intermediul unei singure interfeţe efectuarea de operaţiuni precum:

backup/restore; crearea/modificarea de obiecte (baze de date, tabele, indexări, etc); scrierea/modificarea/executarea de fraze SQL; etc.

Instalarea SQL Server Management Studio nu este obligatorie. Mulţi asociază interfaţa SQL Server Management Studio cu MSSQL Server (oarecum din cauză că aproape toate operaţiile se pot realiza prin intermediul aceleiaşi interfeţe), dar trebuie reţinut faptul că Management Studio este un utilitar ce nu este neapărat necesar a fi instalat odată cu rolul de SGBD. De fapt, acest utilitar poate fi instalat chiar şi în absenţa rolului de server de baze de date.Tocmai datorită faptului că SQL Server Management Studio este un utilitar destul de intuitiv, nu am să insist prea mult asupra lui – în prezentul articol dorind a mă axa mai mult pe managementul unei instanţe MSSQL din linie de comandă, caz în care utilitarul SQLCMD este suficient (şi în general instalat odată cu instanţa).În cazul în care utilitarul nu este instalat, SQL Server Management Studio poate fi descărcat (versiunea EXPRESS) de pe site-ul Microsoft.Conectarea la instanţele MSSQL găzduite de furnizorii de servicii de hosting se poate realiza prin intermediul SQL Server Management Studio (nu există motive de îngrijorare în privinţa securităţii conexiunilor via internet – în acest sens există mecanisme de criptare şi securizare).Implicit, SQL Management Studio poate fi accesat din Start – All Programs – Microsoft SQL Server 2008 R2 – SQL Management Studio).

Page 2: Lucruri pe care un administrator IT ar trebui sa le stie.doc

În imaginea anterioară este prezentat modul de autentificare Windows, caz în care sistemul de operare va fi cel care va efectua verificări asupra identităţii celui ce iniţiază conexiunea. Dacă ne întoarcem asupra paşilor de instalare efectuaţi în prima parte a acestui articol, în etapa Database Engine Configuration am ales opţiunea Mixed Mode (SQL Server authentication and Windows authentication).

Conform configuraţiei alese în etapa de instalare, accesul la instanţa SQLEXPRESS se poate realiza în modul Windows (caz în care aplicaţia trebuie să fie executată sub credenţiale contului utilizator pentru care s-a alocat acces explicit în instanţa MSSQL – WEB01\Administrator).

În imaginea anterioară este prezentat modul de autentificare SQL, caz în care SGBD-ul va fi cel care va face validarea pe bază de user şi parolă.

Page 3: Lucruri pe care un administrator IT ar trebui sa le stie.doc

În cazul în care se doreşte realizarea unei conexiuni pe baza unui protocol specific, acest lucru se poate realiza prin intermediul opţiunilor avansate disponibile în cadrul de pagină Connection Properties.SQL Server Management Studio include o serie de facilităţi precum:

intellisense; statement completion; vizualizarea rapoartelor privind modul de execuţie a unei comenzi DML; etc.

Pentru a putea compara execuţia frazelor SQL puteţi folosi „Display Estimated Execution Plan” sau „Include Actual Execution Plan” (le găsiţi în meniul Query).

Page 4: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Conectarea la MSSQL prin intermediul SQLCMD

Utilitarul poate fi găsit în directorul unde s-a efectuat instalarea instanţei MSSQL (în cazul nostru C:\Program Files\Microsoft SQL Server\100\Tools\Binn). În cazul în care utilitarul SQLCMD nu este instalat, kitul de instalare poate fi descărcat de pe site-ul Microsoft (X86 Package, X64 Package, IA64 Package).

Deoarece acest director este inclus în variabila system PATH, apelarea utilitarului SQLCMD se poate face direct din consola command prompt.

Page 5: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Conectarea via TCP/IP

Atenţie, în cazul în care efectuaţi conectarea remote, trebuie să vă asiguraţi că regulile firewall permit accesul prin reţea. Dacă e să rezumăm cazurile cele mai des întâlnite, trebuie publicat:

TCP 1433 – instanţele implicite sunt configurate a folosi TCP 1433; UDP 1434 (SQL Server Browser) – pentru a răspunde cererilor de identificare a instanţelor MSSQL; executabilul sqlsrvr.exe a fiecărei instanţe denumite – atunci când alocarea porturilor se realizează în mod dinamic; NB-Name-In & Pub-WSD-In – pentru rezoluţii NETBIOS;

Sintaxa generală:

sqlcmd -S tcp:<computer name>,<port number>

Exemple de conectare via TCP/IP.

Page 6: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Conectarea la instanţa implicită folosind autentificarea Windows.

Conectarea la o instanţă denumită folosind autentificarea Windows.

Conectarea la o instanţă denumită, publicată pe portul TCP 49157 folosind autentificarea Windows (în general o astfel de conectare va fi necesară în cazul în care serviciul SQL Server Browser nu este pornit/publicat şi instanţa MSSQL este publicată pe un alt port TCP decât cel implicit).

Conectarea la instanţa implicită folosind autentificarea SQL (pe baza contului sa).

Conectarea via Named Pipes

Atenţie, în cazul în care efectuaţi conectarea remote, trebuie să vă asiguraţi că regulile firewall permit accesul prin reţea.Spre deosebire de TCP/IP, în acest caz trebuie publicat:

NB-Name-In & Pub-WSD-In – pentru rezoluţii NETBIOS; File and Printer Sharing (SMB-In) – TCP 445;

Sintaxa generală:

sqlcmd -S np:\\<computer name>\<pipe name>

De unde „luăm” <pipe name>?

Page 7: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Pipe name-ul poate fi obţinut în mai multe moduri, dar cel mai sigur e să îl obţineţi din configuraţia protocolului.

Exemple de conectare via Named Pipes.

Page 8: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Conectarea la instanţa implicită folosind autentificarea Windows.

Conectarea la instanţa denumită SQLEXPRESS folosind autentificarea SQL.

Conectarea via Shared Memory

În cazul Shared Memory nu putem efectua conectare remote.Sintaxa generală:

sqlcmd -S lpc:<computer name>

Exemple de conectare via Shared Memory.

Page 9: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Apelarea scripturilor

Nu mi-am propus a discuta aspecte legate de crearea bazelor de date, normalizare, denormalizare, etc. De aceea, ca bază de date (de test), am să propun apelarea următorului script SQL care va genera baza de date Comanda (este o bază de date pe care o folosesc în cam toate articolele legate de MSSQL – tocmai datorită faptului că structura ei este simplă, uşor de înţeles, uşor de memorat, dar îmi permite şi punerea în discuţie a unor cazuri particulare).

comanda.sql

Pentru a facilita citirea şi înţelegerea prezentului articol, toate comenzile transmise către instanţa MSSQL am să le apelez din Microsoft SQL Server Management Studio. Dacă doriţi să puneţi în practică exemplele articolului curent, vă recomand să le apelaţi asemeni modului prezentat în imaginea anterioară (cu ajutorul SQLCMD [ -i input_file] [ -o output_file ]).

Page 10: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Diagrama bazei de date Comanda.

Configurarea Authentication Mode

Page 11: Lucruri pe care un administrator IT ar trebui sa le stie.doc

La momentul instalării instanţelor MSSQL, în etapa Database Engine Configuration am ales opţiunea Mixed Mode (SQL Server authentication and Windows authentication).

Cum putem reveni asupra acestei setări?Prin intermediul regiştrilor! Fiecare instanţă MSSQL are câte un set de regiştrii definiţi în HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server.Dacă valoarea LoginMode este 0 sau 2, atunci înseamnă că respectiva instanţă MSSQL este configurată în modul Mixed Mode (SQL Server authentication and Windows authentication). Valoarea 1 este asociată modului de autentificare Windows.Este necesară repornirea instanţei MSSQL în cazul în care valoarea   LoginMode   este schimbată.   Mai exact, pe baza exemplului nostru, LoginMode are valoarea 2 (pentru fiecare instanţă în parte).

Regiştrii instanţa implicită.

Page 12: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Regiştrii instanţa denumită.Aşadar, în cazul în care, pentru instanţa implicită atribui valoarea 1 (Windows authentication), după repornirea serviciilor MSSQL, următoarele conectări bazate pe autentificarea SQL vor eşua.

În cazul în care la momentul instalării s-a ales opţiunea Windows authentication mode, userul sa va fi creat, dar contul nu va fi activ (deci, nu va fi posibilă conectarea la instanţa MSSQL pe baza acestui user). Aşadar, modificarea regiştrilor (activarea modului Mixed Mode) va trebui însoţită de activarea contului sa.

Page 13: Lucruri pe care un administrator IT ar trebui sa le stie.doc

EnableSAAccount.sql

Selectarea unei baze de date

Selectarea unei baze de date se face prin intermediul comenzii USE.

ThingsAnITSpecShouldKnowTSQL01.sql

Principals and permissions

 În terminologia MSSQL:

Login: asociază un cont utilizator Windows sau un cont SQL.Role: asemănător grupurilor de securitate Windows, rolurile au scopul de a grupa mai multe conturi şi de a facilita accesul la resursele MSSQL.

Server roles: o bulkadmin : membrii acestui rol vor putea apela BULK INSERT (BULK INSERT – operaţie prin intermediul

căreia pot fi importate date din diverse surse de date. Ex: fişiere .txt, .csv, etc. ).o dbcreator : membrii acestui rol vor putea crea baze de date, efectua modificări sau operaţii de restaurare

asupra propriilor baze de date, etc.o diskadmin : membrii acestui rol vor avea drepturile necesare pentru a efectua operaţii cu fişiere (ex: crearea /

ştergerea unui backup device).o processadmin : membrii acestui rol au posibilitatea de a vizualiza şi întrerupe procesele MSSQL.o public : orice login va fi membru al acestui grup. Scopul acestui rol este de a uşura managementul accesului la

resursele unei instanţe MSSQL.o securityadmin : membrii acestui rol pot administra login-urile, pot reseta parolele conturilor SQL, pot citi logurile

MSSQL, etc. De reţinut faptul că operaţiile executate asupra login-urilor cu rol de sysadmin sunt limitate.o serveradmin : membrii acestui rol vor putea schimba parametrii de funcţionare a instanţei MSSQL.o setupadmin : membrii acestui rol au dreptul de a adăuga / elimina linked servers, administra replicările, precum

şi de a executa anumite proceduri stocate în sistem. Linked servers – o funcţionalitate prin intermediul căreia este posibilă interogarea unor surse externe (ex: prin intermediul MSSQL, un set de date din instanţa curentă poate fi joncţionat cu un set de date obţinut dintr-o foaie de lucru Excel).

o sysadmin : membrii acestui rol au drepturi depline asupra instanţei MSSQL. Database roles:

o db_accessadmin : membrii acestui rol pot adăuga şi şterge login-urile respectivei baze de date (dar fără posibilitatea de a asigna permisiuni).

o db_backupoperator : membrii acestui rol pot realiza copii de siguranţă asupra respectivei baze de date (pentru a putea restaura baze de date, login-ul va trebui să fie membru dbcreator).

o db_datareader : membrii acestui rol pot executa fraze SELECT-SQL asupra oricărui tabel sau view din respectiva bază de date.

Page 14: Lucruri pe care un administrator IT ar trebui sa le stie.doc

o db_datawriter : membrii acestui rol pot executa operaţii de scriere (adăugare/modificare/ştergere) asupra oricărui tabel din respectiva bază de date.

o db_ddladmin : membrii acestui rol pot executa comenzi DDL (data definition language) asupra respectivei baze de date. DDL – creare/modificare/ştergere: tabel, index, trigger, stored procedure, function, etc.

o db_denydatareader : membrii acestui rol nu pot efectua operaţii de citire asupra respectivei baze de date.o db_denydatawriter : membrii acestui rol nu pot efectua operaţii de scriere (adăugare/modificare/ştergere)

asupra tabelelor respectivei baze de date.o db_owner : membrii acestui rol au drepturi depline asupra respectivei baze de date.o db_securityadmin : membrii acestui rol pot aduce modificări permisiunilor respectivei baze de date (dar nu pot

adăuga/şterge login-uri). Atat db_securityadmin cât şi db_accessadmin nu au drepturile necesare pentru managementul apartenenţei login-urilor la anumite roluri specifice bazelor de date (pentru aceasta fiind necesare drepturile db_owner).

o public : orice database-level login va fi membru al acestui grup.

Principals:

Page 15: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Windows principals : login-uri care sunt asociate cu:o windows domain user accounts;o windows local user accounts;o windows domain groups;o windows local groups;

SQL server principals : login-uri care sunt asociate cu conturile MSSQL (conturile sunt salvate în cadrul instanţei MSSQL).

Database principals :o Database users: database-level login.o Database roles: rolurile menţionate anterior (db_accessadmin, db_backupoperator, db_datareader,

db_datawriter, db_ddladmin, db_denydatareader, db_denydatawriter, db_owner, db_securityadmin, public);

List logins and server roles

1. sys.server_principals

Page 16: Lucruri pe care un administrator IT ar trebui sa le stie.doc

ThingsAnITSpecShouldKnowTSQL02.sql

2. Pentru a obţine un rezultat mai complet, eu prefer următoarea frază SELECT-SQL.

ThingsAnITSpecShouldKnowTSQL03.sql

3. Listarea rolurilor se poate face şi pe baza procedurii stocate sp_helpsrvrole.

ThingsAnITSpecShouldKnowTSQL04.sql

Page 17: Lucruri pe care un administrator IT ar trebui sa le stie.doc

4. Fraza SQL de la punctul 2 poate fi parţial înlocuită de procedura stocată sp_helpsrvrolemember - pe baza parametrului @srvrolename pot fi făcute filtrări.

ThingsAnITSpecShouldKnowTSQL05.sql

5. Crearea unui login.

CREATE LOGIN

„Să se creeze un login care să asocieze un cont Windows (atenţie contul Windows WEB01\iftvio trebuie să existe înainte de a fi creat login-ul).”

ThingsAnITSpecShouldKnowTSQL06.sql

6. „Să se creeze un login care să asocieze un cont SQL:

Page 18: Lucruri pe care un administrator IT ar trebui sa le stie.doc

a cărui bază de date implicită să fie baza de date COMANDA; cu schimbare parolă la prima autentificare; DEFAULT_LANGUAGE = us_english; aplicare politicii de securitate referitoare la schimbarea parolei, complexitate, etc.;”

ThingsAnITSpecShouldKnowTSQL07.sql

7. „Login-ul db să fie făcut membru al rolului sysadmin.”

sp_addsrvrolemember.

ThingsAnITSpecShouldKnowTSQL08.sql

8. „Revocaţi rolul sysadmin pentru login-ul db.”

sp_dropsrvrolemember.

ThingsAnITSpecShouldKnowTSQL09.sql

9. Modificarea unui login. „Dezactivaţi login-ul asociat contului Windows WEB01\iftvio.”

ALTER LOGIN

ThingsAnITSpecShouldKnowTSQL10.sql

10. Ştergerea unui login. „Ştergeţi login-ul asociat contului Windows WEB01\iftvio.”

DROP LOGIN

ThingsAnITSpecShouldKnowTSQL11.sql

Page 19: Lucruri pe care un administrator IT ar trebui sa le stie.doc

11. După ce a fost creat login-ul, acesta poate fi mapat unei baze de date.

„Să se mapeze login-ul WEB01\iftvio la baza de date Comanda.”

CREATE USER

ALTER USER

ThingsAnITSpecShouldKnowTSQL12.sql

12. „Userului WEB01\iftvio să îi fie alocate drepturi depline asupra bazei de date Comanda.”

sp_addrolemember

ThingsAnITSpecShouldKnowTSQL13.sql

13. Vizualizarea rolurilor (database-roles) alocate userului WEB01\iftvio.

sp_helpuser

ThingsAnITSpecShouldKnowTSQL14.sql

Page 20: Lucruri pe care un administrator IT ar trebui sa le stie.doc

Vizualizarea database roles.

sp_helprole

ThingsAnITSpecShouldKnowTSQL15.sql

Mai multe detalii legate de userii şi rolurile de la nivelul bazei de date pot fi obţinute prin intermediul procedurilor stocate sys.database_role_members şi sys.database_principals.

ThingsAnITSpecShouldKnowTSQL16.sql

14. „Pentru baza de date Comanda să se revoce drepturile rolului db_owner pentru userul WEB01\iftvio.”

Page 21: Lucruri pe care un administrator IT ar trebui sa le stie.doc

sp_droprolemember

ThingsAnITSpecShouldKnowTSQL17.sql

15. „Să se şteargă userul WEB01\iftvio din baza de date Comanda.”

DROP USER

ThingsAnITSpecShouldKnowTSQL18.sql

16. Alocarea permisiunilor.

„Să se adauge userul db pentru baza de date Comanda. Userului db să îi fie alocat:

doar dreptul de citire (selecţie) asupra anumitor (CodAgent, NumePrenume, Adresa, Telefon) coloane din tabela Agent; doar dreptul de citire (selecţie) asupra tabelei Client; doar dreptul de citire (selecţie) asupra tabelei Comanda; dreptul de scriere (inserare, modificare, ştergere) şi citire (selecţie) asupra tabelei LinieComanda; doar dreptul de scriere (selecţie) asupra tabelei Produs;

La final să se listeze permisiunile alocate userului db.”

GRANT   DENY   REVOKE   sp_helprotect

ThingsAnITSpecShouldKnowTSQL19.sql

Page 22: Lucruri pe care un administrator IT ar trebui sa le stie.doc

17. Totuşi, dacă vrem să mai adăugăm un user (ex: db1) care să aibă aceleaşi permisiuni ca şi db, se recomandă crearea unui database role căruia să îi atribuim permisiunile anterior menţionate (iar userii db şi db1 să îi facem membrii ai noului database role).

CREATE ROLEALTER ROLEDROP ROLE

Page 23: Lucruri pe care un administrator IT ar trebui sa le stie.doc

ThingsAnITSpecShouldKnowTSQL20.sql

„Revocăm permisiunile acordate anterior userului db.”

REVOKE

Page 24: Lucruri pe care un administrator IT ar trebui sa le stie.doc

ThingsAnITSpecShouldKnowTSQL21.sql

„Pentru baza de date Comanda, userul db să fie adăugat ca membru al rolului db_nonsensitive.”

ThingsAnITSpecShouldKnowTSQL22.sql

Articol preluat de la blog.iftvio.blogsite.org

- See more at: http://www.tutorialeonline.net/ro/article/lucruri-pe-care-un-administrator-it-ar-trebui-sa-le-stie-iii#sthash.MDwgIiF6.dpuf