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.
Tento článek vás provede vytvářením a používáním přihlášení podporovaných Microsoft Entra ID (dříve Azure Active Directory) ve master virtuální databázi dedikovaného SQL poolu Azure Synapse Analytics (dříve SQL DW). Dedikované SQL pooly v pracovních prostorech Azure Synapse Analytics nepoužívají logické SQL servery.
Poznámka:
Microsoft Entra server principals jsou momentálně v preview pro Azure Synapse Analytics.
V tomto návodu se naučíte, jak:
- Vytvořte přihlašovací účet Microsoft Entra ve virtuální
masterdatabázi - Vytvořte uživatele namapovaného na přihlášení Microsoft Entra ve virtuální databázi
master - 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
Prerequisites
- Dedikovaný SQL pool služby Azure Synapse Analytics a databáze.
- Ověřování Microsoft Entra nakonfigurované pro Azure Synapse Analytics. Pro více informací viz Konfigurace a správa ověřování Microsoft Entra pomocí Azure Synapse Analytics.
- 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 s rolíloginmanagermůže vytvořit přihlášení, ale ne uživatele ve virtuální databázimaster.
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řihlašovací údaje pro účet Microsoft Entra. V tomto příkladu použijte
bob@contoso.com, které existuje v doméně Microsoft Entra nazvanécontoso. Můžete si také vytvořit přihlášení ze skupiny Microsoft Entra nebo z instančního objektu služby (aplikace). 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í pro SQL autentizaci nemůže vytvořit přihlášení Microsoft Entra.
Tip
Pokud narazíte na problémy s neunikátními zobrazovacími názvy v Microsoft Entra ID, použijte
WITH OBJECT_IDrozšíření syntaxe. Tato funkce je zvlášť užitečná pro instanční objekty s duplicitními zobrazovanými názvy. Příklady:CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'Další informace najdete v článku Důležité informace k názvům.
Pomocí SQL Server Management Studio (SSMS) se přihlaste do svého vyhrazeného SQL poolu pomocí administrátorského účtu Microsoft Entra.
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_principals. Spusťte následující dotaz:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'Vidíte podobný výstup jako následující:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0Přihlašovací jméno
bob@contoso.comse vytváří ve virtuálnímasterdatabázi.
Vytvoření uživatele z přihlášení Microsoft Entra
Po vytvoření přihlášení přes Microsoft Entra vytvořte uživatele na úrovni databáze Microsoft Entra, který se namapuje na přihlášení Microsoft Entra ve virtuální
masterdatabázi. Pro ukázání, jak přidat uživatele do speciálních rolí, použijte náš příkladbob@contoso.com, k vytvoření uživatele ve virtuálnímasterdatabázi. Ve virtuálnímasterdatabázi může vytvářet uživatele pouze správce Microsoft Entra nebo správce SQL Serveru.Použijte virtuální
masterdatabázi, ale pokud chcete vytvářet uživatele v jiných databázích, můžete se znovu připojit k databázi dle vlastního výběru. 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 Object ID (například pro řešení problémů s neunikátním zobrazovaným jménem), použijte následující syntaxi:
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'Zkontrolujte vytvořeného uživatele v
sys.database_principals. Spusťte následující dotaz:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'Vidíte 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. Pokud spustíte následující syntaxi, vytvoříte uživatele obsaženého v databázi v konkrétní databázi, ke které jste připojeni. 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 jménem.
Například: CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.
Přihlášení Microsoft Entra můžete vytvořit pomocí instančního objektu služby s nejedinečným zobrazovaným názvem. Další informace najdete v článku Aspekty názvu.
Udělení rolí na úrovni serveru pro přihlášení Microsoft Entra
Přihlášení můžete přidat k pevně daným rolím na úrovni serveru, například k rolím ##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
Můžete uživatelům ve virtuální databázi master přiřadit speciální role pro Azure Synapse Analytics.
Pro udělení jedné ze speciálních databázových rolí uživateli musí uživatel existovat ve virtuální master databázi.
Chcete-li přidat uživatele do role, spusťte 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 následujícím příkladu vytvoříte uživatele bob@contoso.com. Přiřaďte role dbmanager a loginmanager uživateli.
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%'Vidíte podobný výstup jako následující:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Volitelné – Zakázání přihlášení
Použijte syntaxi DDL ALTER LOGIN (Transact-SQL) k povolení nebo zakázání přihlášení Microsoft Entra v dedikovaném SQL poolu.
ALTER LOGIN [bob@contoso.com] DISABLE
Aby se změny DISABLE nebo ENABLE projevily okamžitě, vymažte ověřovací mezipaměť a mezipaměť TokenAndPermUserStore pomocí následujících příkazů T-SQL:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Zkontrolujte, zda je přihlášení deaktivováno, spuštěním následujícího dotazu:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1