Udostępnij za pośrednictwem


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 FabricWarehouse w usłudze Microsoft FabricSQL Database 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

Składnia

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
}

Argumenty

CAŁY

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

Zabezpieczany Uprawnienia
Baza danych BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLEi CREATE VIEW
Funkcja skalarna EXECUTE i REFERENCES
Funkcja wartościowa tabeli DELETE, INSERT, REFERENCES, SELECTi UPDATE
Procedura składowana EXECUTE
Stół DELETE, INSERT, REFERENCES, SELECTi UPDATE
Widok DELETE, INSERT, REFERENCES, SELECTi UPDATE

UPRAWNIENIA

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

uprawnienia

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

kolumny

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

klasy

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

zabezpieczane

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

ABY podmiotu zabezpieczeń

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 UDZIELANIA

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

podmiotu zabezpieczeń as

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.

Uwagi

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.

Ostrożność

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.

Uprawnienia

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.

Przykłady

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

Zabezpieczany składnia GRANT
Rola aplikacji UDZIELANIE uprawnień podmiotu zabezpieczeń bazy danych (Transact-SQL)
Montaż GRANT Assembly Permissions (Transact-SQL)
Klucz asymetryczny GRANT Asymetryczne uprawnienia klucza (Transact-SQL)
Grupa dostępności UDZIEL uprawnień grupy dostępności (Transact-SQL)
Certyfikat UDZIEL uprawnień certyfikatu (Transact-SQL)
Kontrakt GRANT Service Broker Permissions (Transact-SQL)
Baza danych UDZIELANIE uprawnień bazy danych (Transact-SQL)
Poświadczenie o zakresie bazy danych GRANT Database Scoped Credential (Transact-SQL)
Punkt końcowy GRANT Endpoint Permissions (Transact-SQL)
Wykaz Full-Text UDZIELANIE uprawnień Full-Text (Transact-SQL)
lista zatrzymań Full-Text UDZIELANIE uprawnień Full-Text (Transact-SQL)
Funkcja UDZIEL uprawnień obiektu (Transact-SQL)
Login GRANT Server Principal Permissions (Transact-SQL)
Typ komunikatu GRANT Service Broker Permissions (Transact-SQL)
Sprzeciwiać się UDZIEL uprawnień obiektu (Transact-SQL)
Kolejka UDZIEL uprawnień obiektu (Transact-SQL)
Powiązanie usługi zdalnej GRANT Service Broker Permissions (Transact-SQL)
Rola UDZIELANIE uprawnień podmiotu zabezpieczeń bazy danych (Transact-SQL)
Trasa GRANT Service Broker Permissions (Transact-SQL)
Schemat UDZIEL uprawnień schematu (Transact-SQL)
Lista właściwości wyszukiwania uprawnienia listy właściwości wyszukiwania GRANT (Transact-SQL)
Serwer GRANT Server Permissions (Transact-SQL)
Usługa GRANT Service Broker Permissions (Transact-SQL)
Procedura składowana UDZIEL uprawnień obiektu (Transact-SQL)
Klucz symetryczny GRANT Symmetric Key Permissions (Transact-SQL)
Synonim UDZIEL uprawnień obiektu (Transact-SQL)
Obiekty systemowe UDZIEL uprawnień obiektu systemowego (Transact-SQL)
Stół UDZIEL uprawnień obiektu (Transact-SQL)
Typ uprawnienia typu GRANT (Transact-SQL)
Użytkownik UDZIELANIE uprawnień podmiotu zabezpieczeń bazy danych (Transact-SQL)
Widok UDZIEL uprawnień obiektu (Transact-SQL)
Kolekcja schematów XML przyznaj uprawnienia kolekcji schematów XML (Transact-SQL)