Kurz: Vytvoření a využití přihlášení k serveru Microsoft Entra
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í
master
databá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í
master
databázi - 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. Spravovaná instance Azure SQL už může využívat přihlášení Microsoft Entra.
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í
master
databáze. Uživatele ve virtuálnímaster
databá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 sloginmanager
rolí může vytvořit přihlášení, ale ne uživatele ve virtuálnímaster
databázi.
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říkladmygroup
skupina 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řihlášení Microsoft Entra.
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
master
a vyberte Nový dotaz a otevřete okno nového dotazu v kontextumaster
databáze.Spusťte tento dotaz:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GO
Zkontrolujte vytvořené přihlášení v
sys.server_principals
souboru . 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 0
bob@contoso.com
Přihlášení bylo vytvořeno ve virtuálnímaster
databá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í
master
databázi. Budeme dál používat náš příklad kbob@contoso.com
vytvoření uživatele ve virtuálnímaster
databázi, protože chceme předvést přidání uživatele do speciálních rolí. Ve virtuálnímaster
databázi může vytvářet uživatele pouze správce Microsoft Entra nebo správce SQL Serveru.Stále používáme virtuální
master
databá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.Zkontrolujte vytvořeného uživatele v
sys.database_principals
souboru . 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 se vytvoří databáze obsažená uživatelem v konkrétní databázi, ke které jste připojení. 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 podporovány 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.