Sdílet prostřednictvím


GRANT (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)koncový bod SQL Analytics ve službě Microsoft FabricWarehouse 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
}

Argumenty

VŠICHNI

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í.

Zabezpečený Dovolení
Databáze BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLEa CREATE VIEW
Skalární funkce EXECUTE a REFERENCES
Table-valued function DELETE, INSERT, REFERENCES, SELECTa UPDATE
Uložená procedura EXECUTE
Stůl DELETE, INSERT, REFERENCES, SELECTa UPDATE
Pohled DELETE, INSERT, REFERENCES, SELECTa UPDATE

PRIVILEGIA

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

oprávnění

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

sloupce

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

třídy

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

zabezpečitelné

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

objektu zabezpečení

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 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í.

objektu zabezpečení AS

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.

Poznámky

Ú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.

Opatrnost

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.

Dovolení

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.

Příklady

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

Zabezpečený Syntaxe GRANT
Role aplikace oprávnění objektu zabezpečení databáze GRANT (Transact-SQL)
Shromáždění 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)
Certifikát GRANT Certificate Permissions (Transact-SQL)
Smlouva GRANT Service Broker Permissions (Transact-SQL)
Databáze 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)
Zakončení UDĚLIT oprávnění koncového bodu (Transact-SQL)
katalog Full-Text GRANT Full-Text (Transact-SQL)
seznam stop Full-Text GRANT Full-Text (Transact-SQL)
Funkce oprávnění k objektu GRANT (Transact-SQL)
Přihlášení do systému GRANT Server Principal Permissions (Transact-SQL)
Typ zprávy GRANT Service Broker Permissions (Transact-SQL)
Objekt oprávnění k objektu GRANT (Transact-SQL)
Fronta 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)
Cesta GRANT Service Broker Permissions (Transact-SQL)
Schéma 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)
Služba 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)
Synonymum oprávnění k objektu GRANT (Transact-SQL)
Systémové objekty UDĚLIT oprávnění k systémovému objektu (Transact-SQL)
Stůl oprávnění k objektu GRANT (Transact-SQL)
Typ oprávnění typu GRANT (Transact-SQL)
Uživatel oprávnění objektu zabezpečení databáze GRANT (Transact-SQL)
Pohled oprávnění k objektu GRANT (Transact-SQL)
Kolekce schémat XML oprávnění k kolekci schématu XML (Transact-SQL)
  • odepřít (Transact-SQL)
  • ODVOLÁNÍ (Transact-SQL)
  • sp_addlogin (Transact-SQL)
  • sp_adduser (Transact-SQL)
  • sp_changedbowner (Transact-SQL)
  • sp_dropuser (Transact-SQL)
  • sp_helprotect (Transact-SQL)
  • sp_helpuser (Transact-SQL)