Samouczek: Zabezpieczenie za pomocą logowań Microsoft Entra — Azure SQL Managed Instance

Dotyczy:Azure SQL Managed Instance

W tym artykule dowiesz się, jak używać jednostek serwera (identyfikatorów logowania) wspieranych przez Microsoft Entra ID (formerly Azure Active Directory) w celu zabezpieczenia Azure SQL Managed Instance.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Utwórz login Microsoft Entra dla zarządzanego wystąpienia SQL.
  • Udzielanie uprawnień do logowania w wystąpieniu zarządzanym SQL.
  • Utwórz użytkowników Microsoft Entra z identyfikatorów logowania.
  • Przypisz uprawnienia do użytkowników i zarządzaj zabezpieczeniami bazy danych.
  • Użyj podszywania się pod użytkowników.
  • Używaj zapytań między bazami danych z użytkownikami.
  • Dowiedz się więcej o funkcjach zabezpieczeń, takich jak ochrona przed zagrożeniami, inspekcja, maskowanie danych i szyfrowanie.

Uwaga

Microsoft Entra ID wcześniej był znany jako Azure Active Directory (Azure AD).

Wymagania wstępne

Aby ukończyć ten samouczek, upewnij się, że dysponujesz następującymi elementami:

Ograniczanie dostępu

Dostęp do wystąpień zarządzanych SQL można uzyskać za pośrednictwem prywatnego adresu IP. Podobnie jak izolowane środowisko SQL Server, aplikacje lub użytkownicy muszą mieć dostęp do sieci SQL Managed Instance (VNet) przed nawiązaniem połączenia. Aby uzyskać więcej informacji, zobacz Łączenie aplikacji z SQL Managed Instance.

Istnieje również możliwość skonfigurowania punktu końcowego usługi w wystąpieniu zarządzanym SQL, co umożliwia nawiązywanie połączeń publicznych w taki sam sposób, jak w przypadku Azure SQL Database. Aby uzyskać więcej informacji, zobacz Konfigurowanie publicznego punktu końcowego w Azure SQL Managed Instance.

Tworzenie logowania Microsoft Entra przy użyciu programu SSMS

Administrator SQL może utworzyć pierwszy login Microsoft Entra, który mógł być wcześniej utworzony przez administratora Microsoft Entra podczas aprowizacji. Aby uzyskać więcej informacji, zobacz Przydzielanie administratora Microsoft Entra dla instancji zarządzanej SQL.

Zobacz następujące artykuły, aby zapoznać się z przykładami nawiązywania połączenia z SQL Managed Instance:

  1. Połącz się z zarządzanym wystąpieniem SQL za pomocą logowania SQL jako sysadmin lub administrator Microsoft Entra, używając SQL Server Management Studio (SSMS).

  2. W Object Explorer kliknij prawym przyciskiem myszy serwer i wybierz pozycję Nowe zapytanie.

  3. W oknie zapytania użyj następującej składni, aby utworzyć identyfikator logowania dla lokalnego konta Microsoft Entra:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    W tym przykładzie tworzone są dane logowania dla konta nativeuser@aadsqlmi.onmicrosoft.com.

    USE master
    GO
    CREATE LOGIN [nativeuser@aadsqlmi.onmicrosoft.com] FROM EXTERNAL PROVIDER
    GO
    
  4. Na pasku narzędzi wybierz Wykonaj, aby utworzyć login.

  5. Sprawdź nowo dodane logowanie, wykonując następujące polecenie języka T-SQL:

    SELECT *
    FROM sys.server_principals;
    GO
    

    Zrzut ekranu przedstawiający kartę Wyniki w Object Explorer SSMS z wyświetloną nazwą, principal_id, identyfikatorem SID, typem i opisem typu nowo dodanego logowania.

Aby uzyskać więcej informacji, zobacz temat CREATE LOGIN.

Przyznaj uprawnienia do tworzenia loginów

Istniejące loginy muszą mieć odpowiednie uprawnienia lub być częścią odpowiednich ról serwera, aby móc utworzyć inne loginy Microsoft Entra.

Identyfikatory logowania uwierzytelniania SQL

Jeśli identyfikator logowania jest podmiotem zabezpieczeń serwera opartego na uwierzytelnianiu SQL, musi mieć przypisaną rolę sysadmin w celu utworzenia identyfikatorów logowania dla kont Microsoft Entra.

logowania uwierzytelniania Microsoft Entra

  • Jeśli login jest serwerowym podmiotem Microsoft Entra, musi mieć przypisaną rolę serwera sysadmin lub securityadmin, aby móc utworzyć loginy dla innych użytkowników, grup i aplikacji Microsoft Entra.
  • Co najmniej uprawnienia ALTER ANY LOGIN muszą być nadane, aby utworzyć inne Microsoft Entra loginy.
  • Domyślnie standardowe uprawnienia przyznane kontom logowania Microsoft Entra nowo utworzonym w master to CONNECT SQL i VIEW ANY DATABASE.
  • Rolę serwera sysadmin można przyznać wielu logowaniom Microsoft Entra w ramach wystąpienia zarządzanego SQL.

Aby dodać konto logowania do roli serwera sysadmin:

  1. Zaloguj się ponownie do zarządzanej instancji SQL, lub użyj istniejącego połączenia z administratorem Microsoft Entra lub uprawnieniem SQL, który jest sysadmin.

  2. W Object Explorer kliknij prawym przyciskiem myszy serwer i wybierz pozycję Nowe zapytanie.

  3. Przypisz roli serwera sysadmin kontu logowania Microsoft Entra przy użyciu następującej składni języka T-SQL:

    ALTER SERVER ROLE sysadmin ADD MEMBER login_name
    GO
    

    W poniższym przykładzie rola serwera sysadmin jest przyznawana użytkownikowi nativeuser@aadsqlmi.onmicrosoft.com:

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

Tworzenie dodatkowych identyfikatorów logowania Microsoft Entra przy użyciu programu SSMS

Po utworzeniu logowania Microsoft Entra i przyznaniu mu uprawnień sysadmin, to logowanie może utworzyć dodatkowe logowania przy użyciu klauzuli FROM EXTERNAL PROVIDER z CREATE LOGIN.

  1. Połącz się z wystąpieniem zarządzanym SQL, używając logowania Microsoft Entra, wybierając pozycję Połączenie z serwerem w programie SQL Server Management Studio (SSMS).

    1. Wprowadź nazwę hosta SQL Managed Instance w Nazwa serwera.
    2. W przypadku Authentication wybierz pozycję Microsoft Entra MFA aby wyświetlić okno logowania uwierzytelniania wieloskładnikowego. Zaloguj. Aby uzyskać więcej informacji, zobacz Universal Authentication (SSMS support for multifactor authentication) (Obsługa protokołu SSMS na potrzeby uwierzytelniania wieloskładnikowego).
  2. W Object Explorer kliknij prawym przyciskiem myszy serwer i wybierz pozycję Nowe zapytanie.

  3. W oknie zapytania użyj następującej składni, aby utworzyć identyfikator logowania dla innego konta Microsoft Entra:

    USE master
    GO
    CREATE LOGIN login_name FROM EXTERNAL PROVIDER
    GO
    

    W tym przykładzie jest tworzony identyfikator logowania dla użytkownika Microsoft Entra bob@aadsqlmi.net, którego domena aadsqlmi.net jest federowana z domeną Microsoft Entra aadsqlmi.onmicrosoft.com.

    Wykonaj następujące polecenie w języku T-SQL. Federowane konta Microsoft Entra są zamiennikami dla SQL Managed Instance lokalnych loginów i użytkowników Windows.

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Utwórz bazę danych w wystąpieniu zarządzanym SQL przy użyciu składni CREATE DATABASE . Ta baza danych będzie używana do testowania logowań użytkowników w kolejnej sekcji.

    1. W Object Explorer kliknij prawym przyciskiem myszy serwer i wybierz pozycję Nowe zapytanie.

    2. W oknie zapytania użyj następującej składni, aby utworzyć bazę danych o nazwie MyMITestDB.

      CREATE DATABASE MyMITestDB;
      GO
      
  5. Utwórz login SQL Managed Instance dla grupy w Microsoft Entra ID. Grupa musi istnieć w Microsoft Entra ID, zanim dodasz dane logowania do instancji zarządzanej SQL. Zobacz Utwórz grupę podstawową i dodaj członków przy użyciu Microsoft Entra ID. Utwórz grupę mygroup i dodaj członków do tej grupy.

  6. Otwórz nowe okno zapytania w SQL Server Management Studio.

    W tym przykładzie założono, że istnieje grupa o nazwie mygroup w Microsoft Entra ID. Wykonaj następujące polecenie:

    USE master
    GO
    CREATE LOGIN [mygroup] FROM EXTERNAL PROVIDER
    GO
    
  7. Zaloguj się do zarządzanego wystąpienia SQL w ramach testu, używając nowo utworzonego loginu lub grupy. Otwórz nowe połączenie z wystąpieniem zarządzanym SQL i użyj nowego identyfikatora logowania podczas uwierzytelniania.

  8. W Object Explorer kliknij prawym przyciskiem myszy serwer i wybierz pozycję Nowe zapytanie dla nowego połączenia.

  9. Sprawdź uprawnienia serwera dla nowo utworzonego loginu Microsoft Entra, wykonując następujące polecenie:

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

