Självstudie: Skapa och använda Microsoft Entra-serverinloggningar
Gäller för:Azure SQL DatabaseAzure SQL Managed InstanceAzure 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 självstudien 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 - Bevilja serverroller till en Microsoft Entra-användare
- Inaktivera en Microsoft Entra-inloggning
Kommentar
Microsoft Entra-serverhuvudkonton (inloggningar) är för närvarande i offentlig förhandsversion för Azure SQL Database. Azure SQL Managed Instance kan redan använda Microsoft Entra-inloggningar.
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 Hanterad instans. 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 administratörskontot för Microsoft Entra när du går igenom den här självstudien. Ett Microsoft Entra-huvudnamn medloginmanager
rollen kan skapa en inloggning, men inte en användare i den virtuellamaster
databasen.
Skapa Microsoft Entra-inloggning
Skapa en Azure SQL Database-inloggning för ett Microsoft Entra-konto. I vårt exempel använder
bob@contoso.com
vi det som 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). Det är till exempelmygroup
en Microsoft Entra-grupp som består av Microsoft Entra-konton som är medlemmar i den gruppen. Mer information finns i SKAPA INLOGGNING (Transact-SQL).Kommentar
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.
Med SQL Server Management Studio (SSMS) loggar du in på din SQL Database med microsoft Entra-administratörskontot konfigurerat för servern.
Kör följande fråga:
Use master CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GO
Kontrollera 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 0
Inloggningen
bob@contoso.com
har skapats i den virtuellamaster
databasen.
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.com
för att skapa en användare i den virtuellamaster
databasen, eftersom vi vill visa hur du lägger till användaren i specialroller. Endast en Microsoft Entra-administratör eller SQL Server-administratör kan skapa användare i den virtuellamaster
databasen.Vi använder den virtuella
master
databasen, men du kan växla till valfri databas om du vill skapa användare i andra databaser. Kör följande fråga.Use master CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Dricks
Även om det inte är nödvändigt att använda Microsoft Entra-användaralias (till exempel
bob@contoso.com
), rekommenderar vi att du använder samma alias för Microsoft Entra-användare och Microsoft Entra-inloggningar.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
Kommentar
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 associerad med någon inloggning, även om det finns en inloggning med samma namn i den virtuella master
databasen.
Exempel: CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
Bevilja roller på servernivå till Microsoft Entra-inloggningar
Du kan lägga till inloggningar i de fasta rollerna på servernivå, till exempel rollen ##MS_DefinitionReader##, ##MS_ServerStateReader##eller ##MS_ServerStateManager## .
Kommentar
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
Särskilda roller 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 en Microsoft Entra-användare, grupp eller tjänstens huvudnamn i Microsoft Entra-ID.
I vårt exempel skapade vi användaren bob@contoso.com
. Nu ska vi ge användaren rollerna dbmanager och loginmanager .
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
DDL-syntaxen ALTER LOGIN (Transact-SQL) kan användas för att aktivera eller inaktivera en Microsoft Entra-inloggning i Azure SQL Database.
ALTER LOGIN [bob@contoso.com] DISABLE
DISABLE
För att ändringarna eller ENABLE
ska börja gälla omedelbart måste autentiseringscacheminnet och TokenAndPermUserStore-cachen 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 skrivskyddade på geo-repliker, men neka anslutning på en primär server.
Se även
Mer information och exempel finns i: