Oprávnění: GRANT, DENY, REVOKE
Platí pro:Azure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod SQL ve službě Microsoft FabricWarehouse v Microsoft Fabric
Pomocí příkazů GRANT a DENY můžete objektu zabezpečení (přihlášení, uživateli databáze nebo databázové roli) udělit nebo odepřít oprávnění (například UPDATE) k zabezpečitelnému objektu zabezpečení (například databázi, tabulce, zobrazení atd.). Pomocí funkce REVOKE odeberte udělení nebo odepření 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 odepřena, zadejte dotaz na zobrazení sys.server_permissions a sys.database_permissions. Oprávnění, která nejsou objektu zabezpečení explicitně udělena nebo odepřena, mohou být zděděna členstvím v roli, která má oprávnění. 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 explicitně odepře objektu zabezpečení, aby měl jedno nebo více oprávnění.
Funkce REVOKE odebere stávající oprávnění GRANT nebo DENY .
Konvence syntaxe jazyka Transact-SQL
Syntaxe
-- 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í.
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ého typu. Může to být PŘIHLÁŠENÍ, DATABÁZE, OBJEKT, SCHÉMA, ROLE nebo UŽIVATEL. Oprávnění lze udělit také class_typeSERVER, ale server není pro tato oprávnění určen. DATABÁZE není zadána, pokud oprávnění obsahuje slovo DATABASE (například ALTER ANY DATABASE). Pokud není zadána žádná class_type a typ oprávnění není omezen na server nebo třídu databáze, předpokládá se, že třída je OBJECT.
Zabezpečený
Název přihlášení, databáze, tabulky, zobrazení, schématu, procedury, role nebo uživatele, kterému 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 konvencích syntaxe jazyka Transact-SQL.
OBJEKT ZABEZPEČENÍ [ ,... n ]
Jednomu nebo více objektům zabezpečení, kterým jsou udělena, odepřena nebo odvolaná oprávnění. Objekt zabezpečení je název přihlašovacího jména, uživatele databáze nebo databázové role.
FROM instanční objekt [ ,... n ]
Jeden nebo více objektů zabezpečení, ze které se mají oprávnění odvolat. Objekt zabezpečení je název přihlašovacího jména, uživatele databáze nebo databázové role. PŘÍKAZ FROM lze použít pouze s příkazem REVOKE . To lze použít s GRANT, DENY, nebo REVOKE.
S MOŽNOSTÍ GRANTU
Označuje, že příjemce, kterému bylo uděleno oprávnění, bude mít také možnost udělit zadaná oprávnění jiným objektům zabezpečení.
KASKÁDY
Označuje, že oprávnění bylo odepřeno nebo odvoláno zadanému objektu zabezpečení a všem ostatním objektům zabezpečení, kterým objekt zabezpečení udělil oprávnění. Vyžaduje se, pokud má objekt zabezpečení oprávnění s MOŽNOSTÍ GRANT.
MOŽNOST GRANT 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 GRANT , zruší se samotné oprávnění.
Oprávnění
Chcete-li udělit oprávnění, musí mít grant buď samotné oprávnění s MOŽNOSTÍ WITH GRANT, nebo musí mít vyšší oprávnění, které implikuje 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 na zabezpečitelné můžou udělit oprávnění k této zabezpečitelné. Členové db_owner a db_securityadmin pevných databázových rolí můžou udělit jakákoli oprávnění v databázi.
Obecné poznámky
Odepření nebo odvolání oprávnění objektu zabezpečení neovlivní požadavky, které prošly autorizací a jsou aktuálně spuštěné. Pokud chcete přístup omezit okamžitě, musíte zrušit aktivní požadavky nebo ukončit aktuální relace.
Poznámka
Většina pevných rolí serveru není v této verzi k dispozici. Místo toho použijte role databáze definované uživatelem. Přihlášení se nedají přidat do pevné role serveru sysadmin . Udělení oprávnění CONTROL SERVER se blíží členství v pevné roli serveru správce systému .
Některé příkazy vyžadují více oprávnění. Například vytvoření tabulky vyžaduje oprávnění CREATE TABLE v databázi a oprávnění ALTER SCHEMA pro tabulku, která bude tabulku obsahovat.
PdW (Analytics Platform System) někdy spouští uložené procedury za účelem distribuce akcí uživatele 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>;
se nezdaří.) Jako alternativní řešení můžete odepřít oprávnění ke spuštění uživatelským schématům nebo konkrétním objektům (procedurám).
Ve službě Microsoft Fabric v současné době nelze příkaz CREATE USER explicitně spustit. Při spuštění příkazu GRANT nebo DENY se uživatel vytvoří automaticky.
V Microsoft Fabric se oprávnění na úrovni serveru nedají spravovat.
Implicitní a explicitní oprávnění
Explicitní oprávnění je oprávnění GRANT nebo DENY udělené objektu zabezpečení příkazem GRANT nebo DENY.
Implicitní oprávnění je oprávnění UDĚLIT nebo ODEPŘÍT, které objekt zabezpečení (přihlášení, uživatel nebo role databáze) zdědil z jiné databázové role.
Implicitní oprávnění může být také zděděno z krychlujícího nebo nadřazeného oprávnění. Například oprávnění UPDATE u tabulky lze zdědit tak, že budete mít oprávnění UPDATE ke schématu, které obsahuje tabulku, nebo oprávnění CONTROL k tabulce.
Řetězení vlastnictví
Když více databázových objektů přistupuje k sobě postupně, sekvence se označuje jako řetěz. I když takové řetězy neexistují nezávisle, když SQL Server prochází propojení v řetězu, SQL Server vyhodnocuje oprávnění k základním objektům jinak, než kdyby přistupoval k objektům samostatně. Řetězení vlastnictví má důležité důsledky pro správu zabezpečení. Další informace o řetězech vlastnictví najdete v tématech Řetězce vlastnictví a Kurz: Řetězy vlastnictví a přepínání kontextu.
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
ŘÍDICÍ SERVER
SPRÁVA HROMADNÝCH OPERACÍ
ZMĚNIT VŠECHNA PŘIPOJENÍ
ALTER ANY DATABASE
VYTVOŘENÍ LIBOVOLNÉ DATABÁZE
ZMĚNIT JAKÝKOLI EXTERNÍ ZDROJ DAT
ZMĚNIT LIBOVOLNÝ FORMÁT EXTERNÍHO SOUBORU
ZMĚNIT JAKÉKOLI PŘIHLÁŠENÍ
ALTER SERVER STATE
PŘIPOJENÍ SQL
ZOBRAZIT LIBOVOLNOU 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
ZOSOBNIT PŘI PŘIHLÁŠENÍ
DEFINICE ZOBRAZENÍ
Oprávnění na úrovni databáze
Oprávnění na úrovni databáze je možné udělit, odepřít a odvolat uživatelům databáze a databázovým rolím definovaným uživatelem.
Oprávnění, která platí pro všechny databázové třídy
OVLÁDACÍ PRVEK
ALTER
DEFINICE ZOBRAZENÍ
Oprávnění, která platí pro všechny databázové třídy s výjimkou uživatelů
- PŘEVZÍT VLASTNICTVÍ
Oprávnění, která platí pouze pro databáze
ALTER ANY DATABASE
ALTER ON DATABASE
ALTER ANY DATASPACE
ZMĚNIT LIBOVOLNOU ROLI
ZMĚNIT JAKÉKOLI SCHÉMA
ZMĚNIT LIBOVOLNÉHO UŽIVATELE
ZÁLOHOVÁNÍ DATABÁZE
PŘIPOJENÍ K DATABÁZI
CREATE PROCEDURE
VYTVOŘENÍ ROLE
VYTVOŘENÍ SCHÉMATU
CREATE TABLE
CREATE VIEW
SHOWPLAN
Oprávnění, která platí jenom pro uživatele
- ZOSOBNIT
Oprávnění, která platí pro databáze, schémata a objekty
ALTER
DELETE
PROVÉST
INSERT
SELECT
UPDATE
REFERENCE
Definici jednotlivých typů oprávnění najdete v tématu Oprávnění (databázový stroj).
Graf oprávnění
Na tomto plakátu jsou graficky znázorněna všechna oprávnění. Je to nejjednodušší způsob, jak zobrazit vnořenou hierarchii oprávnění. Například oprávnění ALTER ON LOGIN může být uděleno samo o sobě, ale je také zahrnuto, pokud je přihlášení uděleno oprávnění CONTROL pro toto přihlášení nebo pokud je přihlášení uděleno oprávnění ALTER ANY LOGIN .
Výchozí oprávnění
Následující seznam popisuje výchozí oprávnění:
Při vytvoření přihlášení pomocí příkazu CREATE LOGIN obdrží nové přihlášení oprávnění CONNECT SQL .
Všechna přihlášení jsou členy role veřejného serveru a nelze je odebrat z veřejného.
Když je uživatel databáze vytvořen pomocí oprávnění CREATE USER , uživatel databáze obdrží v databázi oprávnění CONNECT .
Všechny objekty zabezpečení, včetně veřejné role, 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. Vlastnická oprávnění nelze změnit a nejsou viditelná jako explicitní oprávnění. Příkazy GRANT, DENY a REVOKE nemají žádný vliv na vlastníky.
Přihlášení sa má všechna oprávnění k zařízení. Podobně jako u vlastnických oprávnění se oprávnění sa nedají změnit a nezobrazují se jako explicitní oprávnění. Příkazy GRANT, DENY a REVOKE nemají žádný vliv na přihlášení sa . 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 and Analytics Platform System (PDW)
A. Udělení oprávnění k přihlášení na úrovni serveru
Následující dva příkazy udělují oprávnění k přihlášení na úrovni serveru.
GRANT CONTROL SERVER TO [Ted];
GRANT ALTER ANY DATABASE TO Mary;
B. Udělení oprávnění k přihlášení na úrovni serveru
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ělí uživateli oprávnění na úrovni databáze k objektu zabezpečení databáze (jinému uživateli).
GRANT VIEW DEFINITION ON USER::[Ted] TO Mary;
D. Udělení, odepření a odvolání oprávnění ke schématu
Následující příkaz GRANT uděluje Yuenu 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 DENY zabrání Yuenu vybrat data z jakékoli 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 odebere oprávnění ODEPŘÍT . Teď jsou Yuenova explicitní oprávnění neutrální. Yuen může být schopen vybrat data z libovolné tabulky prostřednictvím nějakého jiného implicitního oprávnění, jako je členství v roli.
REVOKE SELECT ON SCHEMA::dbo TO [Yuen];
E. Předvedení volitelné klauzule OBJECT::
Protože OBJECT je výchozí třída pro příkaz oprávnění, následující dva příkazy jsou stejné. Klauzule OBJECT:: je volitelná.
GRANT UPDATE ON OBJECT::dbo.StatusTable TO [Ted];
GRANT UPDATE ON dbo.StatusTable TO [Ted];