Ik “ben erg groen als het gaat om de wereld van het beheer van databasemachtigingen in SQL Server.

Laten we een voorbeeld houden simpel.

Zeg dat account “admin” de eigenaar is van schemas A, B en C.

Er is een ander account “minion” waarvan je de volledige rechten wilt hebben (update / delete / insert / select / alter) op elk object (tabel / view) gemaakt onder schemas A, B en C.

Is dit mogelijk? Of moet u elke keer dat u een tabel / view toevoegt onder deze schemas een subsidieverklaring uitvoeren? (lijkt me een beetje dom).

Antwoord

Je kunt GRANT schema-machtigingen die effectief zijn voor alles wat bestaat en alles wat zal bestaan in dat schema.

Schema-machtigingen verlenen

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

Verder, als u vervolgens machtigingen voor een bepaalde object binnen dat schema, kunt u dit doen.

Objectrechten weigeren

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

Reacties

  • Gebruik ook vierkante haken als het schema of de gebruikersnaam speciale karakters heeft. bijv. .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • Werkt ' niet in Azure, enig idee waarom? (de commandos werken, maar SSMS komt naar voren en zegt " je bent niet de Db-eigenaar .. blah blah blah. Je kunt de tabel misschien niet opslaan " en ja hoor, je kunt ' t (heb ALLES aan de database verleend (toont machtigingen ' Database ', ' < db-naam > ', TheUserId, ' Tabel maken ', en state_desc van ' GRANT ') Is er wat andere magie nodig? Of is Azure alleen bruikbaar door de Dbo?

Answer

Om een beetje verder te vereenvoudigen, kunt u rollen gebruiken om het werk te doen waarnaar u op zoek bent.

Zodra u machtigingen voor de rol, u kunt gewoon gebruikers aan de rol toevoegen, zodat u geen machtigingen voor individuele gebruikers hoeft te beheren. De gebruikers nemen de rechten over die aan de rol zijn toegekend.

Hieronder staat een voorbeeld om u op weg te helpen:

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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *