GRANT (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Uděluje oprávnění k zabezpečitelnému objektu zabezpečení. Obecným konceptem je GRANT <some permission> ON <some object> TO <some user, login, or group>. Obecné informace o oprávněních naleznete v tématu Oprávnění (databázový stroj).

Transact-SQL konvence syntaxe

Syntax

Syntaxe pro SQL Server, Azure SQL Database a databázi SQL Fabric.

-- Simplified syntax for GRANT
GRANT { ALL [ PRIVILEGES ] }
      | permission [ ( column [ , ...n ] ) ] [ , ...n ]
      [ ON [ class :: ] securable ] TO principal [ , ...n ]
      [ WITH GRANT OPTION ] [ AS principal ]

Syntaxe pro Azure Synapse Analytics, paralelní datový sklad a sklad Microsoft Fabric.

GRANT
    <permission> [ , ...n ]
    [ ON [ <class_type> :: ] securable ]
    TO principal [ , ...n ]
    [ WITH GRANT OPTION ]
[;]

<permission> ::=
{ see the tables below }

<class_type> ::=
{
      LOGIN
    | DATABASE
    | OBJECT
    | ROLE
    | SCHEMA
    | USER
}

Arguments

ALL

Tato možnost je zastaralá a udržuje se pouze kvůli zpětné kompatibilitě. Neuděluje všechna možná oprávnění. Udělení ALL odpovídá udělení následujících oprávnění.

Securable Permissions
Database BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLEa CREATE VIEW
Skalární funkce EXECUTE a REFERENCES
Tabulková funkce DELETE, INSERT, REFERENCES, SELECTa UPDATE
Uložená procedura EXECUTE
Table DELETE, INSERT, REFERENCES, SELECTa UPDATE
View DELETE, INSERT, REFERENCES, SELECTa UPDATE

PRIVILEGES

Součástí je dodržování předpisů ISO. Nemění chování ALL.

permission

Název oprávnění. Platné mapování oprávnění na zabezpečitelné jsou popsány v následujících částech.

column

Určuje název sloupce v tabulce, u které se oprávnění udělují. Jsou vyžadovány závorky ( a ).

class

Určuje třídu zabezpečitelné, pro kterou se oprávnění uděluje. Je vyžadován kvalifikátor oboru ::.

securable

Určuje zabezpečitelný, pro který se oprávnění uděluje.

TO ředitel

Název objektu zabezpečení. Objekty zabezpečení, u kterých lze udělit oprávnění k zabezpečitelnému, se liší v závislosti na zabezpečitelném objektu. Platné kombinace najdete v následujících částech.

GRANT OPCE

Označuje, že příjemce bude mít také možnost udělit zadané oprávnění jiným objektům zabezpečení.

AS ředitel

Pomocí klauzule AS <principal> uveďte, že objekt zabezpečení zaznamenaný jako grantor oprávnění by měl být jiným objektem než osoba provádějící příkaz. Například předpokládáme, že Mary uživatele má principal_id12a Raul uživatele je hlavní 15. Mary spustí GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Nyní tabulka sys.database_permissions označuje, že grantor_principal_id byl 15 (Raul), i když příkaz skutečně spustil uživatel 12 (Mary).

Použití klauzule AS se obvykle nedoporučuje, pokud není nutné explicitně definovat řetěz oprávnění. Další informace najdete v tématu Souhrn algoritmu kontroly oprávnění.

Použití AS v tomto příkazu neznamená schopnost zosobnit jiného uživatele.

Remarks

Úplná syntaxe příkazu GRANT je složitá. Předchozí diagram syntaxe byl zjednodušen tak, aby upoutat pozornost na jeho strukturu. Kompletní syntaxe pro udělení oprávnění pro konkrétní zabezpečitelné je popsána v článcích uvedených dále v tomto článku.

Příkaz REVOKE lze použít k odebrání udělených oprávnění a příkaz DENY lze použít k tomu, aby objekt zabezpečení nemohl získat konkrétní oprávnění prostřednictvím GRANT.

Udělení oprávnění odebere DENY nebo REVOKE daného oprávnění k danému zabezpečitelnému. Pokud je stejné oprávnění odepřeno ve vyšším rozsahu, který obsahuje zabezpečitelné, má přednost DENY. Odvolání uděleného oprávnění ve vyšším rozsahu ale nemá přednost.

Oprávnění na úrovni databáze jsou udělena v rámci rozsahu zadané databáze. Pokud uživatel potřebuje oprávnění k objektům v jiné databázi, vytvořte uživatelský účet v jiné databázi nebo udělte uživatelskému účtu přístup k druhé databázi a aktuální databázi.

Caution

DENY na úrovni tabulky nemá přednost před GRANTna úrovni sloupce . Tato nekonzistence v hierarchii oprávnění byla zachována kvůli zpětné kompatibilitě. V budoucí verzi se odebere.

Systémová uložená procedura sp_helprotect hlásí oprávnění k zabezpečitelné úrovni databáze.

V Microsoft Fabric se CREATE USER momentálně nedají explicitně spustit. Při spuštění GRANT nebo DENY se uživatel vytvoří automaticky.

S GRANT MOŽNOSTÍ

GRANT ... WITH GRANT OPTION určuje, že objekt zabezpečení, který oprávnění přijímá, má možnost udělit zadané oprávnění jiným účtům zabezpečení. Pokud je objekt zabezpečení, který obdrží oprávnění, role nebo skupina Systému Windows, musí být klauzule AS použita, když je potřeba dále udělit oprávnění k objektu uživatelům, kteří nejsou členy skupiny nebo role. Vzhledem k tomu, že pouze uživatel, nikoli skupina nebo role, může spustit příkaz GRANT, musí konkrétní člen skupiny nebo role použít klauzuli AS k explicitní vyvolání členství role nebo skupiny při udělení oprávnění. Následující příklad ukazuje, jak se WITH GRANT OPTION používá při udělení role nebo skupině Windows.

-- Execute the following as a database owner
GRANT EXECUTE ON TestProc TO TesterRole WITH GRANT OPTION;
EXEC sp_addrolemember TesterRole, User1;

-- Execute the following as User1
-- The following fails because User1 does not have the permission as the User1
GRANT EXECUTE ON TestProc TO User2;

-- The following succeeds because User1 invokes the TesterRole membership
GRANT EXECUTE ON TestProc TO User2 AS TesterRole;

Graf oprávnění SQL Serveru

Plakátový graf všech oprávnění databázového stroje ve formátu PDF najdete v tématu https://aka.ms/sql-permissions-poster.

Permissions

Grantor (nebo objekt zabezpečení zadaný pomocí možnosti AS) musí mít buď oprávnění samotná s GRANT OPTION, nebo vyšší oprávnění, které znamená udělení oprávnění. Pokud používáte možnost AS, platí další požadavky. Podrobnosti najdete v článku o zabezpečitelném konkrétním článku.

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.

Udělení oprávnění , jako jsou členové pevné role správce systému , můžou udělit jakékoli oprávnění na jakémkoli zabezpečitelném serveru. Udělení oprávnění CONTROL k databázi, jako jsou členové db_owner pevné databázové role, můžou udělit jakékoli oprávnění k jakémukoli zabezpečitelnému v databázi. Udělení oprávnění CONTROL schématu může udělit jakékoli oprávnění k libovolnému objektu v rámci schématu.

Examples

V následující tabulce jsou uvedeny zabezpečitelné položky a články, které popisují syntaxi specifickou pro zabezpečitelnost.

Securable Syntaxe GRANT
Role aplikace GRANT Oprávnění k principálu databáze (Transact-SQL)
Assembly GRANT Povolení k sestavení (Transact-SQL)
Asymetrický klíč GRANT Asymetrická klíčová oprávnění (Transact-SQL)
Skupina dostupnosti GRANT Oprávnění skupiny dostupnosti (Transact-SQL)
Certificate GRANT Oprávnění certifikátů (Transact-SQL)
Contract GRANT Oprávnění služby Service Broker (Transact-SQL)
Database GRANT Oprávnění k databázi (Transact-SQL)
Přihlašovací údaje s vymezeným oborem databáze GRANT Databázové přihlašovací údaje (Transact-SQL)
Endpoint GRANT Oprávnění pro koncový bod (Transact-SQL)
Full-Text Katalog GRANT Full-Text Oprávnění (Transact-SQL)
Full-Text Stoplist GRANT Full-Text Oprávnění (Transact-SQL)
Function GRANT Oprávnění objektu (Transact-SQL)
Login GRANT Hlavní oprávnění serveru (Transact-SQL)
Typ zprávy GRANT Oprávnění služby Service Broker (Transact-SQL)
Object GRANT Oprávnění objektu (Transact-SQL)
Queue GRANT Oprávnění objektu (Transact-SQL)
Vazba vzdálené služby GRANT Oprávnění služby Service Broker (Transact-SQL)
Role GRANT Oprávnění k principálu databáze (Transact-SQL)
Route GRANT Oprávnění služby Service Broker (Transact-SQL)
Schema GRANT Povolení schématu (Transact-SQL)
Seznam vlastností vyhledávání GRANT Vyhledání oprávnění v seznamu nemovitostí (Transact-SQL)
Server GRANT Oprávnění serveru (Transact-SQL)
Service GRANT Oprávnění služby Service Broker (Transact-SQL)
Uložená procedura GRANT Oprávnění objektu (Transact-SQL)
Symetrický klíč GRANT Oprávnění symetrického klíče (Transact-SQL)
Synonym GRANT Oprávnění objektu (Transact-SQL)
Systémové objekty GRANT Oprávnění systémového objektu (Transact-SQL)
Table GRANT Oprávnění objektu (Transact-SQL)
Typ GRANT Oprávnění k typům (Transact-SQL)
User GRANT Oprávnění k principálu databáze (Transact-SQL)
View GRANT Oprávnění objektu (Transact-SQL)
Kolekce schémat XML GRANT Oprávnění ke sběru XML schématu (Transact-SQL)