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.

Sémaengedélyek megadása

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

  • Akkor is használjon szögletes zárójelet, ha a séma vagy a felhasználónév speciális karakterekkel rendelkezik. pl. .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • Nem működik ' az Azure-ban, van ötlet miért? (a parancsok működnek, de megjelenik az SSMS, és azt mondja, hogy " te nem vagy a Db tulajdonos .. bla bla bla. Lehet, hogy nem tudod elmenteni a táblát " és bizonyosan ' t (egy ALL-et adott az adatbázisnak (engedélyeket mutat ' adatbázis ', ' < db név > ', TheUserId, ' Tábla létrehozása ' és GRANT ') Van még valami mágia, amire szükség van? Vagy az Azure-ot csak a Dbo használhatja?

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 

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük