Dela via


Självstudie: Skapa och använda Microsoft Entra-serverinloggningar

Gäller för:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (endast dedikerade SQL-pooler)

Den här artikeln vägleder dig genom att skapa och använda inloggningar som backas upp av Microsoft Entra ID (tidigare Azure Active Directory) i den virtuella master databasen i Azure SQL.

I den här självstudien lär du dig att:

  • Skapa en Microsoft Entra-inloggning i den virtuella master databasen med det nya syntaxtillägget för Azure SQL Database
  • Skapa en användare som mappats till en Microsoft Entra-inloggning i den virtuella master databasen
  • Bevilja serverroller till en Microsoft Entra-användare
  • Inaktivera en Microsoft Entra-inloggning

Kommentar

Microsoft Entra-serverhuvudkonton (inloggningar) är för närvarande i offentlig förhandsversion för Azure SQL Database. Azure SQL Managed Instance kan redan använda Microsoft Entra-inloggningar.

Förutsättningar

  • En SQL Database eller SQL Managed Instance med en databas. Se Snabbstart: Skapa en enkel Azure SQL Database-databas om du inte redan har skapat en Azure SQL Database eller snabbstart: Skapa en Azure SQL Managed Instance.
  • Microsoft Entra-autentisering konfigurerad för SQL Database eller Hanterad instans. Mer information finns i Konfigurera och hantera Microsoft Entra-autentisering med Azure SQL.
  • Den här artikeln beskriver hur du skapar en Microsoft Entra-inloggning och användare i den virtuella master databasen. Endast en Microsoft Entra-administratör kan skapa en användare i den virtuella master databasen, så vi rekommenderar att du använder administratörskontot för Microsoft Entra när du går igenom den här självstudien. Ett Microsoft Entra-huvudnamn med loginmanager rollen kan skapa en inloggning, men inte en användare i den virtuella master databasen.

Skapa Microsoft Entra-inloggning

  1. Skapa en Azure SQL Database-inloggning för ett Microsoft Entra-konto. I vårt exempel använder bob@contoso.com vi det som finns i vår Microsoft Entra-domän med namnet contoso. En inloggning kan också skapas från en Microsoft Entra-grupp eller tjänstens huvudnamn (program). Det är till exempel mygroup en Microsoft Entra-grupp som består av Microsoft Entra-konton som är medlemmar i den gruppen. Mer information finns i SKAPA INLOGGNING (Transact-SQL).

    Kommentar

    Den första Microsoft Entra-inloggningen måste skapas av Microsoft Entra-administratören. Microsoft Entra-administratören kan vara en Microsoft Entra-användare eller grupp. En SQL-inloggning kan inte skapa Microsoft Entra-inloggningar.

  2. Med SQL Server Management Studio (SSMS) loggar du in på din SQL Database med microsoft Entra-administratörskontot konfigurerat för servern.

  3. Kör följande fråga:

    Use master
    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  4. Kontrollera den skapade inloggningen i sys.server_principals. Kör följande fråga:

    SELECT name, type_desc, type, is_disabled 
    FROM sys.server_principals
    WHERE type_desc like 'external%'  
    

    Du skulle se utdata som liknar följande:

    Name                            type_desc       type   is_disabled 
    bob@contoso.com                 EXTERNAL_LOGIN  E      0 
    
  5. Inloggningen bob@contoso.com har skapats i den virtuella master databasen.

Skapa användare från en Microsoft Entra-inloggning

  1. Nu när vi har skapat en Microsoft Entra-inloggning kan vi skapa en Microsoft Entra-användare på databasnivå som är mappad till Microsoft Entra-inloggningen i den virtuella master databasen. Vi fortsätter att använda vårt exempel bob@contoso.com för att skapa en användare i den virtuella master databasen, eftersom vi vill visa hur du lägger till användaren i specialroller. Endast en Microsoft Entra-administratör eller SQL Server-administratör kan skapa användare i den virtuella master databasen.

  2. Vi använder den virtuella master databasen, men du kan växla till valfri databas om du vill skapa användare i andra databaser. Kör följande fråga.

    Use master
    CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
    

    Dricks

    Även om det inte är nödvändigt att använda Microsoft Entra-användaralias (till exempel bob@contoso.com), rekommenderar vi att du använder samma alias för Microsoft Entra-användare och Microsoft Entra-inloggningar.

  3. Kontrollera den skapade användaren i sys.database_principals. Kör följande fråga:

    SELECT name, type_desc, type 
    FROM sys.database_principals 
    WHERE type_desc like 'external%'
    

    Du skulle se utdata som liknar följande:

    Name                            type_desc       type
    bob@contoso.com                 EXTERNAL_USER   E
    

Kommentar

Den befintliga syntaxen för att skapa en Microsoft Entra-användare utan Microsoft Entra-inloggning stöds fortfarande. Om du kör följande syntax skapas en databas som innehåller en användare i den specifika databas som du är ansluten till. Det är viktigt att den här användaren inte är associerad med någon inloggning, även om det finns en inloggning med samma namn i den virtuella master databasen.

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

Bevilja roller på servernivå till Microsoft Entra-inloggningar

Du kan lägga till inloggningar i de fasta rollerna på servernivå, till exempel rollen ##MS_DefinitionReader##, ##MS_ServerStateReader##eller ##MS_ServerStateManager## .

Kommentar

De roller på servernivå som nämns här stöds inte för Microsoft Entra-grupper.

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];

Behörigheter gäller inte förrän användaren återansluter. Töm DBCC-cachen också:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 

Kör följande fråga för att kontrollera vilka Microsoft Entra-inloggningar som ingår i roller på servernivå:

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;

Bevilja särskilda roller för Microsoft Entra-användare

Särskilda roller för SQL Database kan tilldelas till användare i den virtuella master databasen.

För att kunna bevilja en av de särskilda databasrollerna till en användare måste användaren finnas i den virtuella master databasen.

Om du vill lägga till en användare i en roll kan du köra följande fråga:

ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object] 

Om du vill ta bort en användare från en roll kör du följande fråga:

ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object] 

AzureAD_object kan vara en Microsoft Entra-användare, grupp eller tjänstens huvudnamn i Microsoft Entra-ID.

I vårt exempel skapade vi användaren bob@contoso.com. Nu ska vi ge användaren rollerna dbmanager och loginmanager .

  1. Kör följande fråga:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] 
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com] 
    
  2. Kontrollera databasrolltilldelningen genom att köra följande fråga:

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

    Du skulle se utdata som liknar följande:

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

Valfritt – Inaktivera en inloggning

DDL-syntaxen ALTER LOGIN (Transact-SQL) kan användas för att aktivera eller inaktivera en Microsoft Entra-inloggning i Azure SQL Database.

ALTER LOGIN [bob@contoso.com] DISABLE

DISABLE För att ändringarna eller ENABLE ska börja gälla omedelbart måste autentiseringscacheminnet och TokenAndPermUserStore-cachen rensas med hjälp av följande T-SQL-kommandon:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS 

Kontrollera att inloggningen har inaktiverats genom att köra följande fråga:

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

Ett användningsfall för detta skulle vara att tillåta skrivskyddade på geo-repliker, men neka anslutning på en primär server.

Se även

Mer information och exempel finns i: