Jsem velmi zelený, pokud jde o svět správy databázových oprávnění v SQL Sever.

Pojďme si ponechat příklad jednoduché.

Řekněme, že účet „admin“ je vlastníkem schémat A, B a C.

Existuje další účet „minion“, ke kterému chcete mít úplná práva (aktualizace / mazání) / insert / select / alter) na libovolném objektu (tabulce / pohledu) vytvořeném ve schématech A, B a C.

Je to možné? Nebo musíte provést grantové prohlášení pokaždé, když přidáte tabulku / pohled v rámci těchto schémat? (zdá se mi trochu hloupý).

Odpovědět

Můžete GRANT oprávnění schématu, která jsou účinná pro všechno existující a vše, co v tomto schématu bude .

Udělit oprávnění schématu

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

Dále, pokud chcete určitému uživateli odepřít oprávnění objekt v rámci tohoto schématu, můžete to udělat.

Odepření oprávnění objektu

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

Komentáře

  • Také použijte hranaté závorky, pokud má schéma nebo uživatelské jméno speciální znaky. např. .... SCHEMA :: [schema] TO [company-name/joshua.duxbury]
  • Nepracuje ' v Azure, máte ponětí proč? (příkazy fungují, ale SSMS se objeví a řekne ", že nejste vlastníkem Db .. bla bla bla. Možná nebudete moci uložit tabulku " a opravdu můžete ' t (udělit databázi VŠECHNO (zobrazuje oprávnění ' databáze ', ' < db name > ', TheUserId, ' Vytvořit tabulku ' a state_desc z ' GRANT ') Je potřeba nějaké další kouzlo? Nebo je Azure použitelný pouze pro Dbo?

Odpověď

Chcete-li ještě něco zjednodušit, můžete pomocí rolí provést práci, kterou hledáte.

Jakmile přiřadíte oprávnění k roli, stačí do této role přidat uživatele. Tímto způsobem nebudete muset spravovat oprávnění pro jednotlivé uživatele. Uživatelé dědí oprávnění udělená roli.

Níže je uveden příklad, jak začít:

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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *