Delen via


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 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
  • 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 kan al gebruikmaken van Microsoft Entra-aanmeldingen.

Voorwaarden

Microsoft Entra-aanmelding maken

  1. Maak een Azure SQL Database-aanmelding voor een Microsoft Entra-account. In ons voorbeeld gebruiken we bob@contoso.com die aanwezig zijn in ons Microsoft Entra-domein met de naam contoso. Een aanmelding kan ook worden gemaakt vanuit een Microsoft Entra-groep of service-principal (toepassingen). mygroup bijvoorbeeld 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.

  2. 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.

  3. 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 de master-database.

  4. Voer de volgende query uit:

    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  5. Controleer 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      0
    
  6. De inlog bob@contoso.com is gemaakt in de virtuele master database.

Gebruiker maken op basis van een Microsoft Entra-aanmelding

  1. 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.com om een gebruiker te maken in de virtuele master-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 virtuele master-database.

  2. 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.

  3. 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 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.

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.

  1. Voer de volgende query uit:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com]
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
    
  2. 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.