Självstudie: Skydda med Microsoft Entra-inloggningar – Azure SQL Managed Instance

Gäller för:Azure SQL Managed Instance

I den här artikeln lär du dig att använda serverhuvudnamn (inloggningar) som backas upp av Microsoft Entra ID (tidigare Azure Active Directory) för att skydda en Azure SQL Managed Instance.

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

  • Skapa en Microsoft Entra-inloggning för en hanterad instans
  • Bevilja behörigheter till inloggningar i en hanterad instans
  • Skapa Microsoft Entra-användare från inloggningar
  • Tilldela behörigheter till användare och hantera databassäkerhet
  • Använda personifiering med användare
  • Använda frågor mellan databaser med användare
  • Läs om säkerhetsfunktioner som hotskydd, granskning, datamaskering och kryptering

Kommentar

Microsoft Entra-ID är det nya namnet för Azure Active Directory (Azure AD). Vi uppdaterar dokumentationen just nu.

Förutsättningar

För att kunna slutföra den här självstudien behöver du följande:

Begränsa åtkomst

Hanterade instanser kan nås via en privat IP-adress. Precis som en isolerad SQL Server-miljö behöver program eller användare åtkomst till SQL Managed Instance-nätverket (VNet) innan en anslutning kan upprättas. Mer information finns i Ansluta ditt program till SQL Managed Instance.

Det går också att konfigurera en tjänstslutpunkt på en hanterad instans, vilket möjliggör offentliga anslutningar på samma sätt som för Azure SQL Database. Mer information finns i Konfigurera en offentlig slutpunkt i Azure SQL Managed Instance.

Skapa en Microsoft Entra-inloggning med hjälp av SSMS

Den första Microsoft Entra-inloggningen kan skapas av SQL-administratören eller Av Microsoft Entra-administratören som skapades under etableringen. Mer information finns i Etablera en Microsoft Entra-administratör för SQL Managed Instance.

I följande artiklar finns exempel på hur du ansluter till SQL Managed Instance:

  1. Anslut till din hanterade instans med antingen en sysadmin SQL-inloggning eller Microsoft Entra-administratören med hjälp av SQL Server Management Studio (SSMS).

  2. I Object Explorer högerklickar du på servern och väljer Ny fråga.

  3. I frågefönstret använder du följande syntax för att skapa en inloggning för ett lokalt Microsoft Entra-konto:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    Det här exemplet skapar en inloggning för kontot nativeuser@aadsqlmi.onmicrosoft.com.

    USE master
    GO
    CREATE LOGIN [nativeuser@aadsqlmi.onmicrosoft.com] FROM EXTERNAL PROVIDER
    GO
    
  4. Välj Kör i verktygsfältet för att skapa inloggningen.

  5. Kontrollera den nyligen tillagda inloggningen genom att köra följande T-SQL-kommando:

    SELECT *  
    FROM sys.server_principals;  
    GO
    

    Screenshot of the Results tab in the S S M S Object Explorer showing the name, principal_id, sid, type, and type_desc of the newly added login.

Mer information finns i SKAPA INLOGGNING.

Bevilja behörigheter för att skapa inloggningar

Befintliga inloggningar måste ha lämpliga behörigheter eller vara en del av lämpliga serverroller för att skapa andra Microsoft Entra-inloggningar.

SQL-autentiseringsinloggningar

  • Om inloggningen är ett SQL-autentiseringsbaserat serverhuvudnamn måste den tilldelas sysadmin rollen för att skapa inloggningar för Microsoft Entra-konton.

Microsoft Entra-autentiseringsinloggningar

  • Om inloggningen är ett Microsoft Entra-serverhuvudnamn måste den tilldelas antingen serverrollen sysadmin eller securityadmin för att skapa inloggningar för andra Microsoft Entra-användare, grupper och program.
  • Som minst måste behörigheten ALTER ANY LOGIN beviljas för att skapa andra Microsoft Entra-inloggningar.
  • Standardbehörigheterna som beviljats nyligen skapade Microsoft Entra-inloggningar i master är: CONNECT SQL och VIEW ANY DATABASE.
  • Serverrollen sysadmin kan beviljas för många Microsoft Entra-inloggningar i en hanterad instans.

