Udostępnij za pomocą


Role na poziomie bazy danych

Dotyczy do:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSystem Platform Analitycznych (PDW)Baza danych SQL w Microsoft Fabric

Aby łatwo zarządzać uprawnieniami w bazach danych, program SQL Server udostępnia kilka ról jako zasad zabezpieczeń, grupujących inne podmioty. Są one podobne do grup w systemie operacyjnym Windows. Role na poziomie bazy danych obejmują całą bazę danych w zakresie uprawnień.

Aby dodać i usunąć użytkowników do roli bazy danych, użyj ADD MEMBER opcji i DROP MEMBER instrukcji ALTER ROLE . System Platform Analytics (PDW) i usługa Azure Synapse Analytics nie obsługują korzystania z programu ALTER ROLE. Zamiast tego należy użyć starszych procedur sp_addrolemember i sp_droprolemember .

Istnieją dwa typy ról na poziomie bazy danych: stałe role bazy danych , które są wstępnie zdefiniowane w bazie danych i role bazy danych zdefiniowane przez użytkownika , które można utworzyć.

Stałe role bazy danych są definiowane na poziomie bazy danych i istnieją w każdej bazie danych. Członkowie roli bazy danych db_owner mogą zarządzać członkostwem ról bazy danych. Istnieją również pewne role bazy danych specjalnego przeznaczenia w msdb bazie danych.

Do ról na poziomie bazy danych można dodać dowolne konto bazy danych i inne role programu SQL Server.

Tip

Nie dodawaj ról bazy danych zdefiniowanych przez użytkownika jako członków stałych ról. Może to umożliwić niezamierzoną eskalację uprawnień.

Uprawnienia ról bazy danych zdefiniowanych przez użytkownika można dostosować przy użyciu instrukcji GRANT, DENY i REVOKE . Aby uzyskać więcej informacji, zobacz Uprawnienia (aparat bazy danych).

Aby uzyskać listę wszystkich uprawnień, zobacz plakat Uprawnienia silnika bazy danych. Nie można przyznać uprawnień na poziomie serwera do ról bazy danych. Loginy i inne uprawnienia na poziomie serwera (takie jak role serwera) nie mogą być dodawane do ról baz danych. W przypadku zabezpieczeń na poziomie serwera w programie SQL Server zamiast tego użyj ról serwera . Nie można udzielać uprawnień na poziomie serwera za pośrednictwem ról w usługach Azure SQL Database i Azure Synapse Analytics.

Stałe role bazy danych

W poniższej tabeli przedstawiono stałe role bazy danych i ich możliwości. Te role istnieją we wszystkich bazach danych. Z wyjątkiem roli publicznej bazy danych nie można zmienić uprawnień przypisanych do stałych ról bazy danych.

