Anteckning
Å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.
gäller för:Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (endast dedikerade SQL-pooler)
Den här artikeln vägleder 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 Azure SQL.
I den här handledningen lär du dig att:
- Skapa en Microsoft Entra-inloggning i den virtuella
master-databasen med det nya syntaxtillägget för Azure SQL Database - 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
Notera
Microsoft Entra-serverhuvudkonton (inloggningar) är för närvarande i offentlig förhandsversion för Azure SQL Database. Azure SQL Managed Instance och SQL Server 2022 och senare kan redan använda Microsoft Entra-inloggningar i allmän tillgänglighet.
Förutsättningar
- En SQL Database eller SQL Managed Instance med en databas. Se snabbstart: Skapa en enkel Azure SQL Database-databas om du inte redan har skapat en Azure SQL Database eller snabbstart: Skapa en Azure SQL Managed Instance-.
- Microsoft Entra-autentisering konfigurerad för SQL Database eller SQL Managed Instance. Mer information finns i Konfigurera och hantera Microsoft Entra-autentisering med Azure SQL.
- 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.
Notera
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 Azure SQL Database-inloggning för ett Microsoft Entra-konto. I vårt exempel använder vi
bob@contoso.comsom finns i vår Microsoft Entra-domän med namnetcontoso. En inloggning kan också skapas från en Microsoft Entra-grupp eller tjänstens huvudnamn (program). Till exempelmygroupsom är en Microsoft Entra-grupp som består av Microsoft Entra-konton som är medlemmar i den gruppen. Mer information finns i CREATE LOGIN (Transact-SQL).Notera
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. En SQL-inloggning kan inte skapa Microsoft Entra-inloggningar.
Tips
Om du stöter på problem med icke-anpassade visningsnamn i Microsoft Entra-ID kan du använda syntaxtillägget
WITH OBJECT_ID. Den här funktionen är särskilt användbar för tjänstens huvudnamn med dubbla visningsnamn. Till exempel:CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'Mer information finns i Microsoft Entra-inloggningar och användare med icke-unika visningsnamn.
Med hjälp av SQL Server Management Studio (SSMS)loggar du in på din SQL Database med microsoft Entra-administratörskontot konfigurerat för servern.
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 skulle se utdata som liknar följande:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0Inloggningen
bob@contoso.comhar skapats i den virtuellamasterdatabasen.
Skapa användare från en Microsoft Entra-inloggning
Nu när vi har skapat en Microsoft Entra-inloggning kan vi skapa en Microsoft Entra-användare på databasnivå som är mappad till Microsoft Entra-inloggningen i den virtuella
master-databasen. Vi fortsätter att använda vårt exempelbob@contoso.comför att skapa en användare i den virtuellamaster-databasen, eftersom vi vill visa hur du lägger till användaren i särskilda roller. Endast en Microsoft Entra-administratör eller SQL Server-administratör kan skapa användare i den virtuellamasterdatabasen.Vi använder fortfarande den virtuella
masterdatabasen, men du kan återansluta till valfri databas 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]Tips
Ä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 provider med ett specifikt objekt-ID (till exempel för att lösa problem med icke-anpassade visningsnamn) kan du också använda:
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 skulle se utdata som liknar följande:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Notera
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 skapas en databas som innehåller en användare i den specifika databas som du är ansluten till. Det är viktigt att den här användaren inte är kopplad till någon inloggning, även om det finns en inloggning med samma namn i den virtuella master databasen.
Till exempel CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.
Du kan skapa en Microsoft Entra-inloggning med ett tjänstens huvudkonto med ett icke-unikt visningsnamn. Mer information finns i Microsoft Entra-inloggningar och användare med icke-unika visningsnamn
Bevilja roller på servernivå till Microsoft Entra-inloggningar
Du kan lägga till inloggningar i fasta roller på servernivå, till exempel ##MS_DefinitionReader##, ##MS_ServerStateReader##eller ##MS_ServerStateManager## roll i master-databasen.
Notera
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
Specialroller för SQL Database kan tilldelas till användare i den virtuella master databasen.
För att kunna bevilja en av de särskilda databasrollerna till en användare måste användaren finnas i den virtuella master databasen.
Om du vill lägga till en användare i en roll kan du köra följande fråga:
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 vårt exempel skapade vi användaren bob@contoso.com. Låt oss ge användaren dbmanager- och loginmanager- rollerna.
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 skulle se utdata som liknar följande:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Valfritt – Inaktivera en inloggning
ALTER LOGIN (Transact-SQL) DDL-syntax kan användas för att aktivera eller inaktivera en Microsoft Entra-inloggning i Azure SQL Database.
ALTER LOGIN [bob@contoso.com] DISABLE
För att DISABLE- eller ENABLE ändringarna ska börja gälla omedelbart måste autentiseringscacheminnet och TokenAndPermUserStore cache rensas med hjälp av följande T-SQL-kommandon:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Kontrollera att inloggningen har inaktiverats genom att köra följande fråga:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1
Ett användningsfall för detta skulle vara att tillåta skrivskydd på geo-replika, men neka anslutning på den primära servern.