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:Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (pouze vyhrazené fondy SQL)
Tento článek vás provede vytvářením a používáním přihlašovacích údajů založených na Microsoft Entra ID (dříve Azure Active Directory) ve virtuální master databázi Azure SQL.
V tomto kurzu se naučíte:
- Vytvoření přihlášení Microsoft Entra ve virtuální
masterdatabázi s novým rozšířením syntaxe pro Azure SQL Database - Vytvoření uživatele namapovaného na přihlášení Microsoft Entra ve virtuální
masterdatabázi - Použijte syntaxi
WITH OBJECT_IDpro neunikátní zobrazované názvy - Udělení rolí serveru uživateli Microsoft Entra
- Zakázání přihlášení Microsoft Entra
Poznámka:
Instanční objekty serveru Microsoft Entra (přihlášení) jsou aktuálně ve verzi Public Preview pro Azure SQL Database. Azure SQL Managed Instance a SQL Server 2022 a novější už můžou využívat přihlášení Microsoft Entra v obecné dostupnosti.
Požadavky
- SQL Database nebo SQL Managed Instance s databází. Viz Rychlý start: Vytvoření izolované databáze Azure SQL Database, pokud jste ještě nevytvořili službu Azure SQL Database, nebo rychlý start: Vytvoření spravované instance Azure SQL.
- Nastavení ověřování Microsoft Entra pro SLUŽBU SQL Database nebo SQL Managed Instance Další informace najdete v tématu Konfigurace a správa ověřování Microsoft Entra pro Azure SQL.
- Tento článek vás vyzve k vytvoření přihlášení a uživatele Microsoft Entra v rámci virtuální
masterdatabáze. Uživatele ve virtuálnímasterdatabázi může vytvořit jenom správce Microsoft Entra, proto při procházení tohoto kurzu doporučujeme použít účet správce Microsoft Entra. Objekt zabezpečení Microsoft Entra sloginmanagerrolí může vytvořit přihlášení, ale ne uživatele ve virtuálnímasterdatabázi.
Poznámka:
Pro organizace, které mají neunikátní zobrazovací názvy v Microsoft Entra ID (zejména pro principy služeb), ujistěte se, že máte k dispozici informace o ID objektu pro všechny principy služeb, pro které plánujete vytvářet přihlášení. Rozšíření WITH OBJECT_ID syntaxe vám může pomoct tyto scénáře vyřešit.
Vytvoření přihlášení Microsoft Entra
Vytvořte přihlášení k Azure SQL Database pro účet Microsoft Entra. V našem příkladu použijeme
bob@contoso.com, které existuje v naší doméně Microsoft Entra s názvemcontoso. Přihlášení lze vytvořit také ze skupiny Microsoft Entra nebo instančního objektu (aplikací). To je napříkladmygroupskupina Microsoft Entra skládající se z účtů Microsoft Entra, které jsou členem této skupiny. Další informace najdete v tématu CREATE LOGIN (Transact-SQL).Poznámka:
První přihlášení Microsoft Entra musí vytvořit správce Microsoft Entra. Správcem Microsoft Entra může být uživatel nebo skupina Microsoft Entra. Přihlášení SQL nemůže vytvořit přihlašovací údaje Microsoft Entra.
Tip
Pokud narazíte na problémy s neunikátními zobrazovanými názvy ve službě Microsoft Entra ID, můžete použít rozšíření syntaxe
WITH OBJECT_ID. Tato funkce je zvlášť užitečná pro instanční objekty s duplicitními zobrazovanými názvy. Například:CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'Další podrobnosti najdete v Microsoft Entra logins and users with nonunique display names.
Pomocí aplikace SQL Server Management Studio (SSMS) se přihlaste ke službě SQL Database pomocí účtu správce Microsoft Entra nastaveného pro server.
Rozbalte Databáze>Systémové databáze. Klikněte pravým tlačítkem na databázi
mastera vyberte Nový dotaz a otevřete okno nového dotazu v kontextumasterdatabáze.Spusťte tento dotaz:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOZkontrolujte vytvořené přihlášení v
sys.server_principalssouboru . Spusťte následující dotaz:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'Zobrazí se podobný výstup jako následující:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0bob@contoso.comPřihlášení bylo vytvořeno ve virtuálnímasterdatabázi.
Vytvoření uživatele z přihlášení Microsoft Entra
Teď, když jsme vytvořili přihlášení Microsoft Entra, můžeme vytvořit uživatele Microsoft Entra na úrovni databáze, který je namapován na přihlášení Microsoft Entra ve virtuální
masterdatabázi. Budeme dál používat náš příklad kbob@contoso.comvytvoření uživatele ve virtuálnímasterdatabázi, protože chceme předvést přidání uživatele do speciálních rolí. Ve virtuálnímasterdatabázi může vytvářet uživatele pouze správce Microsoft Entra nebo správce SQL Serveru.Stále používáme virtuální
masterdatabázi, ale pokud chcete vytvořit uživatele v jiných databázích, můžete se k databázi podle svého výběru znovu připojit. Spusťte následující dotaz.CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]Tip
I když není nutné používat uživatelské aliasy Microsoft Entra (například
bob@contoso.com), doporučuje se použít stejný alias pro uživatele Microsoft Entra a přihlášení Microsoft Entra.Pokud potřebujete vytvořit uživatele přímo od externího poskytovatele s konkrétním ID Objektu (například při řešení problému s neduplicitním zobrazovaným názvem), můžete také použít:
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'Zkontrolujte vytvořeného uživatele v
sys.database_principalssouboru . Spusťte následující dotaz:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'Zobrazí se podobný výstup jako následující:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Poznámka:
Stávající syntaxe pro vytvoření uživatele Microsoft Entra bez přihlášení Microsoft Entra je stále podporována. Spuštěním následující syntaxe vytvoříte uživatele obsaženého v databázi, ke které jste připojeni. Důležité je, že tento uživatel není přidružený k žádnému přihlášení, i když ve virtuální master databázi existuje přihlášení se stejným názvem.
Například CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.
Pomocí instančního objektu s jiným zobrazovaným názvem můžete vytvořit přihlášení Microsoft Entra. Další informace naleznete v tématu Microsoft Entra logins and users with nonunique display names
Udělení rolí na úrovni serveru pro přihlášení Microsoft Entra
Přihlášení můžete přidat do pevných rolí na úrovni serveru, například do role ##MS_DefinitionReader##, ##MS_ServerStateReader##, nebo ##MS_ServerStateManager## v databázi master.
Poznámka:
Zde uvedené role na úrovni serveru nejsou podporované pro skupiny Microsoft Entra.
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateManager## ADD MEMBER [AzureAD_object];
Oprávnění nejsou platná, dokud se uživatel znovu nepřipojí. Vyprázdněte také mezipaměť DBCC:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Pokud chcete zkontrolovat, která přihlášení Microsoft Entra jsou součástí rolí na úrovni serveru, spusťte následující dotaz:
SELECT roles.principal_id AS RolePID,roles.name AS RolePName,
server_role_members.member_principal_id AS MemberPID, members.name AS MemberPName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.server_principals AS members
ON server_role_members.member_principal_id = members.principal_id;
Udělení zvláštních rolí pro uživatele Microsoft Entra
Aby bylo možné uživateli udělit jednu ze speciálních databázových rolí, musí uživatel existovat ve virtuální master databázi.
Pokud chcete přidat uživatele do role, můžete spustit následující dotaz:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
Pokud chcete odebrat uživatele z role, spusťte následující dotaz:
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object může být uživatelem, skupinou nebo instančním objektem Microsoft Entra v MICROSOFT Entra ID.
V našem příkladu jsme vytvořili uživatele bob@contoso.com. Dejte uživateli role dbmanager a loginmanager .
Spusťte tento dotaz:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]Spuštěním následujícího dotazu zkontrolujte přiřazení role databáze:
SELECT DP1.name AS DatabaseRoleName, isnull (DP2.name, 'No members') AS DatabaseUserName FROM sys.database_role_members AS DRM RIGHT OUTER JOIN sys.database_principals AS DP1 ON DRM.role_principal_id = DP1.principal_id LEFT OUTER JOIN sys.database_principals AS DP2 ON DRM.member_principal_id = DP2.principal_id WHERE DP1.type = 'R'and DP2.name like 'bob%'Zobrazí se podobný výstup jako následující:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Volitelné – Zakázání přihlášení
Syntaxi DDL ALTER LOGIN (Transact-SQL) lze použít k povolení nebo zakázání přihlášení Microsoft Entra ve službě Azure SQL Database.
ALTER LOGIN [bob@contoso.com] DISABLE
DISABLE
ENABLE Aby se změny projevily okamžitě, musí být mezipaměť ověřování a mezipaměť TokenAndPermUserStore vymazána pomocí následujících příkazů T-SQL:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Spuštěním následujícího dotazu zkontrolujte, jestli je přihlášení zakázané:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1
Případ použití by byl povolený jen pro čtení na geografických replikách, ale odepřít připojení na primárním serveru.