Stała nazwa roli bazy danych Description
db_owner Członkowie stałej roli bazy danych db_owner mogą wykonywać wszystkie działania konfiguracyjne i konserwacyjne w bazie danych, a także DROP bazę danych w SQL Server. (W usługach SQL Database i Azure Synapse niektóre działania konserwacyjne wymagają uprawnień na poziomie serwera i nie mogą być wykonywane przez db_owners).
db_securityadmin Członkowie db_securityadmin stałej roli bazy danych mogą modyfikować członkostwo w rolach niestandardowych i zarządzać uprawnieniami. Członkowie tej roli mogą potencjalnie podnieść swoje uprawnienia, a ich działania powinny być monitorowane.
db_accessadmin Członkowie stałej roli w bazie danych db_accessadmin mogą dodawać lub usuwać dostęp do bazy danych dla loginów systemu Windows, grup systemu Windows i loginów SQL Server.
db_backupoperator Członkowie db_backupoperator stałej roli bazy danych mogą utworzyć kopię zapasową bazy danych.
db_ddladmin Członkowie stałej roli db_ddladmin bazy danych mogą uruchamiać dowolne polecenie języka definicji danych (DDL) w bazie danych. Członkowie tej roli mogą potencjalnie podnieść swoje uprawnienia, manipulując kodem, który może zostać wykonany w ramach wysokich uprawnień, a ich akcje powinny być monitorowane.
db_datawriter Członkowie db_datawriter stałej roli bazy danych mogą dodawać, usuwać lub zmieniać dane we wszystkich tabelach użytkowników. W większości przypadków użycia ta rola jest łączona z członkostwem db_datareader , aby umożliwić odczytywanie danych, które mają zostać zmodyfikowane.
db_datareader Członkowie db_datareader stałej roli bazy danych mogą odczytywać wszystkie dane ze wszystkich tabel i widoków użytkownika. Obiekty użytkownika mogą istnieć w dowolnym schemacie z wyjątkiem sys i INFORMATION_SCHEMA.
db_denydatawriter Członkowie stałej roli bazy danych db_denydatawriter nie mogą dodawać, modyfikować ani usuwać żadnych danych w tabelach użytkownika w bazie danych.
db_denydatareader Członkowie stałej roli bazy danych db_denydatareader nie mogą odczytywać żadnych danych z tabel i widoków użytkownika w bazie danych. Członkowie tej roli nie mogą również odczytywać metadanych dotyczących bazy danych i jej obiektów, takich jak wyświetlanie widoków systemu.

Nie można zmienić uprawnień przypisanych do stałych ról bazy danych. Wszystkie role (w tym public rola) mają uprawnienia CONNECT. Na poniższej ilustracji przedstawiono uprawnienia przypisane do stałych ról bazy danych:

Nazwa roli Permissions
db_owner KONTROLA BAZY DANYCH: ma wszystkie uprawnienia w bazie danych.
db_securityadmin ZMIENIANIE DOWOLNEJ ROLI APLIKACJI
TWORZENIE SCHEMATU
ZMIENIANIE DOWOLNEJ ROLI
DEFINICJA WIDOKU
db_accessadmin ZMIENIANIE DOWOLNEGO UŻYTKOWNIKA
TWORZENIE SCHEMATU
TWORZENIE UŻYTKOWNIKA
db_backupoperator KOPIA ZAPASOWA BAZA DANYCH
DZIENNIK KOPII ZAPASOWYCH
CHECKPOINT
db_ddladmin ZMIENIANIE DOWOLNEGO ZESTAWU
ZMIENIANIE DOWOLNEGO KLUCZA ASYMETRYCZNEGO
ZMIENIANIE DOWOLNEGO CERTYFIKATU
ZMIEŃ DOWOLNY KONTRAKT
ZMIENIANIE DOWOLNEGO WYZWALACZA DDL BAZY DANYCH
ZMIENIANIE DOWOLNEGO POWIADOMIENIA O ZDARZENIU BAZY DANYCH
ZMIENIANIE DOWOLNEJ PRZESTRZENI DANYCH
ZMIENIANIE DOWOLNEJ BIBLIOTEKI ZEWNĘTRZNEJ
ZMIEŃ DOWOLNY KATALOG PEŁNOTEKSTOWY
ZMIENIANIE DOWOLNEGO TYPU KOMUNIKATU
ZMIENIANIE DOWOLNEGO POWIĄZANIA USŁUGI ZDALNEJ
ZMIENIANIE DOWOLNEJ TRASY
ZMIENIANIE DOWOLNEGO SCHEMATU
ZMIENIANIE DOWOLNEJ USŁUGI
ZMIENIANIE DOWOLNEGO KLUCZA SYMETRYCZNEGO
CHECKPOINT
TWORZENIE AGREGACJI
TWORZENIE ASEMBLI
TWORZENIE KLUCZA ASYMETRYCZNEGO
TWORZENIE CERTYFIKATU
TWORZENIE KONTRAKTU
POWIADOMIENIE O ZDARZENIU TWORZENIA BAZY DANYCH DDL
UTWÓRZ DOMYŚLNE
TWORZENIE BIBLIOTEKI ZEWNĘTRZNEJ
TWORZENIE WYKAZU PEŁNOTEKSTOWEGO
UTWÓRZ FUNKCJĘ
TWORZENIE TYPU KOMUNIKATU
TWORZENIE PROCEDURY
TWORZENIE KOLEJKI
TWORZENIE POWIĄZANIA USŁUGI ZDALNEJ
TWORZENIE TRASY
TWORZENIE REGUŁY
TWORZENIE SCHEMATU
TWORZENIE USŁUGI
TWORZENIE KLUCZA SYMETRYCZNEGO
TWORZENIE SYNONIMU
CREATE TABLE
TWORZENIE TYPU
UTWÓRZ WIDOK
TWORZENIE KOLEKCJI SCHEMATÓW XML
REFERENCJE

