Sdílet prostřednictvím


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 .

Plakát s oprávněními zabezpečení APS APS

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