Sono molto verde quando si tratta del mondo della gestione dei permessi del database in SQL Server.

Facciamo un esempio semplice.

Supponi che laccount “admin” sia il proprietario degli schemi A, B e C.

Cè un altro account “minion” di cui vuoi avere pieni diritti (aggiorna / elimina / inserisci / seleziona / altera) su qualsiasi oggetto (tabella / vista) creato negli schemi A, B e C.

È possibile? O devi eseguire una dichiarazione di concessione ogni volta che aggiungi una tabella / vista sotto questi schemi? (mi sembra un po sciocco).

Risposta

Puoi GRANT autorizzazioni dello schema valide per tutto ciò che esiste e per tutto ciò che esisterà in quello schema.

Concedi i permessi dello schema

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

Inoltre, se desideri negare i permessi su un determinato oggetto allinterno di quello schema, puoi farlo.

Negare le autorizzazioni per gli oggetti

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

Commenti

  • Utilizza anche parentesi quadre se lo schema o il nome utente contiene caratteri speciali. es. .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • ' t funziona in Azure, qualche idea del perché? (i comandi funzionano, ma SSMS viene visualizzato e dice " non sei il proprietario del database .. blah blah blah. Potresti non essere in grado di salvare la tabella " e abbastanza sicuro, puoi ' t (ha concesso TUTTI al database (mostra le autorizzazioni ' Database ', ' < db name > ', TheUserId, ' Crea tabella ' e state_desc di ' GRANT ') È necessaria qualche altra magia? O Azure può essere utilizzato solo dal Dbo?

Risposta

Per semplificare ulteriormente, puoi utilizzare i ruoli per svolgere il lavoro che stai cercando.

Una volta assegnato autorizzazioni al ruolo, puoi semplicemente aggiungere utenti al ruolo, in questo modo non devi gestire le autorizzazioni per i singoli utenti. Gli utenti ereditano le autorizzazioni concesse al ruolo.

Di seguito è riportato un esempio per iniziare:

 -- 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 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *