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í pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
sql database v Microsoft Fabric
Pomocí uživatelů databáze s omezením můžete ověřovat připojení k SQL Serveru a službě Azure SQL Database na úrovni databáze. Obsažená databáze je databáze, která je izolovaná od jiných databází a od instance SQL Serveru nebo sql Database (a master databáze), která je hostitelem databáze.
SQL Server podporuje uživatele obsažené databáze pro ověřování jak systému Windows, tak SQL Server. Při používání služby SQL Database zkombinujte uživatele obsažené databáze s pravidly brány firewall na úrovni databáze.
Tento článek přehledně ukazuje výhody používání modelu omezené databáze ve srovnání s tradičním modelem přihlášení/uživatele a pravidly brány firewall na úrovni serveru nebo Windows. Konkrétní scénáře, možnosti správy nebo obchodní logika aplikací můžou stále vyžadovat použití tradičního modelu přihlášení/uživatele a pravidel brány firewall na úrovni serveru.
Tradiční model přihlášení a uživatele
V tradičním modelu připojení se uživatelé systému Windows nebo členové skupin Windows připojují k databázovému stroji zadáním přihlašovacích údajů uživatele nebo skupiny ověřených systémem Windows. Nebo uživatelé můžou zadat jméno i heslo a připojit se pomocí ověřování SQL Serveru. V obou případech master musí mít databáze přihlašovací jméno, které odpovídá připojovacím přihlašovacím údajům.
Jakmile Databázový stroj potvrdí přihlašovací údaje systému Windows nebo ověří přihlašovací údaje SQL Serveru, připojení se obvykle pokusí navázat spojení s uživatelskou databází. Pokud se chcete připojit k uživatelské databázi, musí být přihlášení přidruženo k uživateli databáze. Připojovací řetězec může také určovat připojení ke konkrétní databázi, která je volitelná v SQL Serveru, ale vyžaduje se ve službě SQL Database.
Důležitým principem je, že přihlášení (v master databázi) i uživatel (v uživatelské databázi) musí existovat a vzájemně souviset. Připojení k uživatelské databázi má závislost na přihlášení v master databázi. Tato závislost omezuje možnost přesunu databáze do jiné hostující instance SQL Serveru nebo serveru Azure SQL Database.
Pokud připojení k databázi master není dostupné (například probíhá převzetí služeb), celkový čas připojení se prodlouží nebo může dojít k vypršení časového limitu připojení. Nedostupné připojení může snížit škálovatelnost připojení.
Uživatelský model databáze s omezením
V uzavřeném modelu uživatele databáze není přihlášení do databáze master. Místo toho probíhá proces ověřování v uživatelské databázi. Uživatel databáze v uživatelské databázi nemá přidružené přihlášení.master
Model uživatele obsažený v databázi podporuje ověřování systému Windows i ověřování SQL Serveru. Můžete ho použít jak v SQL Serveru, tak ve službě SQL Database.
Pokud se chcete připojit jako uživatel databáze s omezením, musí připojovací řetězec vždy obsahovat parametr uživatelské databáze. Databázový stroj používá tento parametr ke zjištění, která databáze je zodpovědná za správu procesu ověřování.
Aktivita uživatele databáze s omezením je omezená na ověřovací databázi. Uživatelský účet databáze musí být vytvořen nezávisle v každé databázi, kterou uživatel potřebuje. Aby uživatelé služby SQL Database mohli měnit databáze, musí vytvořit nové připojení. Uživatelé databáze s omezením na SQL Serveru můžou měnit databáze, pokud je v jiné databázi identický uživatel.
V Azure podporují SQL Database a Azure Synapse Analytics identity z Microsoft Entra ID (dříve Azure Active Directory) jako uživatelé databáze s omezením. SQL Database podporuje uživatele databáze s omezením, kteří používají ověřování SQL Serveru, ale Azure Synapse Analytics ne. Další informace naleznete v tématu Připojení ke službě SQL Database pomocí ověřování Microsoft Entra.
Pokud používáte ověřování Microsoft Entra, můžou uživatelé vytvářet připojení z aplikace SQL Server Management Studio pomocí univerzálního ověřování Microsoft Entra. Správci můžou nakonfigurovat univerzální ověřování tak, aby vyžadovalo vícefaktorové ověřování, které ověřuje identitu pomocí telefonního hovoru, textové zprávy, čipové karty s PIN kódem nebo oznámením mobilní aplikace. Další informace naleznete v tématu Použití vícefaktorového ověřování Microsoft Entra.
Pro SQL Database a Azure Synapse Analytics se název databáze vždy vyžaduje v připojovacím řetězci. Takže při přechodu z tradičního modelu na model uživatele databáze s omezením nemusíte měnit připojovací řetězec. V případě připojení k SQL Serveru musí být název databáze přidán do připojovacího řetězce, pokud ještě není k dispozici.
Important
Při používání tradičního modelu můžou role na úrovni serveru a oprávnění na úrovni serveru omezit přístup ke všem databázím. Pokud používáte model databáze s omezením, můžou vlastníci databází a uživatelé databáze, kteří mají ALTER oprávnění ANY USER udělit přístup k databázi. Toto oprávnění snižuje řízení přístupu k vysoce privilegovaným přihlašovacím údajům serveru a rozšiřuje řízení přístupu tak, aby zahrnovalo uživatele vysoce privilegované databáze.
Firewalls
SQL Server
Pravidla Windows Firewall platí pro všechny připojení k SQL Serveru a mají stejný účinek na přihlášení (tradiční model připojení) i na uživatele v obsažené databázi. Další informace o bráně Windows Firewall naleznete v tématu Konfigurace brány Windows Firewall pro přístup k databázovému stroji.
Brány firewall pro SQL Database
SQL Database umožňuje samostatná pravidla firewallu pro připojení na úrovni serveru (přihlášení) a pro připojení na úrovni databáze (uživatelé obsažené databáze). Když se služba SQL Database připojí k uživatelské databázi, nejprve zkontroluje pravidla brány firewall databáze. Pokud neexistuje pravidlo, které povoluje přístup k databázi, sql Database zkontroluje pravidla brány firewall na úrovni serveru. Kontrola pravidel brány firewall na úrovni serveru vyžaduje přístup k databázi serveru master SLUŽBY SQL Database.
Pravidla brány firewall na úrovni databáze v kombinaci s uživateli databáze s omezením můžou eliminovat potřebu přístupu k master databázi serveru během připojení. Výsledkem je lepší škálovatelnost připojení.
Další informace o pravidlech brány firewall služby SQL Database najdete v následujících článcích:
- Brána firewall služby Azure SQL Database
- Konfigurace nastavení brány firewall (Azure SQL Database)
- Sp_set_firewall_rule (Azure SQL Database)
- Sp_set_database_firewall_rule (Azure SQL Database)
Rozdíly v syntaxi
| Tradiční model | Uživatelský model databáze s omezením |
|---|---|
Když jste připojení k master databázi:CREATE LOGIN login_name WITH PASSWORD = 'strong_password';Potom, když jste připojení k uživatelské databázi: CREATE USER 'user_name' FOR LOGIN 'login_name'; |
Když jste připojení k uživatelské databázi:CREATE USER user_name WITH PASSWORD = 'strong_password'; |
| Tradiční model | Uživatelský model databáze s omezením |
|---|---|
Změna hesla v kontextu master databáze:ALTER LOGIN login_name WITH PASSWORD = 'strong_password'; |
Změna hesla v kontextu uživatelské databáze:ALTER USER user_name WITH PASSWORD = 'strong_password'; |
SQL Managed Instance
Spravovaná instance Azure SQL se chová jako místní SQL Server v kontextu obsažených databází. Při vytváření uživatele s omezením nezapomeňte změnit kontext databáze z master databáze na uživatelskou databázi. Kromě toho by při nastavování možnosti zahrnutí neměla existovat žádná aktivní připojení k uživatelské databázi. Jako vodítko použijte následující kód.
Warning
Následující ukázkový skript používá kill příkaz k zavření všech uživatelských procesů v databázi. Před spuštěním tohoto skriptu se ujistěte, že rozumíte důsledkům tohoto skriptu a že vyhovuje vaší firmě. Ujistěte se také, že ve vaší databázi služby SQL Managed Instance nejsou aktivní žádná další připojení, protože skript naruší další procesy spuštěné v databázi.
USE master;
SELECT * FROM sys.dm_exec_sessions
WHERE database_id = db_id('Test')
DECLARE @kill_string varchar(8000) = '';
SELECT @kill_string = @kill_string + 'KILL ' + str(session_id) + '; '
FROM sys.dm_exec_sessions
WHERE database_id = db_id('Test') and is_user_process = 1;
EXEC(@kill_string);
GO
sp_configure 'contained database authentication', 1;
GO
RECONFIGURE;
GO
SELECT * FROM sys.dm_exec_sessions
WHERE database_id = db_id('Test')
ALTER DATABASE Test
SET containment=partial
USE Test;
GO
CREATE USER Carlo
WITH PASSWORD='Enterpwdhere*'
SELECT containment_desc FROM sys.databases
WHERE name='Test'
Remarks
- Uživatelé databáze s omezením musí být povoleni pro každou instanci SQL Serveru. Další informace naleznete v tématu Ověřování databáze s omezením (možnost konfigurace serveru).
- Uživatelé vnitřní databáze a přihlášení s jedinečnými názvy mohou ve vašich aplikacích koexistovat.
- Předpokládejme, že přihlašovací jméno v
masterdatabázi má název1. Pokud vytvoříte uživatele omezené databáze s názvem name1, při zadání názvu databáze v připojovacím řetězci bude kontext uživatele databáze zvolen místo kontextu přihlášení pro připojení k databázi. To znamená, že uživatel databáze s omezením má přednost před přihlášeními, která mají stejný název. - Ve službě SQL Database nemůže být název uživatele obsažené databáze stejný jako název účtu správce serveru.
- Účet správce serveru SQL Database nemůže být nikdy uživatelem databáze s omezením. Správce serveru má dostatečná oprávnění k vytváření a správě uživatelů databáze s omezením. Správce serveru může udělit oprávnění uživatelům databáze s omezením v uživatelských databázích.
- Protože uživatelé s omezením databáze jsou objekty zabezpečení na úrovni databáze, musíte vytvořit uživatele s omezením databáze v každé databázi, ve které byste je použili. Identita je omezena pouze na databázi. Identita je nezávislá (ve všech aspektech) od uživatele, který má stejný název a stejné heslo v jiné databázi na stejném serveru.
- Používejte stejnou sílu hesel, která byste normálně používali pro přihlášení.