Dotyczy: SQL Server 2019 i nowsze wersje
ZMIEŃ DOWOLNY ZEWNĘTRZNY JĘZYK
TWORZENIE JĘZYKA ZEWNĘTRZNEGO

Dotyczy: SQL Server 2022 i nowsze
ZMIENIANIE DOWOLNEGO ZEWNĘTRZNEGO ŹRÓDŁA DANYCH
ZMIENIANIE DOWOLNEGO FORMATU PLIKU ZEWNĘTRZNEGO
ZMIENIANIE DOWOLNEGO ZADANIA ZEWNĘTRZNEGO
Zmienić dowolny strumień zewnętrzny
ALTER LEDGER
WŁĄCZANIE REJESTRU
db_datareader PRZYZNAJ UPRAWNIENIE SELECT NA BAZĘ DANYCH::<database-name>
db_denydatareader ODMÓW WYBORU W BAZIE DANYCH::<database-name>
db_datawriter GRANT INSERT ON DATABASE::<database-name>
UDZIEL AKTUALIZACJI BAZY DANYCH::<database-name>
UDZIEL UPRAWNIEŃ DO USUWANIA NA BAZIE DANYCH::<database-name>
db_denydatawriter ODMÓW WSTAW W BAZIE DANYCH::<database-name>
ODMOWA ZMIANY W BAZIE DANYCH::<database-name>
ODMÓW USUNIĘCIA W BAZIE DANYCH::<database-name>
public Nie ma uprawnień na poziomie bazy danych związanych z rolą publicznej bazy danych. Jednak niektóre uprawnienia bazy danych są domyślnie obecne. W szczególności WYŚWIETL DOWOLNĄ DEFINICJĘ KLUCZA SZYFROWANIA KOLUMNY, WYŚWIETL DOWOLNĄ DEFINICJĘ KLUCZA GŁÓWNEGO KOLUMNY i WYBIERZ uprawnienie dla wielu poszczególnych tabel systemowych. Te uprawnienia można odwołać.

Role specjalne dla usług Azure SQL Database i Azure Synapse

Te role bazy danych istnieją tylko w wirtualnej master bazie danych. Ich uprawnienia są ograniczone do akcji wykonywanych w programie master. Do tych ról można dodawać tylko użytkowników master bazy danych. Nie można dodać identyfikatorów logowania do tych ról, ale użytkownicy mogą być tworzeni na podstawie identyfikatorów logowania, a następnie do ról można dodawać tych użytkowników. Użytkowników z zawartej bazy danych w master można również dodawać do tych ról. Jednak ograniczonym użytkownikom baz danych dodanym do roli dbmanager w master nie można zlecić tworzenia nowych baz danych.

Nazwa roli Description
dbmanager Może tworzyć i usuwać bazy danych. Członek roli dbmanager , która tworzy bazę danych, staje się właścicielem tej bazy danych, co umożliwia temu użytkownikowi nawiązanie połączenia z bazą danych jako użytkownik dbo. Użytkownik dbo ma wszystkie uprawnienia bazy danych w tej bazie. Członkowie roli dbmanager nie muszą mieć uprawnień dostępu do baz danych, których nie posiadają.
db_exporter Członkowie db_exporter stałej roli bazy danych mogą wykonywać wszystkie działania eksportu danych. Uprawnienia przyznane za pośrednictwem tej roli to CREATE TABLE, , ALTER ANY SCHEMAALTER ANY EXTERNAL DATA SOURCE, ALTER ANY EXTERNAL FILE FORMAT.

Dotyczy: Dedykowane pule SQL dla Azure Synapse Analytics (poprzednio SQL DW)
loginmanager Może tworzyć i usuwać loginy w wirtualnej bazie danych master.

Note

Podmiot główny na poziomie serwera oraz administrator Microsoft Entra (jeśli jest skonfigurowany) mają wszystkie uprawnienia w SQL Database i Azure Synapse Analytics bez konieczności bycia członkami żadnych ról. Aby uzyskać więcej informacji, zobacz Autoryzowanie dostępu bazy danych do usług SQL Database, SQL Managed Instance i Azure Synapse Analytics.

Niektóre role bazy danych nie mają zastosowania do usługi Azure SQL lub Azure Synapse:

  • db_backupoperator nie ma zastosowania w usłudze Azure SQL Database (nie w usłudze Azure SQL Managed Instance) ani w bezserwerowej puli usługi Azure Synapse Analytics, ponieważ polecenia T-SQL kopii zapasowej i przywracania nie są dostępne.

  • db_datawriter i db_denydatawriter nie mają zastosowania do bezserwerowej usługi Azure Synapse Analytics, ponieważ tylko odczytuje dane zewnętrzne.

Role w bazie danych msdb

Baza msdb danych zawiera role specjalne, które są wyświetlane w poniższej tabeli.

msdb nazwa roli Description
db_ssisadmin
db_ssisoperator
db_ssisltduser
Członkowie tych ról bazy danych mogą administrować usługą SSIS i korzystać z nich. Wystąpienia programu SQL Server uaktualnione z wcześniejszej wersji mogą zawierać starszą wersję roli, która została nazwana przy użyciu usług Data Transformation Services (DTS) zamiast usług SSIS. Aby uzyskać więcej informacji, zobacz Role usług Integration Services (SSIS Service).
dc_admin
dc_operator
dc_proxy
Członkowie tych ról bazy danych mogą administrować modułem zbierającym dane i korzystać z niego. Aby uzyskać więcej informacji, zobacz Zbieranie danych.
PolicyAdministratorRole Członkowie roli bazy danych db_ PolicyAdministratorRole mogą wykonywać wszystkie działania konfiguracyjne i konserwacyjne dotyczące zasad i warunków zarządzania opartego na zasadach. Aby uzyskać więcej informacji, zobacz Administrowanie serwerami przy użyciu zarządzania opartego na zasadach.
ServerGroupAdministratorRole
ServerGroupReaderRole
Członkowie tych ról bazy danych mogą administrować zarejestrowanymi grupami serwerów i korzystać z nich.
dbm_monitor Utworzono msdb w bazie danych, gdy pierwsza baza danych jest zarejestrowana w monitorze mirroringu baz danych. Rola dbm_monitor nie ma członków, dopóki administrator systemu nie przypisze użytkowników do roli.

Członkowie roli db_ssisadmin i roli dc_admin mogą mieć możliwość podniesienia uprawnień administratora systemu. To podniesienie uprawnień może wystąpić, ponieważ te role mogą modyfikować pakiety usług Integration Services i pakiety usług Integration Services mogą być wykonywane przez program SQL Server przy użyciu kontekstu zabezpieczeń sysadmin agenta programu SQL Server. Aby chronić przed podniesieniem uprawnień podczas uruchamiania planów konserwacji, zestawów zbierania danych i innych pakietów Integration Services, skonfiguruj zadania SQL Server Agent, które uruchamiają pakiety, aby używały konta proxy z ograniczonymi uprawnieniami lub dodawaj tylko członków sysadmin do ról db_ssisadmin i dc_admin.

