Sdílet prostřednictvím


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.

MOŽNOST GRANTU

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 MOŽNOSTÍ UDĚLENÍ

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 oprávnění objektu zabezpečení databáze GRANT (Transact-SQL)
Assembly UDĚLIT oprávnění sestavení (Transact-SQL)
Asymetrický klíč oprávnění asymetrického klíče GRANT (Transact-SQL)
Skupina dostupnosti oprávnění skupiny dostupnosti GRANT (Transact-SQL)
Certificate GRANT Certificate Permissions (Transact-SQL)
Contract GRANT Service Broker Permissions (Transact-SQL)
Database udělit oprávnění k databázi (Transact-SQL)
Přihlašovací údaje s vymezeným oborem databáze GRANT Database Scoped Credential (Transact-SQL)
Endpoint UDĚLIT oprávnění koncového bodu (Transact-SQL)
Full-Text Katalog GRANT Full-Text (Transact-SQL)
Full-Text Stoplist GRANT Full-Text (Transact-SQL)
Function oprávnění k objektu GRANT (Transact-SQL)
Login GRANT Server Principal Permissions (Transact-SQL)
Typ zprávy GRANT Service Broker Permissions (Transact-SQL)
Object oprávnění k objektu GRANT (Transact-SQL)
Queue oprávnění k objektu GRANT (Transact-SQL)
Vazba vzdálené služby GRANT Service Broker Permissions (Transact-SQL)
Role oprávnění objektu zabezpečení databáze GRANT (Transact-SQL)
Route GRANT Service Broker Permissions (Transact-SQL)
Schema oprávnění k schématu GRANT (Transact-SQL)
Seznam vlastností vyhledávání oprávnění k seznamu vlastností hledání GRANT (Transact-SQL)
Server GRANT Serveru (Transact-SQL)
Service GRANT Service Broker Permissions (Transact-SQL)
Uložená procedura oprávnění k objektu GRANT (Transact-SQL)
Symetrický klíč UDĚLIT oprávnění symetrického klíče (Transact-SQL)
Synonym oprávnění k objektu GRANT (Transact-SQL)
Systémové objekty UDĚLIT oprávnění k systémovému objektu (Transact-SQL)
Table oprávnění k objektu GRANT (Transact-SQL)
Typ oprávnění typu GRANT (Transact-SQL)
User oprávnění objektu zabezpečení databáze GRANT (Transact-SQL)
View oprávnění k objektu GRANT (Transact-SQL)
Kolekce schémat XML oprávnění k kolekci schématu XML (Transact-SQL)