Udostępnij za pośrednictwem


Uprawnienia: GRANT, DENY, REVOKE

Dotyczy:Azure Synapse AnalyticsAnalytics Platform System (PDW)punkt końcowy analizy 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 bazie danych (takiej jak baza danych, tabela, widok itp.) do podmiotu zabezpieczeń (identyfikator logowania, użytkownika bazy danych lub roli bazy danych). Użyj ODWOŁAJ, aby usunąć przyznanie lub odmowę uprawnienia.

Uprawnienia na poziomie serwera są stosowane do identyfikatorów logowania. Uprawnienia na poziomie bazy danych są stosowane do użytkowników bazy danych i ról bazy danych.

Aby zobaczyć, 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 odrzuca podmiot zabezpieczeń z co najmniej jednego uprawnienia.

  • ODWOŁAJ usuwa istniejące uprawnienia GRANT GRANT lub DENY.

Transact-SQL konwencje składni

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

<uprawnienia>[ ,...n ]
Co najmniej jedno uprawnienie do udzielania, odmowy lub odwołowywania.

ON [ <class_type> :: ] zabezpieczane Klauzula ON opisuje zabezpieczany parametr, na którym można udzielić, odmówić lub odwołać uprawnienia.

<class_type> Typ klasy zabezpieczanej. Może to być LOGIN, DATABASE, OBJECT, SCHEMA, ROLElub USER. Uprawnienia można również przyznaćclass_typeserwera , ale SERVER nie jest określony dla tych uprawnień. DATABASE nie określono, gdy uprawnienie zawiera wyraz 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 ma być OBJECT.

zabezpieczane
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, które są opisane w Transact-SQL konwencji składni.

ABY podmiot 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. FROM można używać tylko z instrukcją REVOKE. TO można używać z GRANT, DENYlub REVOKE.

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

KASKADA
Wskazuje, że uprawnienie zostało odrzucone lub odwołane do określonego podmiotu zabezpieczeń oraz do wszystkich innych podmiotów zabezpieczeń, do których podmiot zabezpieczeń przyznał uprawnienie. Wymagane, gdy podmiot zabezpieczeń ma uprawnienie GRANT OPTION.

OPCJA UDZIELENIA DLA
Wskazuje, że możliwość udzielenia określonego uprawnienia zostanie odwołana. Jest to wymagane, gdy używasz argumentu CASCADE.

Ważny

Jeśli podmiot zabezpieczeń ma określone uprawnienie bez opcji GRANT, samo uprawnienie zostanie odwołane.

Uprawnienia

Aby udzielić uprawnienia, grantor musi mieć uprawnienie do WITH GRANT OPTIONlub musi mieć większe uprawnienie, które oznacza przyznanie uprawnienia. Właściciele obiektów mogą udzielać uprawnień do obiektów, których są właścicielami. Podmioty z uprawnieniami CONTROL zabezpieczane mogą udzielać uprawnień do tego zabezpieczanego. Członkowie db_owner i db_securityadmin stałych ról bazy danych mogą przyznać dowolne uprawnienia w bazie danych.

Uwagi ogólne

Odmawianie lub odwoływania uprawnień do podmiotu zabezpieczeń nie będzie miało wpływu 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.

Nuta

Większość stałych ról serwera nie jest dostępna w tej wersji. Zamiast tego użyj ról bazy danych zdefiniowanych przez użytkownika. Nie można dodać identyfikatorów logowania do sysadmin stałej roli serwera. Przyznanie uprawnienia CONTROL SERVER przybliżone członkostwo w sysadmin stałej roli serwera.

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 dystrybucji akcji użytkownika do węzłów obliczeniowych. W związku z tym nie można odmówić uprawnienia do wykonywania 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 polecenia 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 GRANT lub ODMÓW nadane podmiotowi zabezpieczeń przez instrukcję grant grant lub DENY.

Niejawne uprawnienia to GRANT lub odmów uprawnienia podmiotu zabezpieczeń (identyfikator logowania, użytkownika lub bazy danych) dziedziczone 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.

Łańcuch własności

Gdy wiele obiektów bazy danych uzyskuje dostęp do siebie sekwencyjnie, sekwencja jest nazywana łańcuchem . Mimo że takie łańcuchy nie istnieją niezależnie, gdy program SQL Server przechodzi przez łącza w łańcuchu, program SQL Server ocenia uprawnienia do obiektów składowych inaczej niż w przypadku oddzielnego uzyskiwania dostępu do obiektów. Ł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( Samouczek: ł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 dotyczące 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

  • NAWIĄZYWANIE POŁĄCZENIA Z BAZĄ DANYCH SQL

  • WYŚWIETL DOWOLNĄ DEFINICJĘ

  • WYŚWIETL DOWOLNĄ BAZĘ DANYCH

  • WYŚWIETLANIE STANU SERWERA

Uprawnienia dotyczące 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

  • KONTROLA

  • ZMIENIĆ

  • DEFINICJA WIDOKU

uprawnienia, które mają zastosowanie 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

  • ZMIENIANIE DOWOLNEJ PRZESTRZENI DANYCH

  • ZMIENIANIE DOWOLNEJ ROLI

  • ZMIENIANIE DOWOLNEGO SCHEMATU

  • ZMIENIANIE DOWOLNEGO UŻYTKOWNIKA

  • KOPIA ZAPASOWA BAZA DANYCH

  • NAWIĄZYWANIE POŁĄCZENIA W BAZIE DANYCH

  • TWORZENIE PROCEDURY

  • TWORZENIE ROLI

  • TWORZENIE SCHEMATU

  • CREATE TABLE

  • UTWÓRZ WIDOK

  • SHOWPLAN

Uprawnienia, które mają zastosowanie tylko do użytkowników

  • PERSONIFIKOWAĆ

uprawnienia dotyczące baz danych, schematów i obiektów

  • ZMIENIĆ

  • USUNĄĆ

  • WYKONAĆ

  • WSTAWIAĆ

  • WYBRAĆ

  • AKTUALIZACJA

  • ODWOŁANIA

Aby uzyskać definicję każdego typu uprawnień, zobacz Uprawnienia (aparat bazy danych).

Uprawnienia domyślne

Poniższa lista zawiera opis uprawnień domyślnych:

  • Po utworzeniu logowania przy użyciu instrukcji CREATE LOGIN CREATE LOGIN nowy identyfikator logowania otrzymuje uprawnienie CONNECT SQL.

  • Wszystkie identyfikatory logowania są członkami publicznej roli serwera i nie można ich usunąć z publicznej.

  • 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 publicznej, nie mają domyślnie 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. Oświadczenia GRANT, DENYi REVOKE oświadczenia nie mają wpływu na właścicieli.

  • Identyfikator logowania sa ma wszystkie uprawnienia na urządzeniu. Podobnie jak uprawnienia własności, uprawnienia sa nie można zmienić i nie są widoczne jako jawne uprawnienia. Instrukcje GRANT, DENYi REVOKE nie mają wpływu na logowanie 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

W poniższym przykładzie udzielono użytkownikowi uprawnień 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 platformie Yuen 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];  

Następująca instrukcja REVOKE usuwa uprawnienie odmowy . 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];