Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytický 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