Praca z rolami na poziomie bazy danych

W poniższej tabeli opisano polecenia, widoki i funkcje do pracy z rolami na poziomie bazy danych.

Feature Typ Description
sp_helpdbfixedrole Metadata Zwraca listę stałych ról bazy danych.
sp_dbfixedrolepermission Metadata Wyświetla uprawnienia stałej roli bazy danych.
sp_helprole Metadata Zwraca informacje o rolach w bieżącej bazie danych.
sp_helprolemember Metadata Zwraca informacje o członkach roli w bieżącej bazie danych.
sys.database_role_members Metadata Zwraca jeden wiersz dla każdego członka każdej roli bazy danych.
IS_MEMBER Metadata Wskazuje, czy bieżący użytkownik jest członkiem określonej grupy systemu Microsoft Windows, grupy Microsoft Entra lub roli bazy danych programu Microsoft SQL Server.
TWORZENIE ROLI Command Tworzy nową rolę bazy danych w bieżącej bazie danych.
ALTER ROLE Command Zmienia nazwę lub członkostwo roli bazy danych.
UPUŚĆ ROLĘ Command Usuwa rolę z bazy danych.
sp_addrole Command Tworzy nową rolę bazy danych w bieżącej bazie danych.
sp_droprole Command Usuwa rolę bazy danych z bieżącej bazy danych.
sp_addrolemember Command Dodaje użytkownika bazy danych, rolę bazy danych, identyfikator logowania systemu Windows lub grupę systemu Windows do roli bazy danych w bieżącej bazie danych. Wszystkie platformy z wyjątkiem systemu Analytics Platform System (PDW) i usługi Azure Synapse powinny zamiast tego używać ALTER ROLE .
sp_droprolemember Command Usuwa konto zabezpieczeń z roli programu SQL Server w bieżącej bazie danych. Wszystkie platformy z wyjątkiem systemu Analytics Platform System (PDW) i usługi Azure Synapse powinny zamiast tego używać ALTER ROLE .
GRANT Permissions Dodaje uprawnienie do roli.
DENY Permissions Odmawia uprawnień do roli.
REVOKE Permissions Usuwa wcześniej przyznane lub odrzucone uprawnienia.

Rola publicznej bazy danych

Każdy użytkownik bazy danych należy do publicznej roli bazy danych. Gdy użytkownik nie otrzymał lub nie odmówiono mu określonych uprawnień do zabezpieczanego obiektu, użytkownik dziedziczy uprawnienia przyznane publiczny na tym obiekcie. Nie można usunąć użytkowników bazy danych z roli publicznej .

Examples

W przykładach w tej sekcji pokazano, jak pracować z rolami na poziomie bazy danych.

A. Dodawanie użytkownika do roli na poziomie bazy danych

W poniższym przykładzie dodano użytkownika "Ben" do stałej roli db_datareaderna poziomie bazy danych .

ALTER ROLE db_datareader ADD MEMBER Ben;
GO

B. Wyświetl wszystkich użytkowników bazy danych będących członkami roli na poziomie bazy danych

Poniższa instrukcja zwraca wszystkich członków dowolnej roli bazy danych.

SELECT roles.principal_id AS RolePrincipalID,
    roles.name AS RolePrincipalName,
    database_role_members.member_principal_id AS MemberPrincipalID,
    members.name AS MemberPrincipalName
FROM sys.database_role_members AS database_role_members
INNER JOIN sys.database_principals AS roles
    ON database_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.database_principals AS members
    ON database_role_members.member_principal_id = members.principal_id;
GO