Så här lägger du till inloggningen till serverrollen sysadmin:

  1. Logga in på den hanterade instansen igen eller använd den befintliga anslutningen med Microsoft Entra-administratören eller SQL-huvudnamnet som är en sysadmin.

  2. I Object Explorer högerklickar du på servern och väljer Ny fråga.

  3. Bevilja Microsoft Entra inloggning till serverrollen sysadmin med hjälp av följande T-SQL-syntax:

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

    I följande exempel beviljas serverrollen sysadmin till inloggningen nativeuser@aadsqlmi.onmicrosoft.com

    ALTER SERVER ROLE sysadmin ADD MEMBER [nativeuser@aadsqlmi.onmicrosoft.com]
    GO
    

Skapa ytterligare Microsoft Entra-inloggningar med hjälp av SSMS

När Microsoft Entra-inloggningen har skapats och beviljats sysadmin behörighet kan inloggningen skapa ytterligare inloggningar med hjälp av FROM EXTERNAL PROVIDER-satsen med CREATE LOGIN.

  1. Anslut till den hanterade instansen med Microsoft Entra-inloggningen genom att välja Anslut till Server i SQL Server Management Studio (SSMS).

    1. Ange ditt SQL Managed Instance-värdnamn i Servernamn.
    2. För Autentisering väljer du Active Directory – Universal med MFA-stöd för att skapa ett inloggningsfönster för multifaktorautentisering. Logga in. Mer information finns i Universell autentisering (SSMS-stöd för multifaktorautentisering).
  2. I Object Explorer högerklickar du på servern och väljer Ny fråga.

  3. I frågefönstret använder du följande syntax för att skapa en inloggning för ett annat Microsoft Entra-konto:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    I det här exemplet skapas en inloggning för Microsoft Entra-användaren bob@aadsqlmi.net, vars domän aadsqlmi.net är federerad med Microsoft Entra-aadsqlmi.onmicrosoft.com-domänen.

    Kör följande T-SQL-kommando. Federerade Microsoft Entra-konton är SQL Managed Instance-ersättningar för lokala Windows-inloggningar och -användare.

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Skapa en databas i den hanterade instansen med syntaxen CREATE DATABASE. Den här databasen används för att testa användarinloggningar i nästa avsnitt.

    1. I Object Explorer högerklickar du på servern och väljer Ny fråga.

    2. Använd följande syntax i frågefönstret för att skapa en databas med namnet MyMITestDB.

      CREATE DATABASE MyMITestDB;
      GO
      
  5. Skapa en SQL Managed Instance-inloggning för en grupp i Microsoft Entra-ID. Gruppen måste finnas i Microsoft Entra-ID innan inloggningen läggs till i SQL Managed Instance. Se Skapa en grundläggande grupp och lägg till medlemmar med hjälp av Microsoft Entra-ID. Skapa en grupp mygroup och lägg till medlemmar i den här gruppen.

  6. Öppna ett nytt frågefönster i SQL Server Management Studio.

    Det här exemplet förutsätter att det finns en grupp med namnet mygroup i Microsoft Entra-ID. Kör följande kommando:

    USE master
    GO
    CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
    GO
    
  7. Testa att logga in på den hanterade instansen med den nyligen skapade inloggningen eller gruppen. Öppna en ny anslutning till den hanterade instansen och använd den nya inloggningen som autentisering.

  8. I Object Explorer högerklickar du på servern och väljer Ny fråga för den nya anslutningen.

  9. Kontrollera serverbehörigheterna för den nyligen skapade Microsoft Entra-inloggningen genom att köra följande kommando:

    SELECT * FROM sys.fn_my_permissions (NULL, 'DATABASE')
    GO
    

Gästanvändare stöds som enskilda användare (utan att ingå i master en Microsoft Entra-grupp (även om de kan vara det)) och inloggningarna kan skapas direkt (till exempel joe@contoso.con) med den aktuella inloggningssyntaxen.

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

Auktorisering till enskilda databaser fungerar ungefär på samma sätt i SQL Managed Instance som med databaser i SQL Server. Du kan skapa en användare från en befintlig inloggning i en databas som har beviljats behörighet till databasen eller lagts till i en databasroll.