Wsparcie Azure SQL dla podmiotów Microsoft Entra jako użytkowników i identyfikatorów logowania jest rozszerzone na użytkowników wewnętrznych oraz zewnętrznych użytkowników-gości Microsoft Entra External ID. Użytkownicy-goście, zarówno indywidualnie, jak i w ramach grupy, mogą być używane tak samo jak każdy inny użytkownik Microsoft Entra w Azure SQL. Jeśli chcesz, aby użytkownicy-goście mogli tworzyć inne identyfikatory logowania serwera Microsoft Entra lub użytkowników bazy danych, muszą mieć uprawnienia do odczytu innych tożsamości w katalogu Microsoft Entra. To uprawnienie jest konfigurowane na poziomie katalogu. Aby uzyskać więcej informacji, zobacz uprawnienia dostępu dla gościa w Microsoft Entra ID.

Utwórz użytkownika Microsoft Entra z poziomu logowania do Microsoft Entra

Autoryzacja do poszczególnych baz danych działa podobnie jak w przypadku SQL Managed Instance i baz danych w SQL Server. Możesz utworzyć użytkownika na podstawie istniejącego identyfikatora logowania w bazie danych, który ma przyznane uprawnienia do tej bazy danych lub został przypisany do roli w bazie danych.

Teraz, gdy utworzyliśmy bazę danych o nazwie MyMITestDB i identyfikator logowania, który ma tylko uprawnienia domyślne, następnym krokiem jest utworzenie użytkownika na podstawie tego identyfikatora logowania. Obecnie konto użytkownika może nawiązać połączenie z wystąpieniem zarządzanym SQL i wyświetlić wszystkie bazy danych, ale nie może oddziaływać z bazami danych. Jeśli zalogujesz się przy użyciu konta Microsoft Entra z uprawnieniami domyślnymi i spróbujesz rozwinąć nowo utworzoną bazę danych, zostanie wyświetlony następujący błąd:

Ochwyt ekranu przedstawiający komunikat o błędzie z Object Explorer SSMS z informacją

Aby uzyskać więcej informacji na temat udzielania uprawnień bazy danych, zobacz Wprowadzenie do uprawnień silnika bazy danych.

Tworzenie użytkownika Microsoft Entra i tworzenie przykładowej tabeli

Uwaga

Istnieją pewne ograniczenia, gdy użytkownik loguje się w ramach grupy Microsoft Entra. Na przykład wywołanie polecenia SUSER_SID zwraca NULL, ponieważ dany użytkownik Microsoft Entra nie jest częścią tabeli sys.server_principals. W związku z tym dostęp do niektórych procedur składowanych lub lista przyznanych uprawnień może być ograniczona w tym przypadku.

  1. Zaloguj się do wystąpienia zarządzanego SQL przy użyciu konta sysadmin w SQL Server Management Studio.

  2. W Object Explorer kliknij prawym przyciskiem myszy serwer i wybierz pozycję Nowe zapytanie.

  3. W oknie zapytania użyj następującej składni, aby utworzyć użytkownika na podstawie identyfikatora logowania Microsoft Entra:

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

    Poniższy przykład tworzy użytkownika bob@aadsqlmi.net na podstawie identyfikatora logowania bob@aadsqlmi.net:

    USE MyMITestDB
    GO
    CREATE USER [bob@aadsqlmi.net] FROM LOGIN [bob@aadsqlmi.net]
    GO
    
  4. Obsługiwane jest również utworzenie użytkownika Microsoft Entra na podstawie konta Microsoft Entra, które jest grupą.

    Poniższy przykład tworzy login dla grupy Microsoft Entra mygroup, która istnieje w Twojej dzierżawie Microsoft Entra:

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

    Wszyscy użytkownicy, którzy należą do grupy mygroup, mogą uzyskać dostęp do bazy danych MyMITestDB.

    Ważne

    Podczas tworzenia USER z logowania Microsoft Entra określ user_name jako taki sam login_name z LOGIN.

    Aby uzyskać więcej informacji, zobacz temat CREATE USER.

  5. W nowym oknie zapytania utwórz tabelę testów, korzystając z następującego polecenia w języku T-SQL:

    USE MyMITestDB
    GO
    CREATE TABLE TestTable
    (
    AccountNum varchar(10),
    City varchar(255),
    Name varchar(255),
    State varchar(2)
    );
    
  6. Utwórz połączenie w programie SSMS z utworzonym użytkownikiem. Zauważysz, że tabela TestTable utworzona wcześniej przez administratora systemu nie jest widoczna. Musimy nadać temu użytkownikowi uprawnienia odczytu danych z bazy danych.

  7. Możesz sprawdzić bieżące uprawnienia użytkownika, wykonując następujące polecenie:

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

Dodawanie użytkowników do ról na poziomie bazy danych

Wyświetlanie danych przez użytkownika jest możliwe dopiero po przyznaniu mu odpowiednich ról na poziomie bazy danych.

  1. Zaloguj się do zarządzanego wystąpienia SQL kontem sysadmin korzystając z SQL Server Management Studio.

  2. W Object Explorer kliknij prawym przyciskiem myszy serwer i wybierz pozycję Nowe zapytanie.

  3. Udziel użytkownikowi Microsoft Entra roli bazy danych db_datareader przy użyciu następującej składni języka T-SQL:

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

    Poniższy przykład przedstawia użytkownika bob@aadsqlmi.net i grupę mygroup z uprawnieniami db_datareader w bazie danych MyMITestDB :

    USE MyMITestDB
    GO
    ALTER ROLE db_datareader ADD MEMBER [bob@aadsqlmi.net]
    GO
    ALTER ROLE db_datareader ADD MEMBER [mygroup]
    GO
    
  4. Sprawdź, czy użytkownik Microsoft Entra utworzony w bazie danych istnieje, wykonując następujące polecenie:

    SELECT * FROM sys.database_principals
    GO
    
  5. Utwórz nowe połączenie z zarządzanym wystąpieniem SQL za pomocą użytkownika, który został dodany do roli db_datareader.

  6. Rozwiń bazę danych w Object Explorer aby wyświetlić tabelę.

    Zrzut ekranu z programu SSMS przedstawiający strukturę folderów w Object Explorer dla tabel w bazie danych MyMITestDB. Folder dbo.TestTable został wyróżniony.

  7. Otwórz nowe okno zapytania i wykonaj następującą SELECT instrukcję:

    SELECT *
    FROM TestTable
    

    Czy jesteś w stanie wyświetlić dane w tabeli? Powinny zostać wyświetlone zwracane kolumny, jak pokazano na poniższym zrzucie ekranu:

    Zrzut ekranu przedstawiający kartę Wyniki w SSMS Object Explorer z nagłówkami kolumn tabeli AccountNum, City, Name i State.

Personifikuj identyfikatory logowania Microsoft Entra

SQL Managed Instance obsługuje personifikację identyfikatorów logowania Microsoft Entra.

Testowanie podszywania się

  1. Zaloguj się do zarządzanego wystąpienia SQL kontem sysadmin korzystając z SQL Server Management Studio.

  2. W Object Explorer kliknij prawym przyciskiem myszy serwer i wybierz pozycję Nowe zapytanie.

  3. W oknie zapytania użyj następującego polecenia, aby utworzyć nową procedurę składowaną:

    USE MyMITestDB
    GO
    CREATE PROCEDURE dbo.usp_Demo
    WITH EXECUTE AS 'bob@aadsqlmi.net'
    AS
    SELECT user_name();
    GO
    
  4. Użyj następującego polecenia, aby sprawdzić, czy użytkownik, którego personifikujesz podczas wykonywania procedury składowanej, to bob@aadsqlmi.net.

    Exec dbo.usp_Demo
    
  5. Przetestuj personifikację przy użyciu instrukcji EXECUTE AS LOGIN :

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

Uwaga

Tylko loginy na poziomie serwera SQL, które są częścią roli sysadmin, mogą wykonywać następujące operacje przeznaczone dla zasad Microsoft Entra:

  • EXECUTE AS USER
  • EXECUTE AS LOGIN

Używanie zapytań między bazami danych

Zapytania obejmujące wiele baz danych są obsługiwane w przypadku kont Microsoft Entra z identyfikatorami logowania Microsoft Entra. Aby przetestować zapytanie obejmujące wiele baz danych przy użyciu grupy Microsoft Entra, musimy utworzyć inną bazę danych i tabelę. Jeśli już istnieje, możesz pominąć tworzenie innej bazy danych i tabeli.

  1. Zaloguj się do zarządzanego wystąpienia SQL kontem sysadmin korzystając z SQL Server Management Studio.

  2. W Object Explorer kliknij prawym przyciskiem myszy serwer i wybierz pozycję Nowe zapytanie.

  3. W oknie zapytania użyj następującego polecenia, aby utworzyć bazę danych o nazwie MyMITestDB2 oraz tabelę o nazwie TestTable2:

    CREATE DATABASE MyMITestDB2;
    GO
    USE MyMITestDB2
    GO
    CREATE TABLE TestTable2
    (
    EmpId varchar(10),
    FirstName varchar(255),
    LastName varchar(255),
    Status varchar(10)
    );
    
  4. W nowym oknie zapytania wykonaj następujące polecenie, aby utworzyć użytkownika mygroup w nowej bazie danych MyMITestDB2 i przyznać SELECT uprawnienia do tej bazy danych mygroup:

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Zaloguj się do zarządzanej instancji SQL przy użyciu SQL Server Management Studio jako członek grupy Microsoft Entra mygroup. Otwórz nowe okno zapytania i wykonaj instrukcję cross-database SELECT :

    USE MyMITestDB
    SELECT * FROM MyMITestDB2..TestTable2
    GO
    

    Powinny zostać wyświetlone wyniki z tabeli TestTable2.

Dodatkowe obsługiwane scenariusze

  • Zarządzanie agentami SQL i wykonywanie zadań są obsługiwane w przypadku logowania Microsoft Entra.
  • Microsoft Entra loginy mogą wykonywać operacje tworzenia i przywracania kopii zapasowej bazy danych.
  • Audyt wszystkich oświadczeń związanych z logowaniami Microsoft Entra i zdarzeniami uwierzytelniania.
  • Dedykowane połączenie administratora dla loginów Microsoft Entra, które są członkami roli serwera sysadmin.
  • Logowania Microsoft Entra są obsługiwane za pomocą narzędzia sqlcmd i SQL Server Management Studio.
  • Wyzwalacze logowania są obsługiwane dla zdarzeń logowania związanych z logowaniem w Microsoft Entra.
  • Usługi Service Broker i pocztę bazy danych można skonfigurować przy użyciu kont Microsoft Entra.