Nagyon zöld vagyok, amikor az SQL Sever adatbázis-engedélyeinek kezeléséről van szó.
Hagyjunk példát egyszerű.
Mondja, hogy az “admin” fiók tulajdonosa az A, B és C sémáknak.
Van egy másik fiók “minion”, amelyre teljes jogokat szeretne (frissítés / törlés / insert / select / alter) bármely objektumon (táblázat / nézet), amelyet az A, B és C séma alapján hoztak létre.
Ez lehetséges? Vagy végre kell hajtania egy támogatási nyilatkozatot, valahányszor táblázatot / nézetet ad hozzá ezekhez a sémákhoz? (nekem kissé butának tűnik).
Válasz
GRANT
séma engedélyek, amelyek minden létező és minden, ami létezik abban a sémában, érvényesek.
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: <schema> TO <user>;
Ezen felül, ha meg akarja tagadni az engedélyeket egy bizonyos objektumot a sémában, megteheti.
Objektumengedélyek megtagadása
DENY INSERT ON OBJECT::<schema>.<object> TO <user>;
Megjegyzések
Válasz
A tovább egyszerűsítéshez szerepeket használhat a kívánt munka elvégzéséhez.
Miután hozzárendelte engedélyeket a szerepkörhöz, egyszerűen hozzáadhat felhasználókat a szerepkörhöz. Így nem kell kezelnie az egyes felhasználók engedélyeit. A felhasználók öröklik a szerephez adott engedélyeket.
Az alábbiakban bemutatunk egy példát a kezdéshez:
-- 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
.... SCHEMA :: [schema] TO [company-name/joshua.duxbury]