Udostępnij za pomocą


GRANT (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Przyznaje uprawnienia zabezpieczane podmiotowi zabezpieczeń. Ogólną koncepcją jest GRANT <some permission> ON <some object> TO <some user, login, or group>. Aby zapoznać się z ogólnym omówieniem uprawnień, zobacz Uprawnienia (aparat bazy danych).

Transact-SQL konwencje składni

Syntax

Składnia dla programu SQL Server, usługi Azure SQL Database i bazy danych SQL Fabric.

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

Składnia dla usług Azure Synapse Analytics, Parallel Data Warehouse i Microsoft Fabric Warehouse.

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

Ta opcja jest przestarzała i jest obsługiwana tylko w przypadku zgodności z poprzednimi wersjami. Nie udziela wszystkich możliwych uprawnień. Udzielanie ALL jest równoważne z przyznaniem następujących uprawnień.

Securable Permissions
Database BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLEi CREATE VIEW
Funkcja skalarna EXECUTE i REFERENCES
Funkcja tabelowa DELETE, INSERT, REFERENCES, SELECTi UPDATE
procedura składowana EXECUTE
Table DELETE, INSERT, REFERENCES, SELECTi UPDATE
View DELETE, INSERT, REFERENCES, SELECTi UPDATE

PRIVILEGES

Uwzględniane pod kątem zgodności z normą ISO. Nie zmienia zachowania ALL.

permission

Nazwa uprawnienia. Prawidłowe mapowania uprawnień do zabezpieczanych elementów opisano w poniższych sekcjach.

column

Określa nazwę kolumny w tabeli, na której są przyznawane uprawnienia. Nawiasy ( i ) są wymagane.

class

Określa klasę zabezpieczaną, na której jest udzielane uprawnienie. Wymagany jest :: kwalifikatora zakresu.

securable

Określa zabezpieczanie, na którym udzielono uprawnień.

TO dyrektor

Nazwa podmiotu zabezpieczeń. Podmioty zabezpieczeń, którym można przyznać uprawnienia do zabezpieczania, różnią się w zależności od zabezpieczanego. Zapoznaj się z poniższymi sekcjami, aby zapoznać się z prawidłowymi kombinacjami.

OPCJA PRZYDZIAŁU

Wskazuje, że grante będzie również mieć możliwość udzielenia określonego uprawnienia innym podmiotom zabezpieczeń.

AS dyrektor

Użyj klauzuli AS <principal>, aby wskazać, że podmiot zabezpieczeń zarejestrowany jako podmiot przyznający uprawnienie powinien być podmiotem zabezpieczeń innym niż osoba wykonująca instrukcję. Załóżmy na przykład, że Mary użytkownika ma principal_id12, a Raul użytkownika jest podmiotem zabezpieczeń 15. Mary wykonuje GRANT SELECT ON OBJECT::X TO Steven WITH GRANT OPTION AS Raul; Teraz tabela sys.database_permissions wskazuje, że grantor_principal_id została 15 (Raul), mimo że instrukcja została rzeczywiście wykonana przez użytkownika 12 (Mary).

Używanie klauzuli AS zwykle nie jest zalecane, chyba że trzeba jawnie zdefiniować łańcuch uprawnień. Aby uzyskać więcej informacji, zobacz Podsumowanie algorytmu sprawdzania uprawnień.

Użycie AS w tej instrukcji nie oznacza możliwości personifikacji innego użytkownika.

Remarks

Pełna składnia instrukcji GRANT jest złożona. Poprzedni diagram składni został uproszczony, aby zwrócić uwagę na jego strukturę. Pełna składnia udzielania uprawnień do określonych zabezpieczania jest opisana w artykułach wymienionych w dalszej części tego artykułu.

Instrukcję REVOKE można użyć do usunięcia przyznanych uprawnień, a instrukcja DENY może służyć do zapobiegania uzyskaniu przez podmiot zabezpieczeń określonego uprawnienia za pośrednictwem GRANT.

Przyznanie uprawnienia usuwa DENY lub REVOKE tego uprawnienia w określonym zabezpieczaniu. Jeśli to samo uprawnienie zostanie odrzucone w wyższym zakresie, który zawiera zabezpieczane, DENY ma pierwszeństwo. Jednak cofnięcie przyznanego uprawnienia w wyższym zakresie nie ma pierwszeństwa.

Uprawnienia na poziomie bazy danych są przyznawane w zakresie określonej bazy danych. Jeśli użytkownik potrzebuje uprawnień do obiektów w innej bazie danych, utwórz konto użytkownika w innej bazie danych lub przyznaj kontu użytkownika dostęp do innej bazy danych, a także bieżącej bazy danych.

Caution

DENY na poziomie tabeli nie ma pierwszeństwa przed GRANTna poziomie kolumny. Ta niespójność w hierarchii uprawnień została zachowana ze względu na zgodność z poprzednimi wersjami. Zostanie on usunięty w przyszłej wersji.

Procedura składowana systemu sp_helprotect zgłasza uprawnienia do zabezpieczania na poziomie bazy danych.

W usłudze Microsoft Fabric nie można obecnie jawnie wykonywać CREATE USER. Po wykonaniu GRANT lub DENY użytkownik jest tworzony automatycznie.

Z OPCJĄ UDZIELANIA

GRANT ... WITH GRANT OPTION określa, że podmiot zabezpieczeń odbierający uprawnienie ma możliwość udzielenia określonego uprawnienia innym kontom zabezpieczeń. Gdy podmiot zabezpieczeń, który otrzymuje uprawnienie, jest rolą lub grupą systemu Windows, należy użyć klauzuli AS, gdy uprawnienie obiektu musi być dodatkowo przyznane użytkownikom, którzy nie są członkami grupy lub roli. Ponieważ tylko użytkownik, a nie grupa lub rola, może wykonać instrukcję GRANT, określony członek grupy lub roli musi użyć klauzuli AS, aby jawnie wywołać rolę lub członkostwo w grupie podczas udzielania uprawnień. W poniższym przykładzie pokazano, jak WITH GRANT OPTION jest używana w przypadku udzielenia roli lub grupy systemu 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;

Wykres uprawnień programu SQL Server

Aby uzyskać wykres rozmiaru plakatu wszystkich uprawnień aparatu bazy danych w formacie PDF, zobacz https://aka.ms/sql-permissions-poster.

Permissions

Grantor (lub podmiot zabezpieczeń określony z opcją AS) musi mieć uprawnienie do GRANT OPTIONlub wyższe uprawnienie, które oznacza przyznanie uprawnienia. W przypadku korzystania z opcji AS mają zastosowanie dodatkowe wymagania. Aby uzyskać szczegółowe informacje, zobacz artykuł dotyczący zabezpieczania.

Właściciele obiektów mogą udzielać uprawnień do obiektów, których są właścicielami. Podmioty z CONTROL uprawnienia do zabezpieczania mogą udzielać uprawnień do tego zabezpieczanego.

Udziel uprawnień CONTROL SERVER, takich jak członkowie sysadmin stałej roli serwera, mogą przyznać wszelkie uprawnienia do zabezpieczania na serwerze. Grantees CONTROL uprawnienia do bazy danych, takich jak członkowie db_owner stałej roli bazy danych, mogą udzielić wszelkich uprawnień do zabezpieczania w bazie danych. Grantees CONTROL uprawnienia do schematu mogą przyznać dowolne uprawnienie do dowolnego obiektu w schemacie.

Examples

W poniższej tabeli wymieniono zabezpieczane elementy i artykuły, które opisują zabezpieczaną składnię.

Securable składnia GRANT
Rola aplikacji UDZIELANIE uprawnień podmiotu zabezpieczeń bazy danych (Transact-SQL)
Assembly UDZIEL uprawnień zestawu (Transact-SQL)
Klucz asymetryczny GRANT Asymetryczne uprawnienia klucza (Transact-SQL)
Grupa dostępności UDZIEL uprawnień grupy dostępności (Transact-SQL)
Certificate UDZIEL uprawnień certyfikatu (Transact-SQL)
Contract NADAJ uprawnienia Service Broker (Transact-SQL)
Database UDZIELANIE uprawnień bazy danych (Transact-SQL)
Poświadczenie o zakresie bazy danych Uprawnienia do zakresu bazy danych GRANT (Transact-SQL)
Endpoint GRANT Endpoint Permissions (Transact-SQL)
Full-Text Katalog UDZIELANIE uprawnień Full-Text (Transact-SQL)
Full-Text Lista stop UDZIELANIE uprawnień Full-Text (Transact-SQL)
Function UDZIEL uprawnień obiektu (Transact-SQL)
Login Główne uprawnienia serwera GRANT (Transact-SQL)
Typ komunikatu NADAJ uprawnienia Service Broker (Transact-SQL)
Object UDZIEL uprawnień obiektu (Transact-SQL)
Queue UDZIEL uprawnień obiektu (Transact-SQL)
Powiązanie usługi zdalnej NADAJ uprawnienia Service Broker (Transact-SQL)
Role UDZIELANIE uprawnień podmiotu zabezpieczeń bazy danych (Transact-SQL)
Route NADAJ uprawnienia Service Broker (Transact-SQL)
Schema UDZIEL uprawnień schematu (Transact-SQL)
Lista właściwości wyszukiwania uprawnienia listy właściwości wyszukiwania GRANT (Transact-SQL)
Server Grantować uprawnienia serwera (Transact-SQL)
Service NADAJ uprawnienia Service Broker (Transact-SQL)
Procedura składowana UDZIEL uprawnień obiektu (Transact-SQL)
Klucz symetryczny GRANT Uprawnienia klucza symetrycznego (Transact-SQL)
Synonym UDZIEL uprawnień obiektu (Transact-SQL)
Obiekty systemowe UDZIEL uprawnień obiektu systemowego (Transact-SQL)
Table UDZIEL uprawnień obiektu (Transact-SQL)
Typ uprawnienia typu GRANT (Transact-SQL)
User UDZIELANIE uprawnień podmiotu zabezpieczeń bazy danych (Transact-SQL)
View UDZIEL uprawnień obiektu (Transact-SQL)
Kolekcja schematów XML przyznaj uprawnienia kolekcji schematów XML (Transact-SQL)