Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln guidar dig genom att skapa och använda inloggningar som backas upp av Microsoft Entra ID (tidigare Azure Active Directory) i den virtuella master databasen i en dedikerad SQL-pool för Azure Synapse Analytics (tidigare SQL DW). Dedikerade SQL-pooler i Azure Synapse Analytics-arbetsytor använder inte logiska SQL-servrar.
Note
Microsoft Entra Server Principals är för närvarande i förhandsvisning för Azure Synapse Analytics.
I den här tutorialen lär du dig följande:
- Skapa en Microsoft Entra-inloggning i den virtuella
masterdatabasen - Skapa en användare som mappats till en Microsoft Entra-inloggning i den virtuella
master-databasen - Använd syntaxen
WITH OBJECT_IDför icke-anpassade visningsnamn - Bevilja serverroller till en Microsoft Entra-användare
- Inaktivera Microsoft Entra-inloggning
Prerequisites
- En dedikerad SQL-pool för Azure Synapse Analytics och en databas.
- Microsoft Entra-autentisering har konfigurerats för Azure Synapse Analytics. För mer information, se Konfigurera och hantera Microsoft Entra-autentisering med Azure Synapse Analytics.
- Den här artikeln beskriver hur du skapar en Microsoft Entra-inloggning och användare i den virtuella
master-databasen. Endast en Microsoft Entra-administratör kan skapa en användare i den virtuellamaster-databasen, så vi rekommenderar att du använder Microsoft Entra-administratörskontot när du går igenom den här självstudien. Ett Microsoft Entra-huvudnamn med rollenloginmanagerkan skapa en inloggning, men inte en användare i den virtuellamaster-databasen.
Note
För organisationer som hanterar icke-unika visningsnamn i Microsoft Entra-ID (särskilt för tjänstens huvudnamn) ser du till att du har objekt-ID-informationen tillgänglig för alla tjänsthuvudnamn som du planerar att skapa inloggningar för. Syntaxtillägget WITH OBJECT_ID kan hjälpa dig att lösa dessa scenarier.
Skapa Microsoft Entra-inloggning
Skapa en inloggning för ett Microsoft Entra-konto. I detta exempel använder du
bob@contoso.comsom finns i Microsoft Entra-domänen kalladcontoso. Du kan också skapa en inloggning från en Microsoft Entra-grupp eller tjänstens huvudnamn (applikationer). Mer information finns i CREATE LOGIN (Transact-SQL).Note
Den första Microsoft Entra-inloggningen måste skapas av Microsoft Entra-administratören. Microsoft Entra-administratören kan vara en Microsoft Entra-användare eller grupp. Ett SQL-autentiseringsinloggningsnamn kan inte skapa Microsoft Entra-inloggningsnamn.
Tip
Om du stöter på problem med icke-unika visningsnamn i Microsoft Entra ID, använd syntaxtillägget
WITH OBJECT_ID. Den här funktionen är särskilt användbar för tjänstens huvudnamn med dubbla visningsnamn. Ett exempel:CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'För mer information, se Namnöverväganden.
Med SQL Server Management Studio (SSMS) loggar du in på din dedikerade SQL-pool med Microsoft Entra-administratörskontot.
Expandera Databaser>Systemdatabaser. Högerklicka på
master-databasen och välj Ny fråga för att öppna ett nytt frågefönster i kontexten förmaster-databasen.Kör följande fråga:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOKontrollera den skapade inloggningen i
sys.server_principals. Kör följande fråga:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'Du ser liknande utdata som följande:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0Inloggningskontot
bob@contoso.comskapas i den virtuellamasterdatabasen.
Skapa användare från en Microsoft Entra-inloggning
Efter att du har skapat en Microsoft Entra-inloggning, skapa en databasnivå Microsoft Entra-användare som mappas till Microsoft Entra-inloggningen i den virtuella
masterdatabasen. För att visa hur man lägger till användaren i specialroller, använd vårt exempel,bob@contoso.com, för att skapa en användare i den virtuellamasterdatabasen. Endast en Microsoft Entra-administratör eller SQL Server-administratör kan skapa användare i den virtuellamasterdatabasen.Använd den virtuella
masterdatabasen, men du kan återansluta till en databas du väljer om du vill skapa användare i andra databaser. Kör följande fråga.CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]Tip
Även om det inte krävs att använda Microsoft Entra-användaralias (till exempel
bob@contoso.com), är det en rekommenderad metod att använda samma alias för Microsoft Entra-användare och Microsoft Entra-inloggningar.Om du behöver skapa en användare direkt från en extern leverantör med ett specifikt Objekt-ID (till exempel för att lösa problem med icke-unika visningsnamn), använd följande syntax:
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'Kontrollera den skapade användaren i
sys.database_principals. Kör följande fråga:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'Du ser liknande utdata som följande:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Note
Den befintliga syntaxen för att skapa en Microsoft Entra-användare utan Microsoft Entra-inloggning stöds fortfarande. Om du kör följande syntax skapar du en databasanvändare i den specifika databas du är ansluten till. Denna användare är inte kopplad till någon inloggning, även om en inloggning med samma namn finns i den virtuella master databasen.
Till exempel CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.
Du kan skapa en Microsoft Entra-inloggning genom att använda en tjänsteprincip med ett icke-unikt visningsnamn. För mer information, se Namnöverväganden.
Bevilja roller på servernivå till Microsoft Entra-inloggningar
Du kan lägga till inloggningar till fasta roller på servernivå, såsom ##MS_DefinitionReader##, ##MS_ServerStateReader## eller ##MS_ServerStateManager##-rollen i databasen master.
Note
De roller på servernivå som nämns här stöds inte för Microsoft Entra-grupper.
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];
Behörigheter gäller inte förrän användaren återansluter. Töm DBCC-cachen också:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Kör följande fråga för att kontrollera vilka Microsoft Entra-inloggningar som ingår i roller på servernivå:
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;
Bevilja särskilda roller för Microsoft Entra-användare
Du kan tilldela särskilda roller för Azure Synapse Analytics till användare i den virtuella master databasen.
För att tilldela en av de speciella databasrollerna till en användare måste användaren existera i den virtuella master databasen.
För att lägga till en användare i en roll, kör följande kommando:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
Om du vill ta bort en användare från en roll kör du följande fråga:
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object kan vara microsoft entra-användare, grupp eller tjänstens huvudnamn i Microsoft Entra-ID.
I följande exempel skapar du användaren bob@contoso.com. Tilldela dbmanager- och loginmanager-rollerna till användaren.
Kör följande fråga:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]Kontrollera databasrolltilldelningen genom att köra följande fråga:
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%'Du ser liknande utdata som följande:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Valfritt – Inaktivera en inloggning
Använd DDL-syntaxen ALTER LOGIN (Transact-SQL) för att aktivera eller inaktivera en Microsoft Entra-inloggning i en dedikerad SQL-pool.
ALTER LOGIN [bob@contoso.com] DISABLE
För att ändringar i DISABLE eller ENABLE ska träda i kraft omedelbart, rensa autentiseringscachen och cachen för TokenAndPermUserStore med följande T-SQL-kommandon:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Kontrollera att inloggningen är inaktiverad genom att köra följande fråga:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1