it-swarm.it

Come posso assegnare a un intero gruppo di Active Directory l'accesso alla sicurezza in SQL Server 2008?

Vorrei utilizzare la sicurezza integrata con la mia applicazione interna che è tutto su un dominio. Sfortunatamente, non sono mai stato in grado di farlo funzionare bene. Vorrei assegnare a un intero gruppo Exchange (Active Directory) un ruolo in SQL Server per l'accesso in lettura/scrittura a determinate tabelle. In questo modo non dovrei creare un operatore ogni volta che qualcuno viene assunto o eliminare un operatore ogni volta che qualcuno viene licenziato. È possibile? Quali passi prenderei per fare questo?

40
  • Imposta il gruppo AD come login. E "login" indica l'accesso a livello di server non il concetto AD di utente/accesso. In SQL Server, si tratta di un'entità a livello di server
  • Crea un utente mappato in. Non dovresti davvero autorizzare un utente direttamente sulle tabelle. E "utente" indica l'utente del database non il concetto di utente AD: in SQL Server, si tratta di un "principal a livello di database"
  • Aggiungi utente al ruolo (anche "principale a livello di database")
  • Autorizzazioni GRANT per i ruoli nelle tabelle (una tabella o proc ecc è un "sicuro")

Script di esempio

USE master;
GO
CREATE LOGIN [MYDOMAIN\APPLICATION SUPPORT] FROM WINDOWS;
GO
USE mydb;
GO
CREATE USER [MYDOMAIN\APPLICATION SUPPORT] FROM LOGIN [MYDOMAIN\APPLICATION SUPPORT];
GO
CREATE ROLE rSupport;
GO
EXEC sp_addrolemember 'rSupport', 'MYDOMAIN\APPLICATION SUPPORT';
GO
GRANT SELECT, INSERT,UPDATE, etc ON Mytable TO rSupport;
GO

sp_addrolemember è obsoleto a partire da SQL Server 2012, dove ALTER ROLE dovrebbe essere usato invece.

50
gbn

Da marc_s risposta "Come aggiungere un gruppo utenti di Active Directory come login in SQL Server" :

In SQL Server Management Studio, seleziona Object Explorer > (your server) > Security > Logins e fai clic con il pulsante destro del mouse su New Login:

enter image description here

Quindi nella finestra di dialogo che appare, scegli i tipi di oggetti che vuoi vedere (Groups è disabilitato di default - controlla!) E scegli la posizione in cui vuoi cercare i tuoi oggetti (ad esempio usa Entire Directory) E poi trova il tuo gruppo AD.

enter image description here

Ora disponi di un normale accesso a SQL Server, proprio come quando ne crei uno per un singolo utente AD. Dai a quel nuovo login le autorizzazioni sui database di cui ha bisogno, e il gioco è fatto!

Qualsiasi membro di quel gruppo AD ora può accedere a SQL Server e utilizzare il database.

5
Even Mien

Concedere le autorizzazioni all'interno di SQL Server a un gruppo AD è relativamente semplice. Può essere fatto tramite T-SQL o Management Studio.

Ad esempio, se si dispone di un gruppo AD chiamato MYDOMAIN\APPLICATION SUPPORT, creare l'accesso a livello di server, quindi utilizzare i mapping ai singoli database per fornire autorizzazioni leggermente più granulari come il lettore di dati.

Idealmente, l'accesso a tutte le applicazioni dovrebbe avvenire tramite stored procedure *, pertanto è necessario eseguire solo le autorizzazioni per le stored procedure in quel database.

* Da un punto di vista della sicurezza, per consentire a un determinato utente di visualizzare alcuni dati specifici, è possibile creare una procedura e concedere all'utente eseguire l'autorizzazione per tale procedura e nient'altro. Consentire all'utente di interrogare direttamente significherebbe dare selezionare l'autorizzazione su tutte le tabelle coinvolte. È anche più semplice lavorare con le procedure e più facile eseguire il debug.

Le procedure memorizzate eliminano l'accesso alla tabella e ne limitano l'accesso. Per i tipi DBA, è come "fammi vedere tutte le variabili dell'istanza: non voglio usare metodi, getter o setter".

4
Peter Schofield

Se l'utente è membro di un DOMAIN\SecurityGroup che dispone dell'autorizzazione Sysadmin in SQL, verrà utilizzato durante l'accesso ai database. Altrimenti è necessario esaminare quali DOMAIN\SecurityGroup (s) hanno dato l'autorizzazione in ciascun database. Se l'utente è un membro di 2 SecurityGroups, con SecGroupA con autorizzazione di selezione e SecGroupB con autorizzazione di inserimento, l'utente può selezionare e inserire.

1
Piyush Agrawal