Nu när vi har skapat en databas som heter MyMITestDB, och en inloggning som endast har standardbehörigheterna, är nästa steg att skapa en användare från den inloggningen. För tillfället kan inloggningen ansluta till den hanterade instansen och se alla databaser, men inte interagera med databaserna. Om du loggar in med Microsoft Entra-kontot som har standardbehörigheterna och försöker expandera den nyligen skapade databasen visas följande fel:

Screenshot of an error message from the the S S M S Object Explorer that reads

Läs mer om hur du beviljar databasbehörigheter i Getting Started with Database Engine Permissions (Komma igång med behörigheter för databasmotorn).

Skapa en Microsoft Entra-användare och skapa en exempeltabell

Kommentar

Det finns vissa begränsningar när en användare loggar in som en del av en Microsoft Entra-grupp. Ett anrop till returnerar till SUSER_SID exempel , eftersom den angivna Microsoft Entra-användaren inte ingår i sys.server_principalsNULLtabellen. Därför kan åtkomsten till vissa lagrade procedurer eller en lista över beviljade behörigheter begränsas i det här fallet.

  1. Logga in på den hanterade instansen med ett sysadmin-konto i SQL Server Management Studio.

  2. I Object Explorer högerklickar du på servern och väljer Ny fråga.

  3. I frågefönstret använder du följande syntax för att skapa en användare från en Microsoft Entra-inloggning:

    USE <Database Name> -- provide your database name
    GO
    CREATE USER user_name FROM LOGIN login_name
    GO
    

    I följande exempel skapas en användare bob@aadsqlmi.net från inloggningen bob@aadsqlmi.net:

    USE MyMITestDB
    GO
    CREATE USER [bob@aadsqlmi.net] FROM LOGIN [bob@aadsqlmi.net]
    GO
    
  4. Det stöds också för att skapa en Microsoft Entra-användare från en Microsoft Entra-inloggning som är en grupp.

    I följande exempel skapas en inloggning för Microsoft Entra-gruppen mygroup som finns i din Microsoft Entra-klientorganisation.

    USE MyMITestDB
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    

    Alla användare som tillhör mygroup kan komma åt databasen MyMITestDB.

    Viktigt!

    När du skapar en ANVÄNDARE från en Microsoft Entra-inloggning anger du user_name som samma login_name från LOGIN.

    Mer information finns i SKAPA ANVÄNDARE.

  5. Skapa en testtabell med följande T-SQL-kommando i ett nytt frågefönster:

    USE MyMITestDB
    GO
    CREATE TABLE TestTable
    (
    AccountNum varchar(10),
    City varchar(255),
    Name varchar(255),
    State varchar(2)
    );
    
  6. Skapa en anslutning i SSMS med användaren som har skapats. Lägg märke till att du inte kan se tabellen TestTable som skapades av sysadmin tidigare. Vi behöver ge användaren behörigheter att läsa data från databasen.

  7. Du kan kontrollera användarens aktuella behörighet genom att köra följande kommando:

    SELECT * FROM sys.fn_my_permissions('MyMITestDB','DATABASE')
    GO
    

Lägga till användare till roller på databasnivå

För att användaren ska kunna se data i databasen ger vi användaren roller på databasnivå.

  1. Logga in på den hanterade instansen med ett sysadmin-konto i SQL Server Management Studio.

  2. I Object Explorer högerklickar du på servern och väljer Ny fråga.

  3. Ge Microsoft Entra-användaren databasrollen db_datareader med hjälp av följande T-SQL-syntax:

    Use <Database Name> -- provide your database name
    ALTER ROLE db_datareader ADD MEMBER user_name
    GO
    

    I följande exempel får användaren bob@aadsqlmi.net och gruppen mygroupdb_datareader behörigheter för MyMITestDB-databasen:

    USE MyMITestDB
    GO
    ALTER ROLE db_datareader ADD MEMBER [bob@aadsqlmi.net]
    GO
    ALTER ROLE db_datareader ADD MEMBER [mygroup]
    GO
    
  4. Kontrollera att Microsoft Entra-användaren som skapades i databasen finns genom att köra följande kommando:

    SELECT * FROM sys.database_principals
    GO
    
  5. Skapa en ny anslutning till den hanterade instansen med användaren som lades till i rollen db_datareader.

  6. Expandera databasen i Object Explorer du vill se tabellen.

    Screenshot from Object Explorer in S S M S showing the folder structure for Tables in MyMITestDB. The dbo.TestTable folder is highlighted.

  7. Öppna ett nytt frågefönster och kör följande SELECT-sats:

    SELECT *
    FROM TestTable
    

    Kan du se data från tabellen? Du bör se de kolumner som returneras.

    Screenshot of the Results tab in the S S M S Object Explorer showing the table column headers AccountNum, City, Name, and State.

Personifiera Microsoft Entra-inloggningar

SQL Managed Instance stöder personifiering av Microsoft Entra-inloggningar.

Testa personifiering

  1. Logga in på den hanterade instansen med ett sysadmin-konto i SQL Server Management Studio.

  2. I Object Explorer högerklickar du på servern och väljer Ny fråga.

  3. Kör följande kommando i frågefönstret för att skapa en lagrad procedur:

    USE MyMITestDB
    GO  
    CREATE PROCEDURE dbo.usp_Demo  
    WITH EXECUTE AS 'bob@aadsqlmi.net'  
    AS  
    SELECT user_name();  
    GO
    
  4. Använd följande kommando för att se att användaren du personifierar när du kör den lagrade proceduren är bob@aadsqlmi.net.

    Exec dbo.usp_Demo
    
  5. Testa personifieringen med hjälp av instruktionen KÖRA SOM INLOGGNING:

    EXECUTE AS LOGIN = 'bob@aadsqlmi.net'
    GO
    SELECT SUSER_SNAME()
    REVERT
    GO
    

Kommentar

Endast sql-inloggningar på servernivå som ingår i sysadmin rollen kan utföra följande åtgärder som riktar sig till Microsoft Entra-huvudnamn:

  • KÖRA SOM ANVÄNDARE
  • KÖRA SOM INLOGGNING

Använda frågor mellan databaser

Frågor mellan databaser stöds för Microsoft Entra-konton med Microsoft Entra-inloggningar. För att testa en fråga mellan databaser med en Microsoft Entra-grupp måste vi skapa en annan databas och tabell. Du kan hoppa över att skapa en annan databas och tabell om en redan finns.

  1. Logga in på den hanterade instansen med ett sysadmin-konto i SQL Server Management Studio.

  2. I Object Explorer högerklickar du på servern och väljer Ny fråga.

  3. I frågefönstret använder du följande kommando för att skapa en databas med namnet MyMITestDB2 och en tabell med namnet TestTable2:

    CREATE DATABASE MyMITestDB2;
    GO
    USE MyMITestDB2
    GO
    CREATE TABLE TestTable2
    (
    EmpId varchar(10),
    FirstName varchar(255),
    LastName varchar(255),
    Status varchar(10)
    );
    
  4. I ett nytt frågefönster kör du följande kommando för att skapa användaren mygroup i den nya databasen MyMITestDB2, och beviljar SELECT-behörigheter för databasen för mygroup:

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Logga in på den hanterade instansen med SQL Server Management Studio som medlem i Microsoft Entra-gruppen mygroup. Öppna ett nytt frågefönster och kör instruktionen SELECT över flera databaser:

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

    Du bör se tabellresultaten från TestTable2.

Ytterligare scenarier som stöds

  • SQL Agent-hantering och jobbkörningar stöds för Microsoft Entra-inloggningar.
  • Säkerhetskopierings- och återställningsåtgärder för databaser kan utföras av Microsoft Entra-inloggningar.
  • Granskning av alla instruktioner som rör Microsoft Entra-inloggningar och autentiseringshändelser.
  • Dedikerad administratörsanslutning för Microsoft Entra-inloggningar som är medlemmar i serverrollen sysadmin .
  • Microsoft Entra-inloggningar stöds med sqlcmd-verktyget och SQL Server Management Studio-verktyget.
  • Inloggningsutlösare stöds för inloggningshändelser som kommer från Microsoft Entra-inloggningar.
  • Service Broker och DB-e-post kan konfigureras med Microsoft Entra-inloggningar.

Nästa steg

Aktivera säkerhetsfunktioner

En omfattande lista över sätt att skydda databasen finns i artikeln säkerhetsfunktioner för SQL Managed Instance. Följande säkerhetsfunktioner diskuteras:

SQL Managed Instance-funktioner

En fullständig översikt över SQL Managed Instance-funktioner finns i: