Zelfstudie: Microsoft Entra-serveraanmelding maken en gebruiken
Van toepassing op: Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (alleen toegewezen SQL-pools)
In dit artikel wordt u begeleid bij het maken en gebruiken van aanmeldingen die worden ondersteund door Microsoft Entra ID (voorheen Azure Active Directory) in de virtuele master
database van Azure SQL.
In deze zelfstudie leert u het volgende:
- Een Microsoft Entra-aanmelding maken in de virtuele
master
database met de nieuwe syntaxisextensie voor Azure SQL Database - Een gebruiker maken die is toegewezen aan een Microsoft Entra-aanmelding in de virtuele
master
database - Serverfuncties verlenen aan een Microsoft Entra-gebruiker
- Een Microsoft Entra-aanmelding uitschakelen
Notitie
Microsoft Entra-server-principals (aanmeldingen) zijn momenteel in openbare preview voor Azure SQL Database. Azure SQL Managed Instance kan al gebruikmaken van Microsoft Entra-aanmeldingen.
Vereisten
- Een SQL Database of SQL Managed Instance met een database. Zie quickstart: Een individuele Azure SQL Database-database maken als u nog geen Azure SQL Database of quickstart hebt gemaakt: Een beheerd exemplaar van Azure SQL maken.
- Microsoft Entra-verificatie is ingesteld voor SQL Database of Managed Instance. Zie Microsoft Entra-verificatie configureren en beheren met Azure SQL voor meer informatie.
- In dit artikel vindt u instructies voor het maken van een Microsoft Entra-aanmelding en -gebruiker in de virtuele
master
database. Alleen een Microsoft Entra-beheerder kan een gebruiker maken in de virtuelemaster
database, dus we raden u aan het Microsoft Entra-beheerdersaccount te gebruiken bij het doorlopen van deze zelfstudie. Een Microsoft Entra-principal met deloginmanager
rol kan een aanmelding maken, maar geen gebruiker in de virtuelemaster
database.
Microsoft Entra-aanmelding maken
Maak een Azure SQL Database-aanmelding voor een Microsoft Entra-account. In ons voorbeeld gebruiken
bob@contoso.com
we die in ons Microsoft Entra-domein met de naamcontoso
. Een aanmelding kan ook worden gemaakt op basis van een Microsoft Entra-groep of service-principal (toepassingen). Dit is bijvoorbeeldmygroup
een Microsoft Entra-groep die bestaat uit Microsoft Entra-accounts die lid zijn van die groep. Zie CREATE LOGIN (Transact-SQL) voor meer informatie.Notitie
De eerste Microsoft Entra-aanmelding moet worden gemaakt door de Microsoft Entra-beheerder. De Microsoft Entra-beheerder kan een Microsoft Entra-gebruiker of -groep zijn. Een SQL-aanmelding kan geen Microsoft Entra-aanmeldingen maken.
Meld u met behulp van SQL Server Management Studio (SSMS) aan bij uw SQL Database met het Microsoft Entra-beheerdersaccount dat is ingesteld voor de server.
Voer de volgende query uit.
Use master CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GO
Controleer de gemaakte aanmelding in
sys.server_principals
. Voer de volgende query uit:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'
U ziet een vergelijkbare uitvoer als de volgende:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0
De aanmelding
bob@contoso.com
is gemaakt in de virtuelemaster
database.
Gebruiker maken op basis van een Microsoft Entra-aanmelding
Nu we een Microsoft Entra-aanmelding hebben gemaakt, kunnen we een Microsoft Entra-gebruiker op databaseniveau maken die is toegewezen aan de Microsoft Entra-aanmelding in de virtuele
master
database. We blijven ons voorbeeldbob@contoso.com
gebruiken om een gebruiker in de virtuelemaster
database te maken, omdat we willen laten zien hoe de gebruiker wordt toegevoegd aan speciale rollen. Alleen een Microsoft Entra-beheerder of SQL Server-beheerder kan gebruikers maken in de virtuelemaster
database.We gebruiken de virtuele
master
database, maar u kunt overschakelen naar een database van uw keuze als u gebruikers in andere databases wilt maken. Voer de volgende query uit.Use master CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Tip
Hoewel het niet vereist is om Microsoft Entra-gebruikersaliassen te gebruiken (bijvoorbeeld
bob@contoso.com
), is het een aanbevolen best practice om dezelfde alias te gebruiken voor Microsoft Entra-gebruikers en Microsoft Entra-aanmeldingen.Controleer de gemaakte gebruiker in
sys.database_principals
. Voer de volgende query uit:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'
U ziet een vergelijkbare uitvoer als de volgende:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Notitie
De bestaande syntaxis voor het maken van een Microsoft Entra-gebruiker zonder Microsoft Entra-aanmelding wordt nog steeds ondersteund. Als u de volgende syntaxis uitvoert, wordt een ingesloten databasegebruiker gemaakt in de specifieke database waarmee u bent verbonden. Belangrijk is dat deze gebruiker niet is gekoppeld aan een aanmelding, zelfs als er een aanmelding met dezelfde naam bestaat in de virtuele master
database.
Bijvoorbeeld: CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
.
Serverniveau-rollen verlenen aan Microsoft Entra-aanmeldingen
U kunt aanmeldingen toevoegen aan de vaste rollen op serverniveau, zoals de rol ##MS_DefinitionReader#, ##MS_ServerStateReader## of ##MS_ServerStateManager##.
Notitie
De hier genoemde functies op serverniveau worden niet ondersteund voor Microsoft Entra-groepen.
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];
Machtigingen zijn pas van kracht als de gebruiker opnieuw verbinding maakt. Maak ook de DBCC-cache leeg:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Voer de volgende query uit om te controleren welke Microsoft Entra-aanmeldingen deel uitmaken van serverfuncties:
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;
Speciale rollen verlenen voor Microsoft Entra-gebruikers
Speciale rollen voor SQL Database kunnen worden toegewezen aan gebruikers in de virtuele master
database.
Als u een van de speciale databaserollen aan een gebruiker wilt verlenen, moet de gebruiker bestaan in de virtuele master
database.
Als u een gebruiker aan een rol wilt toevoegen, kunt u de volgende query uitvoeren:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
Als u een gebruiker uit een rol wilt verwijderen, voert u de volgende query uit:
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object
kan een Microsoft Entra-gebruiker, -groep of -service-principal zijn in Microsoft Entra-id.
In ons voorbeeld hebben we de gebruiker bob@contoso.com
gemaakt. Laten we de gebruiker de rollen dbmanager en loginmanager geven.
Voer de volgende query uit.
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
Controleer de toewijzing van de databaserol door de volgende query uit te voeren:
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%'
U ziet een vergelijkbare uitvoer als de volgende:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Optioneel - Een aanmelding uitschakelen
De DDL-syntaxis alter login (Transact-SQL) kan worden gebruikt om een Microsoft Entra-aanmelding in Azure SQL Database in of uit te schakelen.
ALTER LOGIN [bob@contoso.com] DISABLE
DISABLE
De verificatiecache en de TokenAndPermUserStore-cache moeten worden gewist met behulp van de volgende T-SQL-opdrachten om de wijzigingen ENABLE
direct van kracht te laten worden:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Controleer of de aanmelding is uitgeschakeld door de volgende query uit te voeren:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1
Een use case hiervoor is om alleen-lezen toe te staan op geo-replica's, maar om verbinding op een primaire server te weigeren.
Zie ook
Zie voor meer informatie en voorbeelden: