Zelfstudie: Microsoft Entra-serverlogins maken en gebruiken

Dit artikel leidt je bij het aanmaken en gebruiken van logins die zijn gebaseerd op Microsoft Entra ID (voorheen Azure Active Directory) binnen de virtuele master database van een Azure Synapse Analytics dedicated SQL-pool (voorheen SQL DW). Dedicated SQL pools in Azure Synapse Analytics workspaces gebruiken geen logische SQL-servers.

Note

Microsoft Entra Server Principals zijn momenteel in preview voor Azure Synapse Analytics.

In deze handleiding leer je hoe je:

  • Maak een Microsoft Entra-login aan in de virtuele master 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

Prerequisites

  • Een Azure Synapse Analytics dedicated SQL pool en een database.
  • Microsoft Entra authentication configured for Azure Synapse Analytics. Voor meer informatie, zie Configureren en beheren Microsoft Entra-authenticatie met Azure Synapse Analytics.
  • 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 virtuele master-database, dus we raden u aan het Microsoft Entra-beheerdersaccount te gebruiken bij het doorlopen van deze zelfstudie. Een Microsoft Entra-principal met de rol loginmanager kan een aanmelding maken, maar geen gebruiker in de virtuele master-database.

Note

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

  1. Maak inloggegevens aan voor een Microsoft Entra-account. In dit voorbeeld gebruikt u bob@contoso.com, dat bestaat in het Microsoft Entra-domein genaamd contoso. Je kunt ook een login aanmaken vanuit een Microsoft Entra-groep of service principal (applicaties). Zie CREATE LOGIN (Transact-SQL)voor meer informatie.

    Note

    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-authenticatielogin kan geen Microsoft Entra-logins aanmaken.

    Tip

    Als je problemen ondervindt met niet-unieke weergavenamen in Microsoft Entra ID, gebruik dan de WITH OBJECT_ID syntaxextensie. 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 Overwegingen bij namen.

  2. Met SQL Server Management Studio (SSMS) kunt u inloggen op uw toegewijde SQL-pool met het Microsoft Entra beheerdersaccount.

  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%'
    

    Je ziet een vergelijkbare output als het volgende:

    Name                            type_desc       type   is_disabled
    bob@contoso.com                 EXTERNAL_LOGIN  E      0
    
  6. De login bob@contoso.com wordt aangemaakt in de virtuele master database.

Gebruiker maken op basis van een Microsoft Entra-aanmelding

  1. Nadat je een Microsoft Entra-login hebt aangemaakt, maak je een Microsoft Entra-gebruiker op databaseniveau aan die is gekoppeld aan de Microsoft Entra-login in de virtuele master database. Om te laten zien hoe je de gebruiker aan speciale rollen kunt toevoegen, gebruik ons voorbeeld, bob@contoso.com, om een gebruiker aan te maken in de virtuele master database. Alleen een Microsoft Entra-beheerder of SQL Server-beheerder kan gebruikers maken in de virtuele master-database.

  2. Gebruik de virtuele master database, maar je kunt opnieuw verbinden met een database van je keuze als je gebruikers in andere databases wilt aanmaken. 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 je een gebruiker direct van een externe provider met een specifieke Object ID moet aanmaken (bijvoorbeeld om problemen met niet-unieke weergavenamen op te lossen), gebruik dan de volgende syntaxis:

    CREATE USER [user_name] FROM EXTERNAL PROVIDER
      WITH OBJECT_ID = 'objectid'
    
  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%'
    

    Je ziet een vergelijkbare output als het volgende:

    Name                            type_desc       type
    bob@contoso.com                 EXTERNAL_USER   E
    

Note

De bestaande syntaxis voor het maken van een Microsoft Entra-gebruiker zonder Microsoft Entra-aanmelding wordt nog steeds ondersteund. Als je de volgende syntaxis uitvoert, maak je een ingesloten databasegebruiker aan in de specifieke database waar je mee verbonden bent. Deze gebruiker is niet gekoppeld aan een login, zelfs niet als er een login met dezelfde naam in de virtuele master database staat.

Bijvoorbeeld: CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.

Je kunt een Microsoft Entra-login aanmaken door een serviceprincipal te gebruiken met een niet-unieke weergavenaam. Voor meer informatie, zie Overwegingen voor namen.

Serverniveau-rollen verlenen aan Microsoft Entra-logins

Je kunt aanmeldingen toevoegen aan vaste serverniveau-rollen, zoals de ##MS_DefinitionReader##, ##MS_ServerStateReader## of ##MS_ServerStateManager## rol in de master database.

Note

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

Je kunt speciale rollen toewijzen voor Azure Synapse Analytics aan gebruikers in de virtuele master database.

Om een van de speciale databaserollen aan een gebruiker toe te kennen, moet de gebruiker in de virtuele master database bestaan.

Om een gebruiker aan een rol toe te voegen, voer je de volgende query uit:

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 het volgende voorbeeld maak je de gebruiker bob@contoso.com. Wijs de rollen dbmanager en loginmanager toe aan de gebruiker.

  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%'
    

    Je ziet een vergelijkbare output als het volgende:

    DatabaseRoleName       DatabaseUserName
    dbmanager              bob@contoso.com
    loginmanager           bob@contoso.com
    

Optioneel - Een aanmelding uitschakelen

Gebruik de DDL-syntaxis ALTER LOGIN (Transact-SQL) om een Microsoft Entra-login in een speciale SQL-pool in of uit te schakelen.

ALTER LOGIN [bob@contoso.com] DISABLE

Om DISABLE- of ENABLE-wijzigingen direct van kracht te laten worden, wis je de authenticatiecache en de TokenAndPermUserStore-cache met de volgende T-SQL-commando's:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS

Controleer of het inloggen is uitgeschakeld door de volgende query uit te voeren:

SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1