Share 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 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

Microsoft Entra-aanmelding maken

  1. 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 naam contoso. Een aanmelding kan ook worden gemaakt op basis van een Microsoft Entra-groep of service-principal (toepassingen). Dit is bijvoorbeeld mygroup 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. 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.

  3. Voer de volgende query uit.

    Use master
    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  4. 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 
    
  5. De aanmelding 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 bob@contoso.com gebruiken om een gebruiker in de virtuele master 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 virtuele master database.

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

  3. 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.comgemaakt. Laten we de gebruiker de rollen dbmanager en loginmanager 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 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: