Uprawnienia: UDZIELANIE, ODMÓW, ODWOŁYWANIE
Dotyczy:Azure Synapse Analytics AnalyticsPlatform System (PDW)PUNKT końcowy SQL w usłudze Microsoft FabricWarehouse w usłudze Microsoft Fabric
Użyj instrukcji GRANT i DENY , aby udzielić lub odmówić uprawnień (takich jak UPDATE) w zabezpieczanej (na przykład bazy danych, tabeli, widoku itp.) do podmiotu zabezpieczeń (identyfikator logowania, użytkownika bazy danych lub roli bazy danych). Użyj funkcji REVOKE , aby usunąć udzielenie lub odmowę uprawnienia.
Uprawnienia na poziomie serwera są stosowane do logowań. Uprawnienia na poziomie bazy danych są stosowane do użytkowników bazy danych i ról bazy danych.
Aby sprawdzić, jakie uprawnienia zostały przyznane i odrzucone, wykonaj zapytanie dotyczące widoków sys.server_permissions i sys.database_permissions. Uprawnienia, które nie są jawnie przyznawane lub odrzucane podmiotowi zabezpieczeń, mogą być dziedziczone przez członkostwo w roli, która ma uprawnienia. Nie można zmienić uprawnień stałych ról bazy danych i nie są wyświetlane w widokach sys.server_permissions i sys.database_permissions.
GRANT jawnie przyznaje co najmniej jedno uprawnienie.
Odmowa jawnie odmawia podmiotowi zabezpieczeń posiadania co najmniej jednego uprawnienia.
FUNKCJA REVOKE usuwa istniejące uprawnienia GRANT lub DENY .
Konwencje składni języka Transact-SQL
Składnia
-- Azure Synapse Analytics and Parallel Data Warehouse and Microsoft Fabric
GRANT
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ WITH GRANT OPTION ]
[;]
DENY
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
TO principal [ ,...n ]
[ CASCADE ]
[;]
REVOKE
<permission> [ ,...n ]
[ ON [ <class_type> :: ] securable ]
[ FROM | TO ] principal [ ,...n ]
[ CASCADE ]
[;]
<permission> ::=
{ see the tables below }
<class_type> ::=
{
LOGIN
| DATABASE
| OBJECT
| ROLE
| SCHEMA
| USER
}
Argumenty
<uprawnienie>[ ,... n ]
Co najmniej jedno uprawnienie do udzielania, odmowy lub odwołowywania.
ON [ <class_type> :: ] zabezpieczana klauzula ON opisuje zabezpieczany parametr, na którym można udzielić, odmówić lub odwołać uprawnień.
<> class_type Typ klasy zabezpieczanej. Może to być IDENTYFIKATOR LOGIN, DATABASE, OBJECT, SCHEMA, ROLE lub USER. Uprawnienia można również przyznać serwerowi class_type, ale serwer nie jest określony dla tych uprawnień. BAZA DANYCH nie jest określona, gdy uprawnienie zawiera słowo DATABASE (na przykład ALTER ANY DATABASE). Jeśli nie określono class_type i typ uprawnień nie jest ograniczony do klasy serwera lub bazy danych, przyjmuje się, że klasa jest obiektem.
Zabezpieczany
Nazwa logowania, bazy danych, tabeli, widoku, schematu, procedury, roli lub użytkownika, na którym można udzielić, odmówić lub odwołać uprawnienia. Nazwę obiektu można określić za pomocą trzech części reguł nazewnictwa opisanych w konwencjach składni języka Transact-SQL.
DO podmiotu zabezpieczeń [ ,... n ]
Co najmniej jeden podmiot zabezpieczeń, któremu udzielono, odmówiono lub odwołano uprawnienia. Podmiot zabezpieczeń to nazwa logowania, użytkownika bazy danych lub roli bazy danych.
FROM principal [ ,... n ]
Co najmniej jeden podmiot zabezpieczeń, z którego mają zostać odwołane uprawnienia. Podmiot zabezpieczeń to nazwa logowania, użytkownika bazy danych lub roli bazy danych. FUNKCJI FROM można używać tylko z instrukcją REVOKE . To może być używane z GRANT, DENY lub REVOKE.
Z OPCJĄ UDZIELANIA
Wskazuje, że dotacja będzie również mieć możliwość udzielenia określonego uprawnienia do innych podmiotów zabezpieczeń.
KASKADOWO
Wskazuje, że uprawnienie jest odrzucane lub odwoływane do określonego podmiotu zabezpieczeń oraz do wszystkich innych podmiotów zabezpieczeń, do których podmiot zabezpieczeń udzielił uprawnienia. Wymagane, gdy podmiot zabezpieczeń ma uprawnienie z OPCJĄ UDZIELANIA.
OPCJA UDZIELANIA DLA
Wskazuje, że możliwość udzielenia określonego uprawnienia zostanie odwołana. Jest to wymagane, gdy używasz argumentu CASCADE .
Ważne
Jeśli podmiot zabezpieczeń ma określone uprawnienie bez opcji GRANT , samo uprawnienie zostanie odwołane.
Uprawnienia
Aby przyznać uprawnienie, grantor musi mieć uprawnienie z OPCJą Z UDZIELANIEM lub musi mieć większe uprawnienie, które oznacza przyznanie uprawnień. Właściciele obiektów mogą udzielać uprawnień do obiektów, których są właścicielami. Podmioty z uprawnieniami CONTROL do zabezpieczania mogą udzielić uprawnień do tego zabezpieczanego. Członkowie db_owner i db_securityadmin stałych ról bazy danych mogą udzielić jakichkolwiek uprawnień w bazie danych.
Uwagi ogólne
Odmowa lub odwoływania uprawnień do podmiotu zabezpieczeń nie wpłynie na żądania, które przeszły autoryzację i są obecnie uruchomione. Aby natychmiast ograniczyć dostęp, musisz anulować aktywne żądania lub zabić bieżące sesje.
Uwaga
Większość stałych ról serwera nie jest dostępna w tej wersji. Zamiast tego należy użyć ról bazy danych zdefiniowanych przez użytkownika. Nie można dodać identyfikatorów logowania do stałej roli serwera sysadmin . Przyznanie uprawnienia CONTROL SERVER przybliżone członkostwo w stałej roli serwera sysadmin .
Niektóre instrukcje wymagają wielu uprawnień. Na przykład utworzenie tabeli wymaga uprawnień CREATE TABLE w bazie danych oraz uprawnienia ALTER SCHEMA dla tabeli zawierającej tabelę.
System platformy analizy (PDW) czasami wykonuje procedury składowane w celu dystrybuowania akcji użytkownika do węzłów obliczeniowych. W związku z tym nie można odmówić uprawnień wykonywania dla całej bazy danych. (Na przykład DENY EXECUTE ON DATABASE::<name> TO <user>;
zakończy się niepowodzeniem). W miarę pracy odmów uprawnienia wykonywania do schematów użytkownika lub określonych obiektów (procedur).
W usłudze Microsoft Fabric obecnie nie można jawnie wykonać polecenia CREATE USER. Po wykonaniu funkcji GRANT lub DENY użytkownik zostanie utworzony automatycznie.
W usłudze Microsoft Fabric uprawnienia na poziomie serwera nie są możliwe do zarządzania.
Uprawnienia niejawne i jawne
Jawne uprawnienie to uprawnienie GRANT lub DENY przyznane podmiotowi zabezpieczeń przez instrukcję GRANT lub DENY.
Niejawne uprawnienie to uprawnienie GRANT lub DENY, które podmiot zabezpieczeń (identyfikator logowania, użytkownik lub rola bazy danych) dziedziczył z innej roli bazy danych.
Niejawne uprawnienie można również dziedziczyć z uprawnienia obejmującego lub nadrzędnego. Na przykład uprawnienie UPDATE w tabeli można dziedziczyć, mając uprawnienie UPDATE w schemacie zawierającym tabelę lub uprawnienie CONTROL w tabeli.
Łączenie własności
Gdy wiele obiektów bazy danych uzyskuje dostęp do siebie sekwencyjnie, sekwencja jest nazywana łańcuchem. Chociaż takie łańcuchy nie istnieją niezależnie, gdy SQL Server przechodzi przez łącza w łańcuchu, SQL Server ocenia uprawnienia do obiektów składowych inaczej niż gdyby uzyskiwał dostęp do obiektów oddzielnie. Łańcuch własności ma ważne konsekwencje związane z zarządzaniem zabezpieczeniami. Aby uzyskać więcej informacji na temat łańcuchów własności, zobacz Ownership Chains and Tutorial: Ownership Chains and Context Switching (Łańcuchy własności i przełączanie kontekstu).
Lista uprawnień
Uprawnienia na poziomie serwera
Uprawnienia na poziomie serwera można przyznać, odmówić i odwołać z identyfikatorów logowania.
Uprawnienia stosowane do serwerów
SERWER STEROWANIA
ADMINISTROWANIE OPERACJAMI ZBIORCZYM
ZMIENIANIE DOWOLNEGO POŁĄCZENIA
ZMIENIANIE DOWOLNEJ BAZY DANYCH
TWORZENIE DOWOLNEJ BAZY DANYCH
ZMIENIANIE DOWOLNEGO ZEWNĘTRZNEGO ŹRÓDŁA DANYCH
ZMIENIANIE DOWOLNEGO FORMATU PLIKU ZEWNĘTRZNEGO
ZMIENIANIE DOWOLNEGO IDENTYFIKATORA LOGOWANIA
ALTER SERVER STATE
ŁĄCZENIE BAZY DANYCH SQL
WYŚWIETL DOWOLNĄ DEFINICJĘ
WYŚWIETLANIE DOWOLNEJ BAZY DANYCH
WYŚWIETLANIE STANU SERWERA
Uprawnienia, które mają zastosowanie do identyfikatorów logowania
KONTROLA PRZY LOGOWANIU
ALTER ON LOGIN
PERSONIFIKUJ PRZY LOGOWANIU
DEFINICJA WIDOKU
Uprawnienia na poziomie bazy danych
Uprawnienia na poziomie bazy danych można przyznać, odmówić i odwołać od użytkowników bazy danych i ról bazy danych zdefiniowanych przez użytkownika.
Uprawnienia, które mają zastosowanie do wszystkich klas baz danych
KONTROLI
ALTER
DEFINICJA WIDOKU
Uprawnienia stosowane do wszystkich klas baz danych z wyjątkiem użytkowników
- PRZEJĘCIE WŁASNOŚCI
Uprawnienia, które mają zastosowanie tylko do baz danych
ZMIENIANIE DOWOLNEJ BAZY DANYCH
ALTER ON DATABASE
ALTER ANY DATASPACE
ZMIENIANIE DOWOLNEJ ROLI
ZMIENIANIE DOWOLNEGO SCHEMATU
ZMIENIANIE DOWOLNEGO UŻYTKOWNIKA
KOPIA ZAPASOWA BAZY DANYCH
NAWIĄZYWANIE POŁĄCZENIA W BAZIE DANYCH
TWORZENIE PROCEDURY
TWORZENIE ROLI
TWORZENIE SCHEMATU
CREATE TABLE
CREATE VIEW
SHOWPLAN
Uprawnienia, które mają zastosowanie tylko do użytkowników
- PERSONIFIKOWAĆ
Uprawnienia dotyczące baz danych, schematów i obiektów
ALTER
DELETE
WYKONAĆ
INSERT
SELECT
UPDATE
DOKUMENTACJA
Aby uzyskać definicję poszczególnych typów uprawnień, zobacz Uprawnienia (aparat bazy danych).
Wykres uprawnień
Wszystkie uprawnienia są graficznie reprezentowane na tym plakatie. Jest to najprostszy sposób wyświetlania zagnieżdżonej hierarchii uprawnień. Na przykład uprawnienie ALTER ON LOGIN może zostać przyznane samodzielnie, ale jest również uwzględniane, jeśli podczas logowania udzielono uprawnienia CONTROL dla tego identyfikatora logowania lub jeśli identyfikator logowania zostanie udzielony uprawnienie ALTER ANY LOGIN .
Uprawnienia domyślne
Na poniższej liście opisano uprawnienia domyślne:
Po utworzeniu logowania przy użyciu instrukcji CREATE LOGIN nowa nazwa logowania otrzymuje uprawnienie CONNECT SQL .
Wszystkie identyfikatory logowania są członkami roli serwera publicznego i nie można ich usunąć z publicznej wersji.
Gdy użytkownik bazy danych jest tworzony przy użyciu uprawnienia CREATE USER , użytkownik bazy danych otrzymuje uprawnienie CONNECT w bazie danych.
Wszystkie podmioty zabezpieczeń, w tym rola publiczna , domyślnie nie mają jawnych ani niejawnych uprawnień.
Gdy identyfikator logowania lub użytkownik staje się właścicielem bazy danych lub obiektu, nazwa logowania lub użytkownik zawsze ma wszystkie uprawnienia do bazy danych lub obiektu. Nie można zmienić uprawnień własności i nie są widoczne jako jawne uprawnienia. Instrukcje GRANT, DENY i REVOKE nie mają wpływu na właścicieli.
Identyfikator logowania sa ma wszystkie uprawnienia na urządzeniu. Podobnie jak uprawnienia własności, nie można zmienić uprawnień sa i nie są widoczne jako jawne uprawnienia. Instrukcje GRANT, DENY i REVOKE nie mają wpływu na identyfikator logowania sa . Nie można zmienić nazwy logowania sa .
Instrukcja USE nie wymaga uprawnień. Wszystkie podmioty zabezpieczeń mogą uruchamiać instrukcję USE w dowolnej bazie danych.
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
A. Udzielanie uprawnień na poziomie serwera do logowania
Poniższe dwie instrukcje udzielają uprawnień na poziomie serwera do logowania.
GRANT CONTROL SERVER TO [Ted];
GRANT ALTER ANY DATABASE TO Mary;
B. Udzielanie uprawnień na poziomie serwera do logowania
W poniższym przykładzie udzielono uprawnień na poziomie serwera podczas logowania do jednostki serwera (innego identyfikatora logowania).
GRANT VIEW DEFINITION ON LOGIN::Ted TO Mary;
C. Udzielanie użytkownikowi uprawnień na poziomie bazy danych
Poniższy przykład przyznaje użytkownikowi uprawnienia na poziomie bazy danych do jednostki bazy danych (innego użytkownika).
GRANT VIEW DEFINITION ON USER::[Ted] TO Mary;
D. Udzielanie, odmawianie i odwołowanie uprawnienia schematu
Poniższa instrukcja GRANT przyznaje Yuen możliwość wybierania danych z dowolnej tabeli lub widoku w schemacie dbo.
GRANT SELECT ON SCHEMA::dbo TO [Yuen];
Poniższa instrukcja DENY uniemożliwia yuenowi wybieranie danych z dowolnej tabeli lub widoku w schemacie dbo. Yuen nie może odczytać danych, nawet jeśli ma uprawnienia w inny sposób, na przykład za pośrednictwem członkostwa w roli.
DENY SELECT ON SCHEMA::dbo TO [Yuen];
Poniższa instrukcja REVOKE usuwa uprawnienie DENY . Teraz jawne uprawnienia Yuena są neutralne. Yuen może być w stanie wybrać dane z dowolnej tabeli za pośrednictwem innych niejawnych uprawnień, takich jak członkostwo w roli.
REVOKE SELECT ON SCHEMA::dbo TO [Yuen];
E. Demonstrowanie opcjonalnej klauzuli OBJECT::
Ponieważ OBJECT jest domyślną klasą instrukcji uprawnień, następujące dwie instrukcje są takie same. Klauzula OBJECT:: jest opcjonalna.
GRANT UPDATE ON OBJECT::dbo.StatusTable TO [Ted];
GRANT UPDATE ON dbo.StatusTable TO [Ted];