Acasă - Pentru incepatori
Microsoft sql adaugă utilizator. Crearea unui utilizator de bază de date ms sql

La Microsoft SQL Server DBA adaugă conturi la instanța SQL Server, aceste conturi sunt mapate la utilizatori în bazele de date individuale din instanța SQL Server. Utilizatorii bazei de date care creează tabele și clase de obiecte trebuie să aibă permisiunile corespunzătoare pentru a crea obiecte în baza de date și schema în care vor fi create acele obiecte. Când este utilizat în ArcGIS, numele schemei trebuie să se potrivească cu numele de utilizator al bazei de date.

Puteți utiliza un instrument de geoprocesare sau un script pentru a face acest lucru Creați utilizator de bază de date pentru a efectua următoarele operații:

  • Creați sau adăugați un cont la instanța SQL Server.
  • Creați un utilizator corespunzător contului specificat.
  • Creați o schemă de mapare pentru un utilizator în baza de date specificată.
  • Acordați utilizatorului drepturile de acces necesare pentru a crea tabele, clase de obiecte sau vederi în baza de date specificată.

Adăugați un utilizator care poate crea date.

Puteți rula instrumentul din ArcGIS for Desktop sau puteți apela instrumentul într-un script Python pentru a crea un utilizator al bazei de date care poate crea tabele, clase de caracteristici și vizualizări.

Trebuie să vă conectați la baza de date folosind un cont cu drepturi de administrator de sistem pe instanța SQL Server pentru a rula instrumentul Creați utilizator de bază de date instrument.

Dacă doriți să creați un utilizator de geodatabase cu un cont Windows, contul corespunzător trebuie să existe deja înainte de a rula instrumentul.

Folosind instrumentul Creați utilizator de bază de date

  1. Lansați ArcMap sau ArcCatalog.
  2. Conectați-vă la baza de date sau geodatabase folosind un cont care are drepturi de administrator de sistem pe instanța SQL Server.
  3. Deschideți instrumentul Creați utilizator de bază de date.

    Instrumentul se află în setul de instrumente Administrare geodatabase al suitei de gestionare a datelor.

  4. Specificați conexiunea la baza de date în câmp Intrare conexiune la baza de date.
  5. Selectați dacă veți crea un cont cu autentificare SQL Server sau utilizați un cont existent cu autentificare Windows.
    • Lăsați nebifat pentru a crea un utilizator cu autentificare SQL Server. Rețineți că, în mod implicit, instanțele SQL Server utilizează numai autentificarea Windows. Dacă instanța dumneavoastră nu este configurată să utilizeze autentificarea SQL Server sau Windows, nu veți putea crea un utilizator autentificat la baza de date.
    • Verifica Creați un utilizator cu mijloace de autentificare sistem de operare(Creează un utilizator autentificat al sistemului de operare) pentru a utiliza un cont existent cu autentificare Windows.
  6. Introduceți numele utilizatorului bazei de date care va fi creat de instrument.

    Dacă alegeți să creați un cont cu autentificare SQL Server, numele pe care îl introduceți va fi folosit și pentru cont.

  7. Introduceți parola utilizatorului bazei de date.
  8. Dacă aveți deja un rol definit la care doriți să adăugați utilizatorul, specificați-l.
  9. Faceți clic pe OK pentru a rula instrumentul.

Rulați scriptul Python

Pentru a crea un utilizator folosind un script, urmați acești pași:

  1. Creați un fișier text pe computerul dvs. client ArcGIS și copiați următorul script în fișier.

    Nume „„”: create_database_user.py Descriere: Furnizați informații de conectare unui utilizator de bază de date. Tastați create_database_user.py -h sau create_database_user.py --help pentru utilizare """ # Import module de sistem import arcpy import os import optparse import sys # Definiți utilizarea și versiunea parser = optparse . OptionParser (utilizare = "utilizare: %prog " , versiune = "%prog 1.0 pentru versiunea 10.1" ) # Definiți ajutor și parser de opțiuni . add_option ("--DBMS" , dest = "Database_type" , tip = "choice" , choices = [ "SQLSERVER" , "ORACLE" , "POSTGRESQL" , "" ], implicit = "", ajutor = „Tip de SGBD de întreprindere: SQLSERVER, ORACLE sau POSTGRESQL.”)analizator. add_option ("-i" , dest = "Instanță" , tip = "șir" , implicit = "" , ajutor = "Nume instanță DBMS") parser . add_option("-D" , dest = "Bază de date" , tip = "șir" , implicit = "niciunul" , ajutor = „Numele bazei de date: nu este necesar pentru Oracle”)analizator. add_option ("--auth" , dest = "Account_authentication" , type = "choice" , choices = [ "DATABASE_AUTH" , "OPERATING_SYSTEM_AUTH" ], implicit = "DATABASE_AUTH" , ajutor = „Opțiuni pentru tipul de autentificare (semnificativ între majuscule și minuscule): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Implicit=DATABASE_AUTH”)analizator. add_option ("-U" , dest = "Dbms_admin" , tip = "șir" , implicit = "" , ajutor = "Utilizator administrator SGBD") . add_option ("-P", dest = "Dbms_admin_pwd" , tip = "șir" , implicit = "" , ajutor = "Parola administrator SGBD") parser . add_option ("--utype" , dest = "user_type" , type = "choice" , choices = [ "DATABASE_USER" , "OPERATING_SYSTEM_USER" ], implicit = "DATABASE_USER" , ajutor = „Opțiuni pentru tipul de autentificare (se diferențiază între majuscule și minuscule): DATABASE_USER, OPERATING_SYSTEM_USER. Implicit=DATABASE_USER”)analizator. add_option ("-u" , dest = "dbuser" , tip = "șir" , implicit = "" , ajutor = "numele utilizatorului bazei de date" ) parser . add_option ("-p" , dest = "dbuser_pwd" , tip = "șir" , implicit = "" , ajutor = "parola utilizatorului bazei de date") parser . add_option ("-r" , dest = "rol" , tip = "șir" , implicit = "" , ajutor = „rol care trebuie acordat utilizatorului”)analizator. add_option ("-t", dest = "Tablespace" , type = "string" , default = "" , help = "Tablespace name" ) # Verificați dacă a fost introdusă valoarea pentru opțiune try: (options, args) = parser. parse_args() #Verificați dacă nu au fost introduse argumente de sistem (opțiuni). if len (sys . argv ) == 1: print " %s : eroare: %s \n " % (sys . argv [ 0 ], "Nu sunt date opțiuni de comandă") parser . print_help () sys . ieșire (3) #Parametrii de utilizare pentru conexiunea bazei de date spațiale tip_bază de date = opțiuni . Database_type. upper() instanță = opțiuni. Baza de date de instanțe = opțiuni. Baza de date. mai jos () account_authentication = opțiuni . Autentificare_cont. upper() dbms_admin = opțiuni. Dbms_admin dbms_admin_pwd = opțiuni . Dbms_admin_pwd dbuser = opțiuni . dbuser dbuser_pwd = opțiuni . dbuser_pwd tablespace = opțiuni . Tablespace user_type = opțiuni . user_type rol = opțiuni . rol if (database_type == "SQLSERVER" ): database_type = "SQL_SERVER" if (database_type == "" ): print (" \n %s : eroare: \n %s \n " % (sys . argv [ 0 ] , „Trebuie specificat tipul SGBD (--DBMS).)) analizator. print_help () sys . exit (3 ) if (database_type == "SQL_SERVER" ): if ( account_authentication == "DATABASE_AUTH" and dbms_admin == "" ): print (" \n %s : eroare: %s \n " % (sys . argv [0], „Administratorul SGBD trebuie specificat cu autentificarea bazei de date”))sys. exit (3 ) if ( account_authentication == "OPERATING_SYSTEM_AUTH" și dbms_admin != "" ): print (" \n Avertisment: %s \n " % ( „Se ignoră administratorul DBMS specificat când se utilizează autentificarea sistemului de operare...”)) else: if ( dbuser . lower () == "" ): print (" \n %s : eroare: %s \n " % (sys . argv [ 0 ], „Utilizatorul bazei de date trebuie specificat.”))sys. ieșire (3) dacă ( dbms_admin == "" ): print (" \n %s : eroare: %s \n " % (sys. argv [ 0 ], „Administratorul SGBD trebuie specificat!”))sys. ieșire (3) dacă ( user_type == "DATABASE_USER" și (dbuser == "" sau dbuser_pwd == "" )): print (" \n %s : eroare: \n %s \n " % (sys . argv [0], „Pentru a crea un utilizator autentificat în baza de date, trebuie specificate numele de utilizator și parola!”)) analizator. print_help () sys . ieșire (3) # Obțineți licența actuală a produsului product_license = arcpy . Informații produs() # Verifică nivelul de licență necesar if product_license . upper() == „ARCVIEW” sau product_license . upper () == "MOTOR": imprimare (" \n " + product_license + " licență găsită!" + „Crearea unui utilizator într-o bază de date geodata sau într-o bază de date de întreprindere necesită o licență ArcGIS for Desktop Standard sau Advanced, ArcGIS Engine cu extensia Geodatabase Update sau licență ArcGIS for Server.”)sys. Ieșire( „Reautorizați ArcGIS înainte de a crea un utilizator al bazei de date.”) else : print (" \n " + product_license + „Licență disponibilă! Se continuă crearea...”) arcpy . AddMessage ("++++++++++") # Variabile locale instance_temp = instance . înlocuiți ( " \\ " , " _ " ) instance_temp = instance_temp . înlocuiți ("/" , "_") instance_temp = instance_temp . înlocuiți (":" , "_" ) Conn_File_NameT = instance_temp + "_" + database + "_" + dbms_admin if os . mediu. get ("TEMP" ) == None : temp = "c:\\temp" else : temp = os . mediu. get ("TEMP") dacă os . mediu. get ("TMP" ) == None : temp = "/usr/tmp" else : temp = os . mediu. get ( "TMP" ) Connection_File_Name = Conn_File_NameT + ".sde" = temp + os . sep + Conn_File_NameT + ".sde" # Verificați fișierul .sde și ștergeți-l dacă este prezent arcpy. înv. overwriteOutput = Adevărat dacă os . cale. exista ( Connection_File_Name_full_path): os . elimina( Connection_File_Name_full_path) încercați: imprimați (" \n Se creează fișierul de conexiune la baza de date...\n" ) # Proces: Creați fișierul de conexiune la baza de date... # Utilizare: out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password (trebuie să fie adevărat) #arcpy.CreateDatabaseConnection_management(temp , Connection_File_Name, database_type, instance, database, account_authentication, dbms_admin, dbms_admin_pwd, „TRUE”) arcpy. CreateDatabaseConnection_management(out_folder_path = temp , out_name = Connection_File_Name , database_platform = database_type , instance = instance , database = database , account_authentication = account_authentication , username = dbms_admin , password = dbms_admin_pwd , save_user_admin_pwd , save_user_pass = "iTRUE) Get in. : dacă „000565” în arcpy . GetMessage(i): #Verificați dacă conexiunea la baza de date a avut succes arcpy. AddReturnMessage (i) arcpy. AddMessage (" \n +++++++++") arcpy . AddMessage („Ieșire!!”) arcpy . AddMessage ("++++++++++ \n " ) sys . ieșire (3) altfel: arcpy. AddReturnMessage (i) arcpy. AddMessage ("++++++++++ \n " ) print ( "Se creează utilizatorul bazei de date... \n " ) arcpy . CreateDatabaseUser_management(input_workspace= Connection_File_Name_full_path, user_authentication_type = user_type , nume_utilizator= dbuser, parola_utilizator= dbuser_pwd, rol= rol, tablespace_name= tablespace) pentru i în gamă(arcpy. GetMessageCount()): arcpy. AddReturnMessage(i) arcpy. AdaugăMesaj("+++++++++ \n" ) cu excepţia: pentru i în gamă(arcpy. GetMessageCount()): arcpy. AddReturnMessage(i) #Verificați dacă nu a fost introdusă nicio valoare pentru opțiune cu excepţia SystemExit ca e: dacă e. cod == 2 : analizator. utilizare = "" imprimare(" \n" ) analizator. print_help() analizator. Ieșire(2 )

    Puteți rula scriptul pe un computer cu ArcGIS pentru Desktop(Standard sau Avansat), ArcGIS for Server(Standard sau Avansat) sau ArcGIS Engine cu extensia Geodatabase Update.

  2. Salvați fișierul cu extensia .py.
  3. Rulați scriptul, specificând opțiunile și informațiile adecvate pentru instanța dvs. de SQL Server și pentru utilizatorul pe care doriți să-l creați.

    În exemplul următor, numele scriptului creat este create_database_user.py. Un cont cu autentificare SQL Server (gisd_owner) a fost creat pe instanța SQL Server ssi5, iar schema și utilizatorul corespunzătoare au fost create în baza de date gisdata. Utilizatorul nu a fost adăugat la rol.

    create_database_user.py --DBMS SQL_SERVER -i ssi5 -D gisdata --auth DATABASE_AUTH -U sa -P !nocopy! --utype DATABASE_USER -u gisd_owner -p T3mpPass

    Cheie:

    Intră -h sau --Ajutor la linia de comandă pentru a afișa ajutorul pentru sintaxă.

Baza de date conține acum un utilizator care poate crea tabele.

Există mai multe moduri în care un proprietar de date poate crea tabele într-o bază de date sau geodatabase. Pentru informații despre crearea tabelelor utilizând ArcGIS, consultați Prezentare generală despre adăugarea seturilor de date la o bază de date geografică.

Deoarece setul de date există, proprietarul acestuia poate acorda drepturi de acces la date altor utilizatori. Pentru instrucțiuni, consultați Acordarea și revocarea permisiunilor de acces la seturile de date.

Crearea de conturi și utilizatori utilizând instrumentele SQL Server

Dacă doriți să creați un utilizator care are drepturi diferite de cele oferite de instrument Creați utilizator de bază de date, sau nu are drepturi acordate direct acestuia, puteți utiliza instrumentele SQL Server pentru aceasta. Există câteva lucruri de reținut atunci când vă creați propriile conturi și utilizatori pe care să le utilizați cu ArcGIS:

  • Toți utilizatorii bazei de date care vor crea date trebuie să aibă o schemă a bazei de date. Această schemă trebuie să aibă același nume ca și utilizatorul.
  • Puteți furniza grupul Acces Windows la SQL Server în loc să utilizați conturi Windows separate, ceea ce facilitează crearea și gestionarea conturilor. Toți membrii grupuri Windows se poate conecta la SQL Server. Drepturile de acces la un server, o bază de date sau un set de date acordate unui grup sunt aplicate automat fiecărui membru al grupului. Cu toate acestea, nu puteți crea o singură schemă pentru a stoca datele create de toți membrii grupului. Fiecare utilizator dintr-un grup care creează date într-o bază de date geografice trebuie să aibă propria sa schemă în care sunt stocate datele. SQL Server creează un utilizator și o schemă în baza de date prima dată când un membru al grupului încearcă să creeze date. Acest lucru se întâmplă automat; Nu este nevoie să creați manual o schemă și un utilizator.

Pentru instrucțiuni despre utilizarea instrumentelor SQL Server pentru a crea conturi, utilizatori și scheme, consultați documentația Microsoft SQL Server.

De zeci de ani a fost posibil să se definească roluri de utilizator în bazele de date pentru a facilita gestionarea procesului de acordare a permisiunilor de acces la baza de date, dar la nivel de instanță au existat întotdeauna nouă roluri fixe (sau opt dacă utilizați o versiune anterioară SQL). Server 2000 - rolul bulkadmin a fost introdus în SQL Server 2005). Acum, odată cu apariția SQL Server 2012, este în sfârșit posibil să creați roluri de server personalizate sau personalizate.

De ani de zile, lipsa disponibilității acestei funcționalități a fost o sursă de bătăi de cap pentru administratorii SQL Server. Ce ați face dacă ar trebui să acordați drepturi mai multor utilizatori sau grupuri la nivel de instanță și să păstrați aceste drepturi sincronizate? Să presupunem că doriți să acordați dreptul de vizualizare a stării sistemului unui număr mare de utilizatori, astfel încât aceștia să poată vedea informațiile de blocare în centrele de dezvoltare. A fost necesar să se acorde drepturi individual fiecărui utilizator sau grup de domenii.

Dacă toate autentificările erau autentificări de domeniu, a existat o soluție: puteți crea un grup de domenii care să includă toți utilizatorii care au nevoie de astfel de drepturi (ar trebui să creați grupuri separate pentru fiecare server dacă ați avea nevoie să acordați drepturi pe mai multe servere). Puteți adăuga utilizatori la acest grup, puteți crea o autentificare asociată cu acest grup de domenii și apoi acordați grupului dreptul de vizualizare a stării serverului pe server. Dar acest lucru trebuia făcut cu mare atenție. În caz contrar, a fost posibil să se acorde drepturi de conectare utilizatorilor care nu aveau anterior astfel de drepturi. Era chiar posibil să se acorde utilizatorilor drepturi care nu ar trebui să le fie acordate.

Crearea unui rol folosind T/SQL

Există multe modalități de a crea un rol personalizat pe un server, inclusiv folosind T/SQL, SQL Server Management Studio și Windows PowerShell. Dacă doriți să creați un rol personalizat de server folosind T/SQL, trebuie să utilizați trei comenzi: instrucțiunea Create Server Role va crea rolul personalizat de server, instrucțiunea Alter Server Role va adăuga utilizatorul la rol și, în final, Grant. declarația va oferi drepturi necesare roluri.

Utilizarea acestor trei instrucțiuni este ilustrată în codul următor, care creează un rol personalizat de server numit ViewServerState. Utilizatorul SomeFakeLogin este adăugat la rol, iar rolului i se acordă dreptul View Server State. Pentru a acorda acest drept altor utilizatori, pur și simplu adăugați-i la un rol gata făcut folosind declarația Alter Server Role.

UTILIZAȚI GO CREATE SERVER ROL AUTORIZARE GO ALTER SERVER ROLE ADĂUGAȚI MEMBRI GO GRANT VEZI STARE SERVER TO GO

Pentru a elimina un utilizator dintr-un rol, utilizați instrucțiunea Alter Server Role. În acest caz, sunt utilizați parametrii Adăugare membru și Eliminare membru:

ALTER SERVER ROLE DROP MEMBER GO

Când trebuie să implementați unul sau mai multe roluri de server personalizate în mai multe instanțe ale SQL Server, există mai multe opțiuni posibile. Probabil că nu vă va plăcea să vă conectați la fiecare server în mod individual și să creați roluri de server personalizate pe el. O opțiune este să utilizați consola SQL Server Management Studio. Vă permite să rulați scripturi T/SQL pe mai multe instanțe simultan.

De asemenea, puteți utiliza Componentele Windows SQL Server PowerShell pentru a implementa noi roluri personalizate de server în toate instanțele SQL Server din organizația dvs. (Există multe opțiuni folosind Windows PowerShell pentru a efectua sarcina, dar descrierea lor depășește domeniul de aplicare al acestui articol.)

Consola SQL Server Management Studio

Sarcina poate fi realizată cu ușurință folosind GUI SQL Server Management Studio. Pentru a crea un rol de server personalizat, conectați-vă la instanță utilizând Object Explorer. În Object Explorer, navigați la nod<nume_instanță>>Roluri de securitate/server. Faceți clic dreapta pe Roluri server și selectați Rol server nou. În fereastra Rol server nou care se deschide, în câmpul Nume rol server, specificați numele rolului, în câmpul Proprietar, specificați proprietarul rolului, apoi specificați obiectele și permisiunile care ar trebui acordate membrilor rol ( orez. 1).

Orez. 1. Specificați drepturile pe care rolul trebuie să le ofere

Când ați terminat de accesat pagina General, accesați pagina Membrii ( orez. 2) și specificați login-urile SQL Server care ar trebui să facă parte din acest rol personalizat de server.

Orez. 2. Membrii cu rol definitori

După definirea membrilor rolului pe pagina Membri, accesați pagina Membrii. Aceasta specifică rolurile de server din care trebuie să fie membru rolul de server personalizat. Dacă selectați un rol pe această pagină, utilizatorii care sunt membri ai rolului de server personalizat pe care îl creați vor avea, de asemenea, drepturile pentru rolul selectat.

Dacă creați un rol personalizat și îl faceți membru al rolului de server fix serveradmin ( orez. 3), toți membrii rolului de utilizator nou creat vor avea, de asemenea, drepturi de rol serveradmin. Ca și în cazul grupurilor de domenii de imbricare sau al rolurilor de baze de date, trebuie avută mare grijă atunci când imbricați rolurile pentru a evita acordarea de drepturi utilizatorilor pe care nu ar trebui să le aibă.

Orez. 3. Rolurile personalizate pot fi incluse în alte roluri de server

Pentru a organiza imbricarea rolurilor folosind T/SQL, veți avea nevoie din nou de instrucțiunea Alter Server Role cu parametrul Add Member. De exemplu, pentru a face din rolul de server personalizat ViewServerState un membru al rolului de server fix setupadmin, trebuie să editați rolul de server fix setupadmin.

ALTER SERVER ROLE ADD MEMBER GO

Rolurile de server personalizate pot avea mulți utilizatori. Există zeci de drepturi la nivel de instanță care pot fi acordate unui rol de server personalizat pentru a facilita gestionarea acestor drepturi. De asemenea, puteți crea un rol pentru un administrator de baze de date junior, căruia i se acordă unele drepturi de administrator, dar nu toate. Puteți crea un grup AlwaysOnAdmin care acordă dreptul de a efectua o tranziție a bazei de date AlwaysOn (care trebuie făcută în SQL Server) fără a acorda drepturi administrative complete.

Există multe situații în care rolurile personalizate de server sunt foarte utile. Ele vor facilita foarte mult munca administratorului. Aceste grupuri vor îmbunătăți, de asemenea, securitatea instanțelor dvs. SQL Server prin reducerea probabilității de a acorda accidental utilizatorilor drepturi care nu ar trebui acordate.

Vă rugăm să rețineți, toate acțiunile descrise trebuie efectuate pe server, cu drepturi Administrator. Daca nu ai acces fizic la server ( SQL Server), sau acces la desktop la distanță, sau permisiunile contului dvs. nu vă permit să gestionați utilizatori, inclusiv crearea de noi utilizatori, atunci nu veți putea rezolva singur problema discutată aici. Dacă da, vă rugăm să vă contactați administrator de sistem.

Dacă ai un obișnuit gazduire virtuala, apoi fără a contacta suportul tehnic al companiei dvs. de găzduire, nu veți putea gestiona în mod independent utilizatorii bazei de date.

Fugi Microsoft SQL Server Management Studioși conectați-vă la server.

Pe listă „Browser de obiecte”(dacă nu este afișat, apăsați F8) deschideți folderul "Siguranţă". Faceți clic dreapta pe folder „Nume de conectare”, în meniul care apare, selectați „Creează autentificare...”.

În fereastra care apare, în câmp „Nume de conectare” introduceți datele dvs. de conectare. De exemplu: "Yolper" (fără ghilimele). Apoi selectați tipul dvs. de autentificare. Valoarea implicită este "Examinare Autenticitatea Windows» , asta înseamnă că atunci când este conectat la SQL Server contul va fi folosit Windows. De regulă, această metodă nu este utilizată pe serverele de la distanță. Selecta „Autentificare SQL Server”. In sectiunea "Parolă", introduceți orice parolă, cel mai important scrieți-o astfel încât să poată fi transmisă utilizatorului mai târziu. Dacă parola este pierdută, aceasta poate fi schimbată în orice moment.

Asigurați-vă că lăsați opțiunea activată „Solicitați utilizarea unei politici de parole”. Alte optiuni: „Setați perioada de limitare a parolei”Şi „Utilizatorul trebuie să-și schimbe parola data viitoare când se conectează”, utilizați la discreția dvs., dar de obicei sunt dezactivate pentru a nu crea probleme inutile la conectarea la server.

În aceeași fereastră, în partea de jos, selectați baza de date implicită. Această bază de date se va deschide după ce utilizatorul se conectează la server. Clic "Bine" pentru a crea un cont.


Contul a fost creat, dar asta nu este tot. Acum trebuie să conectați contul la tabele. De fapt, acest lucru se poate face la crearea unui cont, totuși, la momentul scrierii acestui ajutor, SQL Server 2008 Din anumite motive, am refuzat să-mi amintesc legătura dintre contul creat și tabelele (în 2005 nu a fost observată o astfel de eroare).

Pentru a asocia un cont cu anumite tabele și pentru a defini drepturile de utilizator, extindeți folderul „Nume de conectare”în Browserul de obiecte. Găsiți contul creat în listă și faceți clic dreapta pe el, selectați meniu „Proprietăți”.


În fereastra care apare, accesați secțiunea „Cartografierea utilizatorului”. În lista de sus, selectați tabelele cu care se poate lucra folosind acest cont. Selectați drepturile din lista de jos. De obicei suficient „db_owner”.


După aceea, faceți clic pe butonul "Bine". Acum puteți folosi contul creat pentru a accesa SQL Server.

12.07.2016 Tim Ford

Ce ar trebui să știe un administrator de baze de date despre securitate: o explicație a termenilor și o prezentare generală a obiectelor în practică

Securitate SQL Server și autentificare de încredere

Există două tipuri de scheme de securitate în Microsoft SQL Server: securitate SQL Server și autentificare de încredere (cunoscută și ca autentificare Windows). Securitatea SQL Server este o combinație standard de nume de utilizator și parolă de conectare, iar autentificarea de încredere presupune că dispozitivul care încearcă să se conecteze la instanța SQL Server este aprobat prin procedura de autentificare a domeniului, iar rezultatele acestei verificări sunt transmise instanței de SQL Server: se presupune că domeniul găzduiește instanța SQL Server are încredere în contul de utilizator - verificare efectuată anterior.

Utilizatorii și aplicațiile care încearcă să se conecteze la SQL Server prin mecanismul de securitate SQL Server trebuie să furnizeze un nume de utilizator și o parolă create pe serverul SQL țintă. Când vă conectați folosind autentificarea de încredere, trebuie doar să setați un semnalizator în șirul de conexiune pentru a indica faptul că este utilizată autentificarea de încredere. În acest caz, acreditările utilizatorului final sau ale contului de serviciu al aplicației sunt trimise ca simbol de securitate. Dacă există un nume de utilizator care se potrivește pe SQL Server, atunci accesul va fi acordat.

Nume și utilizatori

Există două niveluri de acces la o instanță SQL Server: conturi de utilizator de server (sau instanță) și utilizatori de baze de date. Folosind conturi, serverele permit unui utilizator extern (în acest articol, termenul „utilizator” se referă la orice aplicație, serviciu, API etc. care încearcă să se conecteze la SQL Server) să facă conexiunea inițială la o instanță a SQL Server. În caz de siguranță Bazat pe SQL aceasta necesită un nume de utilizator și o parolă. În cazul autentificării de încredere, acesta este un cont de domeniu.

Există două moduri de a crea aceste conturi de utilizator: folosind Transact-SQL (https://msdn.microsoft.com/en-us/library/ms189751.aspx? f=255&MSPPError=-2147217396) sau prin GUI. Procedura de utilizare a T-SQL pentru a crea conturi este bine documentată și cel mai bine este să consultați documentația oficială Microsoft SQL Server. Deocamdată, să vedem cum să creați un cont în interfața grafică. Pentru a lansa caseta de dialog pentru a crea conturi de utilizator, conectați-vă la instanța SQL Server în SQL Server Management Studio (SSMS) în Object Explorer, apoi extindeți nodul Security\Logins. Faceți clic dreapta pe Login și selectați New Login din meniul contextual (Figura 1).

Veți vedea dialogul pentru setările contului prezentat în Figura 2. Vă puteți schimba numele de utilizator în aceeași fereastră.

Aceasta este fila General pentru crearea (și modificarea) setărilor contului. Diferă de cele două scheme de securitate descrise anterior. În fila General puteți seta:

  • Nume de conectare. Folosit pentru autentificare. În cazul Windows, sau autentificarea de încredere, trebuie să specificați numele în formatul DOMAIN\LOGIN, unde LOGIN este numele utilizatorului din domeniul de pe care utilizatorul se autentifică. Dacă instanța SQL Server este situată într-un domeniu diferit, atunci este necesară o relație de încredere între acel domeniu și domeniul SQL Server.
  • Parolă. Cu autentificarea SQL Server, caseta de text cu parolă este activată și introduceți atât numele de utilizator, cât și parola asociată.
  • Politica parolelor și expirarea. Casetele de selectare pentru parolă și politica de expirare sunt, de asemenea, bifate în modul de autentificare SQL Server, iar politicile care sunt în vigoare în Active Directory în domeniul pe care găzduiește SQL Server sunt aplicate. Prin atribuirea unui nume de utilizator SQL Server, puteți permite utilizatorilor să-și schimbe parolele după înregistrare. Drept urmare, administratorului bazei de date i se interzice accesul la numele de cont al utilizatorului final.
  • Certificate, chei, acreditări. În acest articol pentru începători, nu vom acoperi certificatele, cheile și acreditările.
  • Baza de date implicită Odată stabilită conexiunea la SQL Server, se efectuează doi pași: autentificare (trebuie să existe un nume de utilizator pentru acreditările de domeniu ale utilizatorului dacă se folosește autentificarea Windows sau Trusted, sau combinația nume de utilizator/parolă trebuie să fie transmisă instanței SQL Server). Aceasta este prima barieră. Al doilea este că numele de utilizator verificat are un obiect utilizator asociat în baza de date implicită - baza de date configurată inițial ca context de nume de utilizator după verificarea identității. Chiar dacă primul obstacol este trecut, dacă nu există un utilizator de bază de date corespunzător în baza de date implicită, conexiunea nu va fi stabilită și intrarea corespunzătoare va fi scrisă în jurnalul de erori SQL. Dar există și excepții: dacă rolul de server al unui utilizator este atât de important încât este necesar să se stabilească drepturi implicite implicite pentru el în fiecare bază de date, atunci nu este necesar să existe un utilizator corespunzător în baza de date implicită. Cu toate acestea, sunt înaintea mea pentru că nu am acoperit încă utilizatorii bazei de date sau rolurile de server. Este suficient să rețineți că atunci când selectați o bază de date implicită în GUI, nu este creat niciun utilizator al bazei de date asociat. Pur și simplu specificați care ar trebui să fie baza de date implicită. Când faceți acest lucru, utilizați fila Mapare utilizator din caseta de dialog Creare autentificare pentru a crea un utilizator al bazei de date asociat.

Să trecem la următoarea filă, Roluri de server, prezentată în Figura 3. Pe această pagină, puteți selecta orice rol de nivel SQL Server (instanță) pentru noul utilizator. Rolurile de server sunt colecții de drepturi, cunoscute și sub denumirea de securizabile, care sunt împachetate într-o colecție, astfel încât să nu fie nevoie să atribuiți drepturi fiecărui element securabil în mod individual. În mod implicit, fiecare cont este membru al unui rol public, ceea ce vă permite să stabiliți o conexiune primară la o instanță a SQL Server. Restul articolului va analiza fiecare rol de server inclus în Microsoft SQL Server.

Următoarea pagină a casetei de dialog Creare autentificare din SQL Server Management Studio este pentru maparea contului de utilizator. Fiecare cont poate avea un utilizator într-una sau mai multe baze de date. Pe această pagină puteți crea utilizatori ai bazei de date asociați noului cont. Pentru a face acest lucru, trebuie să furnizați următoarele informații.

  • Baza de date. Bifați caseta de selectare de lângă baza de date în care doriți să creați un utilizator asociat pentru cont.
  • Nume de utilizator Numele obiectului utilizator nu se potrivește neapărat cu numele contului și vă vom arăta cum poate fi schimbat mai târziu.
  • Schema implicită Fiecare utilizator al bazei de date trebuie să fie atribuit unei scheme implicite. O schemă este o colecție de obiecte de bază de date care sunt separate logic (dar nu neapărat fizic) de alte obiecte din baza de date. Puteți acorda unui utilizator sau unui grup de utilizatori drepturi pentru toate obiectele dintr-o schemă dată, de exemplu, să acordați tuturor utilizatorilor din Contabilitate (sau unui cont de serviciu al unei aplicații de contabilitate) anumite drepturi asupra tuturor obiectelor din schema de facturare, dar nu să acordați acces la acestea. obiecte către alți utilizatori. Când atribuiți o schemă implicită unui utilizator de bază de date, nu este nevoie să includeți numele schemei în apelurile T-SQL către baza de date atunci când adresați obiecte din schema respectivă. Aceasta înseamnă, de asemenea, că, dacă unui utilizator i se acordă drepturi de a crea obiecte, acestea vor fi create implicit în această schemă, cu excepția cazului în care specificați un nume de schemă la crearea obiectelor. Mai târziu în articol vom atinge conceptul de circuite.
  • Rolul de membru al bazei de date La fel ca la nivel de instanță sau server, fiecare bază de date are o colecție predefinită de drepturi împachetate în roluri. Ne vom uita la rolurile bazei de date care vin cu Microsoft SQL Server puțin mai târziu.

Să aruncăm o privire la caseta de dialog exemplu pentru contul de utilizator SQLCRUISE\skipper (vezi Figura 4).

În acest exemplu, utilizatorului SQLCRUISE\skipper i se acordă drepturi la baza de date implicită (barca de salvare), unde numele de utilizator asociat este pur și simplu skipper. Schema implicită este skipper_only. Celelalte două baze de date în care vor fi creați utilizatorii pentru acest cont folosesc același nume de utilizator ca și în numele de utilizator (de obicei pentru ușurința identificării), iar schema implicită este dbo, care este implicită în Microsoft SQL Server pentru toate cele definite de utilizator. obiecte. Mai multe informații acest lucru va fi discutat în secțiunea următoare. În cazul bazei de date a bărcilor de salvare, oferim doar calitatea de membru în rolul bazei de date publice, care vă permite să vă conectați la baza de date fără permisiuni suplimentare.

Următoarea pagină, Securables, prezintă securable la nivel de server sau instanță. După cum sa menționat mai sus, elementele securizate sunt permisiuni acordate obiectelor. Obiectele securizate sunt furnizate de obicei în următoarele cazuri:

  • rolul fix este prea larg (multe alte drepturi pentru cont);
  • Rolul sau setul de roluri atribuit nu acoperă în totalitate toate drepturile necesare pentru cont.

În exemplul nostru, am acordat SQLCRUISE\skipper apartenența la rolul de server public și i-am permis să vadă orice definiții de obiect care există la nivel de server (vezi Figura 5).

În cele din urmă, mergem la pagina Stare. Pe această pagină puteți permite sau refuza accesul utilizatorului (în mod implicit, Grant este selectat - permite). Prin urmare, puteți să creați un cont, să acordați drepturi, să creați utilizatori asociați și apoi să revocați accesul. Puteți reveni la această fereastră pentru un utilizator existent și puteți revoca accesul la instanța SQL Server. Activarea și dezactivarea unui cont are loc în același mod (vezi Ecranul 6). În cele din urmă, putem vedea starea contului utilizatorului și vedem dacă contul a fost blocat din cauza prea multor încercări eșuate de conectare cu o parolă incorectă.

Fiecare opțiune funcționează cu succes dacă există un singur tabel numit tblFoo în baza de date SQL_Cruise și contextul actual al bazei de date a fost baza de date SQL_Cruise. Cu toate acestea, doar prima opțiune va funcționa corect, indiferent de baza de date la care sunteți conectat în prezent pe instanța SQL Server care conține baza de date SQL_Cruise. A doua opțiune va fi executată dacă sunteți conectat la baza de date SQL_Cruise, indiferent de numărul de scheme care au tblFoo, deoarece ați specificat schema dbo. A treia opțiune va genera un mesaj de eroare (vezi Figura 8) dacă baza de date SQL_Cruise are mai multe scheme cu tblFoo, așa cum se arată în Lista 4, unde am creat atât tabelul dbo.tblFoo, cât și tabelul user.tblFoo.

Da, așa este - obiectul există, dar primești mesajul de eroare Nume obiect nevalid. Nu fiți niciodată sigur în prealabil că un obiect cu acest nume nu există. Mesajul poate indica o problemă de sintaxă.

Rolurile fixe sunt incluse în Microsoft SQL Server atât la nivel de server, cât și la nivel de bază de date. Cu toate acestea, vă puteți crea propriile roluri dacă apar situații în care trebuie să atribuiți aceleași permisiuni mai multor utilizatori. Crearea de roluri personalizate vă permite să definiți aceste drepturi o singură dată: atunci când creați rolul, nu pe baza unui cont de autentificare per utilizator sau per utilizator (în funcție de baza de date sau de rolurile de server). Pe lângă economisirea de timp, elimină inconsecvența la atribuirea drepturilor mai multor utilizatori sau conturi.

Utilizați hyperlinkurile pentru a naviga prin lista completă a rolurilor de server și a rolurilor de baze de date furnizate de Microsoft. Articolele viitoare, pe măsură ce începem să trecem de la subiecte de bază la subiecte mai profunde, vor acoperi cum să creați roluri, să adăugați utilizatori sau conturi la aceste roluri și să asociați drepturi cu roluri la nivel de server și baze de date.

Securitatea Microsoft SQL Server este un subiect foarte important. Se distinge prin profunzimea sa, precum și prin originalitatea terminologiei sale. Sper că mi-am atins obiectivul de a explica diferiții termeni și de a oferi o privire de ansamblu asupra obiectelor folosite în practică. Vom acoperi alte câteva subiecte în aceste articole de nivel de intrare, dar în curând voi aborda probleme mai complexe care apar din această postare. Ca întotdeauna, mulțumesc cititorilor pentru atenție și aștept cu nerăbdare comentariile voastre. Sper că acest articol îi va ajuta pe administratorii de baze de date începători să stăpânească misterele SQL.

Listare 1. Cod corespunzător setărilor efectuate în GUI

UTILIZAȚI GO CREATE LOGIN FROM WINDOWS WITH DEFAULT_DATABASE= GO USE GO CREATE UTILIZATOR PENTRU LOGIN ALTER UTILIZATOR WITH DEFAULT_SCHEMA= GO CREATE SCHEMA AUTORIZARE GO USE GO CREATE UTILIZATOR PENTRU LOGIN ALTER UTILIZATOR WITH DEFULTER USE SCHEMA UTILIZARE DEFAUT_SCHEMA_GO_CREATE EMA= GO folosește GO GRANT VIEW ORICE DEFINITION TO GO

Lista 2. Informații despre utilizatorii sistemului și bazei de date

SELECT name , sid , principal_id , type_desc , default_database_name FROM sys.server_principals WHERE nume = "profesor"; SELECT name , sid , principal_id , type_desc , default_schema_name FROM lifeboat.sys.database_principals WHERE nume = "profesor";

Lista 3. Exemplu de interogare pentru selectarea coloanelor și rândurilor din tabel

OPȚIUNEA 1: FQDN -============================================== ============ ============================= SELECTEAZĂ * DIN SQL_Cruise.dbo.tblFoo; -=================================================== === ======================== - OPTIUNEA 2: nume definit prin schema -============== == ================================================== ===== ======= SELECT * FROM dbo.tblFoo; -=================================================== === ======================== - OPTIUNEA 3: numai numele obiectului -==== =========== ================================================ SELECTEAZĂ * DIN tblFoo; Lista 4. Crearea tabelelor cu mai multe scheme USE GO CREATE SCHEMA AUTORIZATION GO CREATE TABLE dbo.tblFoo (id INT); CREATE TABLE .tblFoo (id INT); SELECT * FROM tblFoo;


Noțiuni de bază privind securitatea SQL Server


5 răspunsuri

Pe baza întrebării dvs., cred că ați putea fi puțin confuz în ceea ce privește diferența dintre utilizator și autentificare. O autentificare este un cont pe SQL Server în general - cineva care se poate conecta la server și care are o parolă. Un utilizator este o intrare cu acces la o anumită bază de date.

Crearea unei autentificări este ușoară și ar trebui (evident) să fie făcută înainte de a crea un cont de utilizator pentru a vă conecta la o anumită bază de date:

CREATE LOGIN NewAdminName CU PAROLA = „ABCD” GO

Acesta este modul în care creați un utilizator cu privilegii db_owner folosind Login-ul pe care tocmai l-ați declarat:

Utilizați baza de date; GO DACA NU EXISTĂ (SELECT * FROM sys.database_principals WHERE nume = N"NewAdminName") ÎNCEPEȚI CREATE UTILIZATOR PENTRU LOGIN EXEC sp_adrolemember N"db_owner", N"NewAdminName" END; MERGE

Acum conectările sunt puțin mai fluide decât par a fi mai sus. De exemplu, un cont de utilizator este creat automat (în majoritatea Instalări SQL Server) pentru contul de administrator Windows la instalarea bazei de date. În cele mai multe situații, îl folosesc doar când administrez baza de date (are toate privilegiile).

Cu toate acestea, dacă intenționați să accesați SQL Server dintr-o aplicație, trebuie să configurați serverul pentru „Mod mixt” (atât Windows, cât și SQL) și să creați o autentificare așa cum se arată mai sus. Veți primi apoi privilegii „GRANT” pentru acea intrare SQL în funcție de ceea ce este necesar pentru aplicația dvs. Consultați pentru mai multe informații.

UPDATE: Aaron subliniază utilizarea sp_addsrvrolemember pentru a atribui un rol prevăzut contului tău. Aceasta este o idee bună - mai rapid și mai ușor decât acordarea manuală a privilegiilor. Dacă îl găsiți, veți vedea multe link-uri. Cu toate acestea, ar trebui să înțelegeți în continuare diferența dintre autentificare și utilizator.

Drepturi complete de administrator pentru întregul server sau o anumită bază de date? Cred că ceilalți au răspuns pentru baza de date, dar pentru server:

UTILIZARE ; GO CREAȚI LOGIN MyNewAdminUser CU PAROLA = N"abcd", CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF; GO EXEC sp_addsrvrolemember @loginame = N"MyNewAdminUser", @rolename = N"sysadmin";

Poate fi necesar să omiteți parametrii CHECK_ în funcție de versiunea de SQL Server Express pe care o utilizați (este aproape întotdeauna o idee bună să includeți aceste informații în întrebarea dvs.).

Dacă doriți să creați un script generic, o puteți face cu o instrucțiune Execute, înlocuind cu numele dvs. de utilizator și numele bazei de date

Declara @userName ca varchar(50); Declara @defaultDataBaseName ca varchar(50); Declara @LoginCreationScript ca varchar(max); Declara @UserCreationScript ca varchar(max); Declara @TempUserCreationScript ca varchar(max); set @defaultDataBaseName = "data1"; set @userName = "domeniu\nume utilizator"; set @LoginCreationScript ="CREATE LOGIN [(userName)] FROM WINDOWS WITH DEFAULT_DATABASE =(dataBaseName)" set @UserCreationScript =" USE (dataBaseName) CREATE User [(userName)] for LOGIN [(userName)]; EXEC data "spder_ad"b_member "", ""(userName)""; EXEC sp_adrolemember ""db_datawriter"", ""(userName)"" Acordați executarea pe Schema:: dbo TO [(userName)];" /*Crearea autentificarii*/ set @LoginCreationScript=Înlocuiește(Înlocuiește(@LoginCreationScript, „(nume utilizator)”, @Nume utilizator), „(nume baze de date)”, @DefaultDataBaseName) set @UserCreationScript =Înlocuiește(@UserCreationScript, „(nume utilizator)” , @userName) Execute(@LoginCreationScript) /*Crearea utilizatorului și atribuirea rolurilor*/ set @TempUserCreationScript =Înlocuiește(@UserCreationScript, "(dataBaseName)", @defaultDataBaseName) Execute(@TempUserCreationScript) set @TempUserCreationScript(@UserCreplaceationScript(@UserCreplacetionCreation), „(dataBaseName)”, „db2”) Execute(@TempUserCreationScript) set @TempUserCreationScript =Înlocuiește(@UserCreationScript, „(dataBaseName)”, „db3”) Execute(@TempUserCreationScript)

Puteți folosi:

CREAȚI LOGIN CU PAROLA = " "; MERCI

De asemenea, puteți utiliza:

Acordați permisiunea [ ,...n ] ON SCHEMA:: schema_name

Pentru a configura permisiunile pentru schema pe care ați atribuit-o utilizatorilor.

Saptamana trecuta am instalat Versiunea Microsoft SQL Server 2014 Developer Edition pe pagina mea de dezvoltare și a întâmpinat imediat o problemă pe care nu am mai văzut-o până acum.

Am instalat diferite versiuni de SQL Server de nenumărate ori și, în general, este un proces nedureros. Instalează serverul, lansează consola de management, este atât de simplu. Cu toate acestea, după finalizarea acestei instalări, când am încercat să mă autent la server folosind SSMS, am primit o eroare similară cu cea de mai jos:

Eroare de conectare SQL Server 18456 „Conectarea eșuată pentru utilizator... (Microsoft SQL Server, eroare: 18456)” Am folosit această eroare dacă am introdus parola greșită la conectare - dar asta numai dacă folosesc modul mixt ( Autentificare Windows și SQL). În acest caz, serverul a fost configurat numai cu autentificare Windows și contul de utilizator era al meu. Încă nu sunt sigur de ce nu mi-a adăugat utilizatorul la rolul SYSADMIN în timpul instalării; poate am ratat un pas și am uitat să-l adaug. În orice caz, nu s-a pierdut toată speranța.

Modul de a remedia acest lucru dacă nu vă puteți autentifica cu niciun alt cont pe SQL Server este să adăugați autentificare la rețea prin interfață linie de comandă. Pentru a face acest lucru, trebuie să fiți administrator Windows pentru computerul la care sunteți conectat.

Opriți serviciul MSSQL. Deschideți un prompt de comandă folosind comanda Executare ca administrator. Accesați folderul în care este stocat fișierul SQL Server EXE; Valoarea implicită pentru SQL Server 2014 este „C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn”. Rulați următoarea comandă: „sqlservr.exe -m”. Aceasta va porni SQL Server în modul utilizator unic. După ce părăsiți acel prompt de comandă, deschideți altul, repetați pașii 2 și 3. În a doua fereastră de linie de comandă, rulați „SQLCMD -S Server_Name\Instance_Name” În acea fereastră, rulați următoarele rânduri, apăsând Enter după fiecare: 1

CREATE LOGIN [domainname\username] DIN WINDOWS 2 GO 3 SP_ADDSRVROLEMEMBER „LOGIN_NAME”, „SYSADMIN” 4 GO Utilizați CTRL + C pentru a încheia ambele procese în ferestrele promptului de comandă; vi se va solicita să apăsați Y pentru a încheia procesul SQL Server.

Reporniți serviciul MSSQL. Asta este! Acum vă puteți conecta folosind datele de conectare online.



 


Citire:



De ce nu se redă muzica pe VKontakte?

De ce nu se redă muzica pe VKontakte?

Verificați starea conexiunii la internet. Uneori poate fi întrerupt în cel mai neașteptat mod, ceea ce trece neobservat de utilizator....

Cum să măriți dimensiunea unității C în detrimentul unității D fără a pierde date

Cum să măriți dimensiunea unității C în detrimentul unității D fără a pierde date

Bună ziua. Majoritatea oamenilor cumpără computere într-un ansamblu gata făcut, adică sistemul, toate componentele și componentele computerului sunt instalate pe el...

Cauzele defecțiunilor de pe placa de bază Dacă chipsetul de pe placa de bază se arde

Cauzele defecțiunilor de pe placa de bază Dacă chipsetul de pe placa de bază se arde

Simptome și defecțiuni ale plăcii de bază.

Utilizarea stilurilor în Excel Cum să vă creați propriul stil nou

Utilizarea stilurilor în Excel Cum să vă creați propriul stil nou

În acest articol voi vorbi despre principalele defecțiuni ale plăcii de bază și despre simptomele acestora. La diagnosticarea...

Dacă utilizați în mod constant aceleași opțiuni pentru a formata celulele foii de lucru din foile de calcul, ar putea fi o idee bună să creați un stil de formatare... imagine-alimentare