Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (alleen toegewezen SQL-pools)
In dit artikel wordt u begeleid bij het maken en gebruiken van aanmeldingen ondersteund door Microsoft Entra ID (voorheen Azure Active Directory) in de virtuele master-database van Azure SQL.
In deze zelfstudie leert u het volgende:
- Maak een Microsoft Entra-aanmelding in de virtuele
master-database met de nieuwe syntaxisextensie voor Azure SQL Database - Maak een gebruiker gekoppeld aan een Microsoft Entra-aanmelding in de virtuele
master-database - Gebruik de
WITH OBJECT_ID-syntaxis voor niet-unieke weergavenamen - Serverfuncties verlenen aan een Microsoft Entra-gebruiker
- Een aanmelding voor Microsoft Entra uitschakelen
Notitie
Microsoft Entra-serverprincipes (aanmeldingen) zijn momenteel in openbare preview voor Azure SQL Database. Azure SQL Managed Instance en SQL Server 2022 en hoger kunnen al gebruikmaken van Microsoft Entra-aanmeldingen in algemene beschikbaarheid.
Voorwaarden
- 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 hebt gemaakt of quickstart: Een azure SQL Managed Instance maken.
- Microsoft Entra-verificatie is ingesteld voor SQL Database of SQL Managed Instance. Zie Microsoft Entra-verificatie configureren en beheren met Azure SQLvoor meer informatie.
- In dit artikel wordt uitgelegd hoe u een Microsoft Entra-aanmelding en -gebruiker maakt 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 de rolloginmanagerkan een aanmelding maken, maar geen gebruiker in de virtuelemaster-database.
Notitie
Voor organisaties die te maken hebben met niet-unieke weergavenamen in Microsoft Entra ID (met name voor service-principals) is het belangrijk dat de Object ID-informatie beschikbaar is voor alle service-principals waarvoor u aanmeldingen wilt maken. De WITH OBJECT_ID syntaxisextensie kan helpen bij het oplossen van deze scenario's.
Microsoft Entra-aanmelding maken
Maak een Azure SQL Database-aanmelding voor een Microsoft Entra-account. In ons voorbeeld gebruiken we
bob@contoso.comdie aanwezig zijn in ons Microsoft Entra-domein met de naamcontoso. Een aanmelding kan ook worden gemaakt vanuit een Microsoft Entra-groep of service-principal (toepassingen).mygroupbijvoorbeeld 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.
Tip
Als u problemen ondervindt met niet-unique weergavenamen in Microsoft Entra ID, kunt u de
WITH OBJECT_IDsyntaxisextensie gebruiken. Deze functie is met name handig voor service-principals met dubbele weergavenamen. Voorbeeld:CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb'Voor meer informatie, zie Microsoft Entra-aanmeldingen en gebruikers met niet-unieke weergavenamen.
Gebruik SQL Server Management Studio (SSMS)om in te loggen bij uw SQL Database met het Microsoft Entra-beheerdersaccount dat is ingesteld voor de server.
Breid Databases>System Databasesuit. Klik met de rechtermuisknop op de
master-database en selecteer Nieuwe query om een nieuw queryvenster te openen in de context van demaster-database.Voer de volgende query uit:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GOControleer de aangemaakte login 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 zoals de volgende:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0De inlog
bob@contoso.comis gemaakt in de virtuelemasterdatabase.
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 voorbeeld gebruiken,bob@contoso.comom een gebruiker te maken in de virtuelemaster-database, 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 nog steeds de virtuele
master-database, maar u kunt opnieuw verbinding maken met een database van uw keuze als u gebruikers in andere databases wilt maken. Voer de volgende query uit.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.Als u een gebruiker rechtstreeks vanuit een externe provider wilt maken met een specifieke object-id (bijvoorbeeld om niet-actieve weergavenaamproblemen op te lossen), kunt u ook het volgende gebruiken:
CREATE USER [user_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid'Controleer de aangemaakte 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 zoals 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 er een gebruiker gecreƫerd die zich in een database bevindt binnen 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.
U kunt een Microsoft Entra-aanmelding maken met behulp van een service principal met een niet-unieke weergavenaam. Voor meer informatie, zie Microsoft Entra-aanmeldingen en gebruikers met niet-unieke weergavenamen
Serverniveau-rollen verlenen aan Microsoft Entra-logins
U kunt aanmeldingen toevoegen aan de functies op vaste serverniveau, zoals de ##MS_DefinitionReader#, ##MS_ServerStateReader##of ##MS_ServerStateManager## rol in de master-database.
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.comgemaakt. Laten we de gebruiker de dbmanager- en loginmanager rollen 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 zoals de volgende:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Optioneel - Een aanmelding uitschakelen
De ALTER LOGIN (Transact-SQL) DDL-syntaxis kan worden gebruikt om een Microsoft Entra-aanmelding in Azure SQL Database in of uit te schakelen.
ALTER LOGIN [bob@contoso.com] DISABLE
Om de DISABLE of ENABLE wijzigingen onmiddellijk van kracht te laten worden, moeten de authenticatiecache en de TokenAndPermUserStore cache worden gewist met behulp van de volgende T-SQL-opdrachten:
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 toepassingsgeval hiervoor is om alleen-lezen modus toe te staan op geo-replica's, maar de verbinding op een primaire server te weigeren.