Sdílet prostřednictvím


Role na úrovni databáze

Platí na:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytický platformový systém (PDW)SQL databáze v Microsoft Fabric

Pro snadnou správu oprávnění v databázích poskytuje SQL Server několik rolí, které jsou objekty zabezpečení, které seskupují další objekty zabezpečení. Jsou to skupiny v operačním systému Windows. Role na úrovni databází mají rozsah oprávnění pro celou databázi.

Pokud chcete přidat a odebrat uživatele do databázové role, použijte ADD MEMBER příkaz ALTER ROLE a DROP MEMBER možnosti. Systém PDW (Analytics Platform System) a Azure Synapse Analytics nepodporují použití ALTER ROLE. Místo toho použijte starší sp_addrolemember a sp_droprolemember postupy.

Existují dva typy rolí na úrovni databáze: pevné databázové role , které jsou předdefinované v databázi a uživatelsky definované databázové role , které můžete vytvořit.

Pevné databázové role jsou definovány na úrovni databáze a existují v každé databázi. Členové databázové role db_owner mohou spravovat pevné členství v rolích databáze. V databázi msdb jsou také některé role databáze, které mají zvláštní účely.

Do rolí na úrovni databáze můžete přidat libovolný účet databáze a další role SQL Serveru.

Tip

Nepřidávejte uživatelem definované databázové role jako členy pevných rolí. To by mohlo umožnit eskalaci nechtěných oprávnění.

Oprávnění uživatelem definovaných databázových rolí je možné přizpůsobit pomocí příkazů GRANT, DENY a REVOKE . Další informace naleznete v tématu Oprávnění (databázový stroj).

Seznam všech oprávnění najdete v plakátu s oprávněními databázového stroje . Oprávnění na úrovni serveru nelze udělit databázovým rolím. Přihlášení a další objekty zabezpečení na úrovni serveru (například role serveru) nelze přidat do databázových rolí. Pro zabezpečení na úrovni serveru v SQL Serveru použijte místo toho role serveru . Oprávnění na úrovni serveru není možné udělit prostřednictvím rolí ve službě Azure SQL Database a Azure Synapse Analytics.

Pevné databázové role

Následující tabulka uvádí pevné databázové role a jejich možnosti. Tyto role existují ve všech databázích. S výjimkou role veřejné databáze není možné změnit oprávnění přiřazená k pevným databázovým rolím.

Opravený název databázové role Description
db_owner Členové pevné role databáze db_owner mohou provádět všechny aktivity konfigurace a údržby databáze, a také mohou DROP databázi na SQL Serveru. (V SQL Database a Azure Synapse některé aktivity údržby vyžadují oprávnění na úrovni serveru a nedají se provádět db_owners.)
db_securityadmin Členové db_securityadmin pevné databázové role mohou měnit členství rolí pouze pro vlastní role a spravovat oprávnění. Členové této role mohou potenciálně zvýšit svá oprávnění a jejich akce by se měly monitorovat.
db_accessadmin Členové db_accessadmin pevné databázové role mohou přidávat nebo odebírat přístup k databázi pro přihlášení windows, skupiny Windows a přihlášení SQL Serveru.
db_backupoperator Členové db_backupoperator pevné databázové role můžou databázi zálohovat.
db_ddladmin Členové db_ddladmin pevné databázové role mohou v databázi spustit libovolný příkaz DDL (Data Definition Language). Členové této role mohou potenciálně zvýšit svá oprávnění tím, že manipulují s kódem, který se může spouštět pod vysokými oprávněními, a jejich akce by se měly monitorovat.
db_datawriter Členové db_datawriter pevné databázové role mohou přidávat, odstraňovat nebo měnit data ve všech uživatelských tabulkách. Ve většině případů se tato role kombinuje s db_datareader členstvím, aby bylo možné číst data, která se mají upravit.
db_datareader Členové db_datareader pevné databázové role mohou číst všechna data ze všech uživatelských tabulek a zobrazení. Objekty uživatele mohou existovat v libovolném schématu s výjimkou sys a INFORMATION_SCHEMA.
db_denydatawriter Členové db_denydatawriter pevné databázové role nemůžou přidávat, upravovat ani odstraňovat žádná data v uživatelských tabulkách v databázi.
db_denydatareader Členové db_denydatareader pevné databázové role nemohou číst žádná data z uživatelských tabulek a zobrazení v databázi. Členové této role také nemohou číst metadata o databázi a jejích objektech, jako je zobrazení systémových zobrazení.

Oprávnění přiřazená k pevným databázovým rolím se nedají změnit. Všechny role (včetně public role) mají oprávnění CONNECT. Následující obrázek znázorňuje oprávnění přiřazená k pevným databázovým rolím:

Název role Permissions
db_owner CONTROL DATABASE: Má všechna oprávnění v databázi.
db_securityadmin ZMĚNIT JAKOUKOLI APLIKAČNÍ ROLI
VYTVOŘIT SCHÉMA
ZMĚNIT JAKOUKOLI ROLI
ZOBRAZIT DEFINICI
db_accessadmin ZMĚNA LIBOVOLNÉHO UŽIVATELE
VYTVOŘIT SCHÉMA
VYTVOŘIT UŽIVATELE
db_backupoperator ZÁLOHOVAT DATABÁZI
ZÁLOHOVACÍ ZÁZNAM
CHECKPOINT
db_ddladmin ZMĚNIT JAKOUKOLIV SESTAVU
ZMĚNIT JAKÝKOLI ASYMETRICKÝ KLÍČ
Upravit jakýkoli certifikát
ZMĚNIT JAKOUKOLI SMLOUVU
ALTER ANY DATABÁZOVÝ DDL TRIGGER
UPRAVIT JAKÁKOLI OZNÁMENÍ O UDÁLOSTI DATABÁZE
ZMĚNIT JAKÝKOLIV DATOVÝ PROSTOR
ZMĚNIT JAKOUKOLI EXTERNÍ KNIHOVNU
ZMĚNIT JAKÝKOLI FULLTEXTOVÝ KATALOG
ZMĚNIT JAKÝKOLI TYP ZPRÁVY
"Povolit úpravy jakéhokoliv vzdáleného služebního propojení"
ZMĚNIT JAKOUKOLI TRASU
ZMĚNIT JAKÉKOLIV SCHÉMA
ZMĚNIT LIBOVOLNOU SLUŽBU
ZMĚNIT JAKÝKOLIV SYMMETRICKÝ KLÍČ
CHECKPOINT
VYTVOŘIT AGREGÁT
CREATE ASSEMBLY (vytvořit sestavení)
VYTVOŘENÍ ASYMETRICKÉHO KLÍČE
VYTVOŘENÍ CERTIFIKÁTU
VYTVOŘIT SMLOUVU
VYTVOŘENÍ OZNÁMENÍ UDÁLOSTI DDL DATABÁZE
VYTVOŘIT VÝCHOZÍ
VYTVOŘENÍ EXTERNÍ KNIHOVNY
VYTVOŘIT FULLTEXT KATALOG
VYTVOŘIT FUNKCI
VYTVOŘENÍ TYPU ZPRÁVY
VYTVOŘENÍ POSTUPU
VYTVOŘIT FRONTU
VYTVOŘENÍ VAZBY VZDÁLENÉ SLUŽBY
VYTVOŘIT TRASU
VYTVOŘIT PRAVIDLO
VYTVOŘIT SCHÉMA
VYTVOŘIT SLUŽBU
VYTVOŘENÍ SYMETRICKÉHO KLÍČE
VYTVOŘIT SYNONYMUM
CREATE TABLE
VYTVOŘIT TYP
VYTVOŘIT ZOBRAZENÍ
VYTVOŘENÍ KOLEKCE SCHÉMAT XML
ODKAZY

Platí pro: SQL Server 2019 a novější
ZMĚNIT JAKÝKOLI EXTERNÍ JAZYK
VYTVOŘENÍ EXTERNÍHO JAZYKA

Platí pro: SQL Server 2022 a novější
UPRAVIT JAKÝKOLIV EXTERNÍ ZDROJ DAT
ZMĚNIT JAKÝKOLI EXTERNÍ FORMÁT SOUBORU
Upravit jakoukoli externí práci
UPRAVIT JAKÝKOLIV EXTERNÍ PROUD
ZMĚNIT LEDGER
POVOLIT LEDGER
db_datareader GRANT SELECT ON DATABASE::<database-name>
db_denydatareader ODEPŘÍT VÝBĚR DATABÁZE::<database-name>
db_datawriter GRANT INSERT ON DATABASE::<database-name>
GRANT UPDATE NA DATABÁZI::<database-name>
Přiřaďte oprávnění DELETE na databázi::<database-name>
db_denydatawriter ZAKÁZAT VLOŽENÍ DO DATABÁZE::<database-name>
ODEPŘÍT AKTUALIZACI V DATABÁZI::<database-name>
ODEPŘÍT ODSTRANĚNÍ V DATABÁZI::<database-name>
public Role veřejné databáze neobsahuje žádná oprávnění na úrovni databáze. Některá oprávnění databáze jsou ale ve výchozím nastavení k dispozici. Konkrétně lze zobrazit definice šifrovacího klíče libovolného sloupce, definice klíče mistra sloupce a právo SELECT pro jednotlivé systémové tabulky. Tato oprávnění je možné odvolat.

Speciální role pro Azure SQL Database a Azure Synapse

Tyto databázové role existují pouze ve virtuální master databázi. Jejich oprávnění jsou omezena na akce prováděné v master. Do těchto rolí je možné přidat pouze uživatele master databáze. K těmto rolím není možné přidat přihlášení, ale uživatele je možné vytvořit na základě přihlášení a pak je můžete přidat do rolí. Do těchto rolí je možné přidat také uživatele master databáze s omezením. Uživatelé databáze s omezením přidaní do role master se ale nedají použít k vytváření nových databází.

Název role Description
dbmanager Může vytvářet a odstraňovat databáze. Člen role dbmanager , která vytvoří databázi, se stane vlastníkem této databáze, což uživateli umožní připojit se k této databázi jako uživatel dbo. Uživatel dbo má všechna oprávnění databáze v databázi. Členové role dbmanager nemusí mít nutně oprávnění pro přístup k databázím, které nevlastní.
db_exporter Členové db_exporter pevné databázové role mohou provádět všechny aktivity exportu dat. Oprávnění udělená prostřednictvím této role jsou CREATE TABLE, ALTER ANY SCHEMA, ALTER ANY EXTERNAL DATA SOURCE, ALTER ANY EXTERNAL FILE FORMAT.

Platí pro: Vyhrazené SQL fondy služby Azure Synapse Analytics (dříve SQL DW)
loginmanager Může vytvářet a odstraňovat přihlášení ve virtuální master databázi.

Note

Principál na úrovni serveru, správce Microsoft Entra (pokud je nastaven), mají všechna oprávnění ve službě SQL Database a Azure Synapse Analytics, aniž by museli být členy žádné role. Další informace najdete v tématu Autorizace přístupu k databázím SQL Database, SQL Managed Instance a Azure Synapse Analytics.

Některé databázové role se nevztahují na Azure SQL ani Azure Synapse:

  • db_backupoperator není možné použít ve službě Azure SQL Database (ne ve službě Azure SQL Managed Instance) a bezserverovém fondu Azure Synapse Analytics, protože příkazy T-SQL pro zálohování a obnovení nejsou dostupné.

  • db_datawriter a db_denydatawriter se nevztahují na bezserverovou službu Azure Synapse Analytics, protože jen čte externí data.

Role v databázi msdb

Databáze msdb obsahuje role pro zvláštní účely, které jsou uvedeny v následující tabulce.

msdb název role Description
db_ssisadmin
db_ssisoperator
db_ssisltduser
Členové těchto databázových rolí mohou spravovat a používat službu SSIS. Instance SYSTÉMU SQL Server upgradované ze starší verze můžou obsahovat starší verzi role, která byla pojmenována pomocí služby DTS (Data Transformation Services) místo služby SSIS. Další informace najdete v tématu Role integračních služeb (služba SSIS).
dc_admin
dc_operator
dc_proxy
Členové těchto databázových rolí mohou spravovat a používat kolektor dat. Další informace naleznete v tématu Shromažďování dat.
PolicyAdministratorRole Členové role databáze db_ PolicyAdministratorRole mohou provádět veškeré konfigurační a údržbové činnosti týkající se zásad a podmínek Správa na základě zásad. Další informace naleznete v tématu Správa serverů pomocí správy na základě zásad.
ServerGroupAdministratorRole
ServerGroupReaderRole
Členové těchto databázových rolí mohou spravovat a používat registrované skupiny serverů.
dbm_monitor Vytvořeno v msdb databázi, když je první databáze zaregistrována v Monitoru zrcadlení databáze. Role dbm_monitor nemá žádné členy, dokud správce systému nepřiřadí uživatele k této roli.

Členové role db_ssisadmin a role dc_admin mohou mít možnost povýšit svá oprávnění na správce systému. K tomuto zvýšení oprávnění může dojít, protože tyto role mohou upravovat balíčky integračních služeb a balíčky integračních služeb lze spouštět sql Serverem pomocí kontextu zabezpečení správce systému SQL Server agenta. Pokud chcete chránit před tímto zvýšením oprávnění při spouštění plánů údržby, sad kolekcí dat a dalších balíčků integračních služeb, nakonfigurujte úlohy agenta SQL Serveru, které spouštějí balíčky, aby používaly účet proxy s omezenými oprávněními nebo přidávaly členy správce systému do rolí db_ssisadmin a dc_admin.

Práce s rolemi na úrovni databáze

Následující tabulka vysvětluje příkazy, zobrazení a funkce pro práci s rolemi na úrovni databáze.

Feature Typ Description
sp_helpdbfixedrole Metadata Vrátí seznam pevných databázových rolí.
sp_dbfixedrolepermission Metadata Zobrazí oprávnění pevné databázové role.
sp_helprole Metadata Vrátí informace o rolích v aktuální databázi.
sp_helprolemember Metadata Vrátí informace o členech role v aktuální databázi.
sys.database_role_members Metadata Vrátí jeden řádek pro každého člena každé databázové role.
IS_MEMBER Metadata Určuje, zda je aktuální uživatel členem zadané skupiny Systému Microsoft Windows, skupiny Microsoft Entra nebo databázové role Microsoft SQL Serveru.
VYTVOŘIT ROLI Command Vytvoří v aktuální databázi novou roli databáze.
ÚPRAVA ROLE Command Změní název nebo členství v databázové roli.
DROP ROLE Command Odebere roli z databáze.
sp_addrole Command Vytvoří v aktuální databázi novou roli databáze.
sp_droprole Command Z aktuální databáze odebere roli databáze.
sp_addrolemember Command Přidá uživatele databáze, roli databáze, přihlášení systému Windows nebo skupinu Windows do databázové role v aktuální databázi. Místo toho by se měly používat ALTER ROLE všechny platformy s výjimkou systému PDW (Analytics Platform System) a Azure Synapse.
sp_droprolemember Command Odebere účet zabezpečení z role SQL Serveru v aktuální databázi. Místo toho by se měly používat ALTER ROLE všechny platformy s výjimkou systému PDW (Analytics Platform System) a Azure Synapse.
GRANT Permissions Přidá oprávnění k roli.
DENY Permissions Odmítne oprávnění k roli.
REVOKE Permissions Odebere dříve udělená nebo odepřená oprávnění.

Role veřejné databáze

Každý uživatel databáze patří do role veřejné databáze. Pokud uživatel nebyl udělen nebo odepřen konkrétní oprávnění k zabezpečitelnému objektu, uživatel zdědí oprávnění udělená veřejnosti v daném objektu. Uživatele databáze nelze odebrat z veřejné role.

Examples

Příklady v této části ukazují, jak pracovat s rolemi na úrovni databáze.

A. Přidání uživatele do role na úrovni databáze

Následující příklad přidá uživatele "Ben" do pevné role db_datareaderna úrovni databáze .

ALTER ROLE db_datareader ADD MEMBER Ben;
GO

B. Vypište všechny principy databáze, které jsou členy role na úrovni databáze

Následující příkaz vrátí všechny členy libovolné databázové role.

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