Oprávnění: GRANT, ODEPŘÍT, ODVOLAT
Pomocí příkazů GRANT a ODEPŘÍT udělte nebo odepřete oprávnění (například UPDATE) k zabezpečitelnému objektu zabezpečení (jako je databáze, tabulka, zobrazení atd.) objektu zabezpečení (přihlášení, uživatel databáze nebo role databáze). Pomocí ODVOLAT odeberte udělení nebo zamítnutí oprávnění.
Oprávnění na úrovni serveru se použijí pro přihlášení. Oprávnění na úrovni databáze se použijí pro uživatele databáze a databázové role.
Pokud chcete zjistit, jaká oprávnění byla udělena a zamítnuta, zadejte dotaz na zobrazení sys.server_permissions a sys.database_permissions. Oprávnění, která nejsou explicitně udělena nebo odepřena objektu zabezpečení, mohou být zděděna členstvím v roli s oprávněními. Oprávnění pevných databázových rolí nelze změnit a nezobrazují se v zobrazeních sys.server_permissions a sys.database_permissions.
GRANT explicitně uděluje jedno nebo více oprávnění.
odepřít objektu zabezpečení explicitně odepře, aby měl jeden nebo více oprávnění.
ODVOLÁNÍ odebere stávající oprávnění GRANT nebo ODEPŘÍT.
Syntax
-- Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
GRANT
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ WITH GRANT OPTION ]
[;]
DENY
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ CASCADE ]
[;]
REVOKE
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
[ FROM | TO ] principal [ ,...n ]
[ CASCADE ]
[;]
<permission> ::=
{ see the tables below }
<class_type> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Argumenty
<oprávnění>[ ,...n ]
Jedno nebo více oprávnění k udělení, zamítnutí nebo odvolání přístupu.
ON [ <class_type> :: ] zabezpečitelné Klauzule ON popisuje zabezpečitelný parametr, pro který se mají udělit, odepřít nebo odvolat oprávnění.
<class_type> Typ třídy zabezpečitelné. Může to být
zabezpečitelné
Název přihlášení, databáze, tabulky, zobrazení, schématu, procedury, role nebo uživatele, u kterého chcete udělit, odepřít nebo odvolat oprávnění. Název objektu lze zadat pomocí třídílných pravidel pojmenování, která jsou popsána v Transact-SQL konvence syntaxe.
TO principal [ ,...n ]
Jeden nebo více objektů zabezpečení udělených, odepřených nebo odvolaných oprávnění. Objekt zabezpečení je název přihlašovací role, uživatele databáze nebo databáze.
instanční [ ,...n ]
Jeden nebo více objektů zabezpečení pro odvolání oprávnění. Objekt zabezpečení je název přihlašovací role, uživatele databáze nebo databáze.
FROM lze použít pouze s příkazem REVOKE.
lze použít s GRANT, ODEPŘÍTnebo ODVOLAT.
S MOŽNOSTÍ UDĚLENÍ
Označuje, že příjemce bude mít také možnost udělit zadané oprávnění jiným objektům zabezpečení.
KASKÁDA
Označuje, že oprávnění je odepřeno nebo odvoláno na zadaný objekt zabezpečení a na všechny ostatní objekty zabezpečení, ke kterým objekt zabezpečení udělil oprávnění. Vyžaduje se, pokud má objekt zabezpečení oprávnění s GRANT OPTION.
MOŽNOST UDĚLENÍ PRO
Označuje, že možnost udělit zadané oprávnění bude odvolána. To se vyžaduje při použití argumentu CASCADE.
Důležitý
Pokud má objekt zabezpečení zadané oprávnění bez možnosti UDĚLIT, oprávnění samotné se odvolá.
Dovolení
Chcete-li udělit oprávnění, musí mít grantor buď samotné oprávnění s WITH GRANT OPTION, nebo musí mít vyšší oprávnění, které znamená udělení oprávnění. Vlastníci objektů můžou udělit oprávnění k objektům, které vlastní. Objekty zabezpečení s oprávněním CONTROL pro zabezpečitelné můžou udělit oprávnění k danému zabezpečitelnému. Členové db_owner a db_securityadmin pevných databázových rolí mohou udělit jakékoli oprávnění v databázi.
Obecné poznámky
Odepření nebo odvolání oprávnění k objektu zabezpečení neovlivní požadavky, které prošly autorizací a které jsou aktuálně spuštěné. Pokud chcete omezit přístup okamžitě, musíte zrušit aktivní žádosti nebo ukončit aktuální relace.
Poznámka
Většina pevných rolí serveru není v této verzi dostupná. Místo toho použijte uživatelsky definované databázové role. Přihlášení nelze přidat do správce systému pevné role serveru. Udělení oprávnění CONTROL SERVER se blíží členství v sysadmin pevné roli serveru.
Některé příkazy vyžadují více oprávnění. Chcete-li například vytvořit tabulku, vyžaduje oprávnění CREATE TABLE v databázi a oprávnění ALTER SCHEMA pro tabulku, která bude obsahovat tabulku.
Systém PDW (Analytics Platform System) někdy spouští uložené procedury, které distribuují akce uživatelů do výpočetních uzlů. Proto nelze odepřít oprávnění ke spuštění pro celou databázi. (Například DENY EXECUTE ON DATABASE::<name> TO <user>;
selže.) Jako alternativní řešení zamítáte oprávnění ke spuštění uživatelským schématům nebo konkrétním objektům (procedurám).
V Microsoft Fabricu nelze v současné době explicitně spustit příkaz CREATE USER. Po spuštění grantu nebo zamítnutí se uživatel vytvoří automaticky.
V Microsoft Fabric nejsou oprávnění na úrovni serveru spravovatelná.
Implicitní a explicitní oprávnění
explicitní oprávnění je oprávnění GRANT nebo ODEPŘÍT udělené objektu zabezpečení GRANT nebo odepřít.
implicitní oprávnění je UDĚLIT nebo odepřít oprávnění, které objekt zabezpečení (přihlašovací jméno, uživatel nebo role databáze) zdědil z jiné databázové role.
Implicitní oprávnění lze také zdědit z krytí nebo nadřazeného oprávnění. Například oprávnění UPDATE v tabulce lze dědit tak, že má oprávnění UPDATE schématu, které obsahuje tabulku, nebo OPRÁVNĚNÍ CONTROL v tabulce.
Řetězení vlastnictví
Pokud se k sobě postupně přistupuje více databázových objektů, je posloupnost známá jako řetěz . I když tyto řetězy neexistují nezávisle, když SQL Server prochází propojeními v řetězu, SQL Server vyhodnotí oprávnění k základním objektům jinak, než kdyby k objektům přistupoval samostatně. Řetězení vlastnictví má důležité důsledky pro správu zabezpečení. Další informace o řetězech vlastnictví naleznete v tématu Řetězy vlastnictví a Kurz: Řetězy vlastnictví a kontextové přepínání.
Seznam oprávnění
Oprávnění na úrovni serveru
Oprávnění na úrovni serveru je možné udělit, odepřít a odvolat z přihlášení.
oprávnění , která platí pro servery
CONTROL SERVER
SPRÁVA HROMADNÝCH OPERACÍ
ALTER ANY CONNECTION
ALTER ANY DATABASE
VYTVOŘENÍ JAKÉKOLI DATABÁZE
ALTER ANY EXTERNAL DATA SOURCE
ALTER ANY EXTERNAL FILE FORMAT
ALTER ANY LOGIN
ALTER SERVER STATE
CONNECT SQL
ZOBRAZIT JAKOUKOLI DEFINICI
ZOBRAZIT LIBOVOLNOU DATABÁZI
ZOBRAZIT STAV SERVERU
oprávnění , která platí pro přihlášení
ŘÍZENÍ PŘI PŘIHLÁŠENÍ
ALTER ON LOGIN
ZOSOBNĚNÍ PŘI PŘIHLÁŠENÍ
ZOBRAZIT DEFINICI
Oprávnění na úrovni databáze
Oprávnění na úrovni databáze je možné udělit, odepřít a odvolat od uživatelů databáze a uživatelsky definovaných databázových rolí.
oprávnění , která platí pro všechny databázové třídy
ŘÍZENÍ
PROMĚNIT
ZOBRAZIT DEFINICI
Oprávnění, která platí pro všechny třídy databáze s výjimkou uživatelů
- PŘEVZÍT VLASTNICTVÍ
oprávnění , která se vztahují pouze na databáze
ALTER ANY DATABASE
ALTER ON DATABASE
ALTER ANY DATASPACE
ALTER ANY ROLE
ALTER ANY SCHEMA
ALTER ANY USER
ZÁLOHOVAT DATABÁZI
PŘIPOJENÍ K DATABÁZI
CREATE PROCEDURE
VYTVOŘENÍ ROLE
VYTVOŘENÍ SCHÉMATU
CREATE TABLE
VYTVOŘIT ZOBRAZENÍ
SHOWPLAN
oprávnění , která platí jenom pro uživatele
- ZOSOBŇOVAT
Oprávnění, která platí pro databáze, schémata a objekty
PROMĚNIT
VYMAZAT
PROVÉST
VLOŽIT
VYBRAT
AKTUALIZACE
ODKAZY
Definice každého typu oprávnění naleznete v tématu Oprávnění (databázový stroj).
Výchozí oprávnění
Následující seznam popisuje výchozí oprávnění:
Když se vytvoří přihlášení pomocí příkazu CREATE LOGIN, nové přihlášení obdrží oprávnění CONNECT SQL.
Všechna přihlášení jsou členy role serveru veřejné a nelze je odebrat z veřejné.
Když je uživatel databáze vytvořen pomocí oprávnění CREATE USER, uživatel databáze obdrží oprávnění CONNECT v databázi.
Všechny objekty zabezpečení, včetně role veřejné, nemají ve výchozím nastavení žádná explicitní ani implicitní oprávnění.
Když se přihlášení nebo uživatel stane vlastníkem databáze nebo objektu, má přihlášení nebo uživatel vždy všechna oprávnění k databázi nebo objektu. Oprávnění k vlastnictví nelze změnit a nejsou viditelná jako explicitní oprávnění. Příkazy GRANT, ODEPŘÍTa REVOKE nemají žádný vliv na vlastníky.
Přihlášení sa má na zařízení všechna oprávnění. Podobně jako u oprávnění k vlastnictví nelze změnit oprávnění
sa a nejsou viditelná jako explicitní oprávnění. Příkazy GRANT, ODEPŘÍTa REVOKE nemají žádný vliv na přihlášení s a. Přihlášení sa nelze přejmenovat. Příkaz USE nevyžaduje oprávnění. Všechny objekty zabezpečení můžou spustit příkaz USE pro libovolnou databázi.
Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)
A. Udělení oprávnění na úrovni serveru pro přihlášení
Následující dva příkazy udělují přihlašovacímu účtu oprávnění na úrovni serveru.
GRANT CONTROL SERVER TO [Ted];
GRANT ALTER ANY DATABASE TO Mary;
B. Udělení oprávnění na úrovni serveru pro přihlášení
Následující příklad uděluje oprávnění na úrovni serveru pro přihlášení k objektu zabezpečení serveru (jiné přihlášení).
GRANT VIEW DEFINITION ON LOGIN::Ted TO Mary;
C. Udělení oprávnění na úrovni databáze uživateli
Následující příklad uděluje uživateli oprávnění na úrovni databáze k instančnímu objektu (jinému uživateli).
GRANT VIEW DEFINITION ON USER::[Ted] TO Mary;
D. Udělení, zamítnutí a odvolání oprávnění schématu
Následující příkazu GRANT uděluje Yuen možnost vybrat data z libovolné tabulky nebo zobrazení ve schématu dbo.
GRANT SELECT ON SCHEMA::dbo TO [Yuen];
Následující příkaz ODEPŘÍT brání Yuenu v výběru dat z libovolné tabulky nebo zobrazení ve schématu dbo. Yuen nemůže číst data, i když má oprávnění jiným způsobem, například prostřednictvím členství v roli.
DENY SELECT ON SCHEMA::dbo TO [Yuen];
Následující příkaz
REVOKE SELECT ON SCHEMA::dbo TO [Yuen];
E. Ukázka volitelné klauzule OBJECT::
Vzhledem k tomu, že OBJECT je výchozí třídou pro příkaz oprávnění, jsou následující dva příkazy stejné. Klauzule OBJECT:: je volitelná.
GRANT UPDATE ON OBJECT::dbo.StatusTable TO [Ted];
GRANT UPDATE ON dbo.StatusTable TO [Ted];