Samouczek: zabezpieczanie przy użyciu identyfikatorów logowania firmy Microsoft — Azure SQL Managed Instance

Dotyczy:Azure SQL Managed Instance

W tym artykule dowiesz się, jak używać jednostek serwera (identyfikatorów logowania) wspieranych przez identyfikator entra firmy Microsoft (dawniej Azure Active Directory), aby zabezpieczyć wystąpienie zarządzane usługi Azure SQL.

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

  • Tworzenie identyfikatora logowania entra firmy Microsoft dla wystąpienia zarządzanego
  • Udzielanie uprawnień do logowania w wystąpieniu zarządzanym
  • Tworzenie użytkowników firmy Microsoft Entra na podstawie identyfikatorów logowania
  • Przypisywanie uprawnień do użytkowników i zarządzanie zabezpieczeniami bazy danych
  • Używanie personifikacji z użytkownikami
  • Używanie zapytań między bazami danych z użytkownikami
  • Informacje na temat funkcji zabezpieczeń takich jak ochrona przed zagrożeniami, inspekcja, maskowanie danych i szyfrowanie

Uwaga

Microsoft Entra ID był wcześniej 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 można uzyskać za pośrednictwem prywatnego adresu IP. Podobnie jak izolowane środowisko programu SQL Server, aplikacje lub użytkownicy muszą mieć dostęp do sieci usługi SQL Managed Instance (VNet) przed nawiązaniem połączenia. Aby uzyskać więcej informacji, zobacz Łączenie aplikacji z usługą SQL Managed Instance.

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

Tworzenie logowania firmy Microsoft Entra przy użyciu programu SSMS

Pierwszy identyfikator logowania firmy Microsoft Entra można utworzyć przez administratora SQL lub administratora firmy Microsoft Entra utworzonego podczas aprowizacji. Aby uzyskać więcej informacji, zobacz Provision a Microsoft Entra administrator for SQL Managed Instance (Aprowizuj administratora usługi Microsoft Entra dla usługi SQL Managed Instance).

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

  1. Połączenie do wystąpienia zarządzanego przy użyciu dowolnego sysadmin elementu Logowanie SQL lub administrator firmy Microsoft Entra przy użyciu programu SQL Server Management Studio (SSMS).

  2. W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie 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 utworzono identyfikator 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 polecenie Wykonaj, aby utworzyć identyfikator logowania.

  5. Sprawdź nowo dodany identyfikator logowania, wykonując następujące polecenie w języku T-SQL:

    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.

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

Udzielanie uprawnień do tworzenia identyfikatorów logowania

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

Identyfikatory logowania uwierzytelniania SQL

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

Identyfikatory logowania uwierzytelniania entra firmy Microsoft

  • Jeśli identyfikator logowania jest podmiotem zabezpieczeń serwera Firmy Microsoft Entra, musi mieć przypisaną sysadmin rolę serwera lub securityadmin w celu utworzenia identyfikatorów logowania dla innych użytkowników, grup i aplikacji firmy Microsoft Entra.
  • Aby utworzyć inne identyfikatory logowania firmy Microsoft, należy przyznać co najmniej uprawnienie ALTER ANY LOGIN .
  • Domyślnie standardowe uprawnienia przyznane nowo utworzonym identyfikatorom logowania firmy Microsoft entra w programie master to: CONNECT SQL i VIEW ANY DATABASE (POŁĄCZ SQL i WYŚWIETL DOWOLNĄ BAZĘ DANYCH).
  • sysadmin Rolę serwera można udzielić wielu logowań firmy Microsoft Entra w ramach wystąpienia zarządzanego.

Aby dodać identyfikator logowania do roli serwera sysadmin:

  1. Zaloguj się ponownie do wystąpienia zarządzanego lub użyj istniejącego połączenia z administratorem firmy Microsoft Entra lub podmiotem zabezpieczeń SQL, który jest .sysadmin

  2. W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie wybierz pozycję Nowe zapytanie.

  3. Udziel użytkownikowi Microsoft Entra login sysadmin roli serwera 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 przydzielono rolę serwera sysadmin identyfikatorowi logowania nativeuser@aadsqlmi.onmicrosoft.com

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

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

Po utworzeniu i udzieleniu sysadmin uprawnień logowania firmy Microsoft Entra identyfikator logowania może utworzyć dodatkowe identyfikatory logowania przy użyciu klauzuli FROM EXTERNAL PROVIDER z poleceniem CREATE LOGIN.

  1. Połączenie do wystąpienia zarządzanego przy użyciu nazwy logowania firmy Microsoft Entra, wybierając pozycję Połączenie do serwera w programie SQL Server Management Studio (SSMS).

    1. Wprowadź nazwę hosta usługi SQL Managed Instance w polu Nazwa serwera.
    2. W obszarze Uwierzytelnianie wybierz pozycję Active Directory — uniwersalna z obsługą uwierzytelniania wieloskładnikowego, aby wyświetlić okno logowania do 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 Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie 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 bob@aadsqlmi.netMicrosoft Entra, którego domena aadsqlmi.net jest sfederowana z domeną Microsoft Entra aadsqlmi.onmicrosoft.com.

    Wykonaj następujące polecenie w języku T-SQL. Federacyjne konta Microsoft Entra to zamienniki wystąpienia zarządzanego SQL dla lokalnych logowań systemu Windows i użytkowników.

    USE master
    GO
    CREATE LOGIN [bob@aadsqlmi.net] FROM EXTERNAL PROVIDER
    GO
    
  4. Utwórz bazę danych w wystąpieniu zarządzanym, korzystając ze składni CREATE DATABASE. Ta baza danych będzie używana do przetestowania identyfikatorów logowania użytkownika w kolejnej sekcji.

    1. W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie 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 identyfikator logowania usługi SQL Managed Instance dla grupy w usłudze Microsoft Entra ID. Grupa musi istnieć w identyfikatorze Entra firmy Microsoft przed dodaniem identyfikatora logowania do usługi SQL Managed Instance. Zobacz Tworzenie podstawowej grupy i dodawanie członków przy użyciu identyfikatora Entra firmy Microsoft. Utwórz grupę mygroup i dodaj członków do tej grupy.

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

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

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

  8. W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie wybierz pozycję Nowe zapytanie dla nowego połączenia.

  9. Sprawdź uprawnienia serwera dla nowo utworzonej nazwy logowania firmy Microsoft Entra, wykonując następujące polecenie:

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

Obsługa podmiotów zabezpieczeń usługi Microsoft Entra w usłudze Azure SQL, ponieważ użytkownicy i identyfikatory logowania są rozszerzane na Tożsamość zewnętrzna Microsoft Entra użytkowników wewnętrznych i zewnętrznych gości. Użytkownicy-goście, zarówno indywidualnie, jak i jako część grupy, mogą być używani tak samo jak każdy inny użytkownik firmy Microsoft Entra w usłudze Azure SQL. Jeśli chcesz, aby użytkownicy-goście mogli tworzyć inne identyfikatory logowania do 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 gościa w usłudze Microsoft Entra ID.

Tworzenie użytkownika entra firmy Microsoft na podstawie identyfikatora logowania firmy Microsoft

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

Po utworzeniu bazy danych o nazwie MyMITestDB oraz utworzeniu identyfikatora logowania, który ma tylko uprawnienia domyślne, utworzymy teraz użytkownika na podstawie tego identyfikatora. Obecnie identyfikator logowania może nawiązać połączenie z wystąpieniem zarządzanym i wyświetlać wszystkie bazy danych, ale nie może korzystać z tych baz 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:

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

Aby uzyskać więcej informacji na temat udzielania uprawnień bazie danych, zobacz Getting Started with Database Engine Permissions (Rozpoczynanie pracy z uprawnieniami aparatu bazy danych).

Tworzenie użytkownika entra firmy Microsoft i tworzenie przykładowej tabeli

Uwaga

Istnieją pewne ograniczenia, gdy użytkownik loguje się w ramach grupy Microsoft Entra. Na przykład wywołanie metody SUSER_SID zwraca NULLwartość , ponieważ dany użytkownik Firmy Microsoft Entra nie jest częścią sys.server_principals tabeli. 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 za pomocą konta sysadmin, korzystając z programu SQL Server Management Studio.

  2. W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie wybierz pozycję Nowe zapytanie.

  3. W oknie zapytania użyj następującej składni, aby utworzyć użytkownika na podstawie nazwy logowania firmy 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 entra firmy Microsoft na podstawie nazwy logowania firmy Microsoft Entra, która jest grupą.

    Poniższy przykład tworzy identyfikator logowania dla grupy mygroup firmy Microsoft, która istnieje w dzierżawie firmy 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 użytkownika na podstawie identyfikatora logowania firmy Microsoft określ user_name co ten sam login_name z identyfikatora 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 nie można wyświetlić tabeli TestTable, która została wcześniej utworzona przez konto sysadmin. 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 wystąpienia zarządzanego za pomocą konta sysadmin, korzystając z programu SQL Server Management Studio.

  2. W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie wybierz pozycję Nowe zapytanie.

  3. Udziel użytkownikowi db_datareader Microsoft Entra roli bazy danych 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
    

    W poniższym przykładzie przyznano użytkownikowi bob@aadsqlmi.net oraz grupie mygroup uprawnienia 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 firmy 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 wystąpieniem zarządzanym z użytkownikiem, który został dodany do roli db_datareader.

  6. Rozwiń bazę danych w Eksploratorze obiektów, aby wyświetlić tabelę.

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

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

    SELECT *
    FROM TestTable
    

    Czy jesteś w stanie wyświetlić dane w tabeli? Kolumny powinny zostać zwrócone.

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

Personifikuj identyfikatory logowania w usłudze Microsoft Entra

Usługa SQL Managed Instance obsługuje personifikację logowań firmy Microsoft Entra.

Testowanie personifikacji

  1. Zaloguj się do wystąpienia zarządzanego za pomocą konta sysadmin, korzystając z programu SQL Server Management Studio.

  2. W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie 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ę, korzystając z instrukcji EXECUTE AS LOGIN:

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

Uwaga

Tylko identyfikatory logowania na poziomie serwera SQL, które są częścią sysadmin roli, mogą wykonywać następujące operacje przeznaczone dla podmiotów zabezpieczeń firmy Microsoft:

  • 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 firmy Microsoft Entra. Aby przetestować zapytanie obejmujące wiele baz danych za pomocą grupy Firmy 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 wystąpienia zarządzanego za pomocą konta sysadmin, korzystając z programu SQL Server Management Studio.

  2. W Eksploratorze obiektów kliknij prawym przyciskiem myszy serwer, a następnie 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 udziel uprawnień SELECT w tej bazie danych użytkownikowi mygroup:

    USE MyMITestDB2
    GO
    CREATE USER [mygroup] FROM LOGIN [mygroup]
    GO
    GRANT SELECT TO [mygroup]
    GO
    
  5. Zaloguj się do wystąpienia zarządzanego przy użyciu programu SQL Server Management Studio jako członek grupy mygroup firmy Microsoft Entra. Otwórz nowe okno zapytania i wykonaj instrukcję SELECT w wielu bazach danych:

    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 logowań firmy Microsoft Entra.
  • Operacje tworzenia i przywracania kopii zapasowej bazy danych mogą być wykonywane przez identyfikatory logowania firmy Microsoft Entra.
  • Inspekcja wszystkich instrukcji związanych ze zdarzeniami logowania i uwierzytelniania firmy Microsoft Entra.
  • Dedykowane połączenie administratora dla identyfikatorów logowania firmy Microsoft, które są członkami sysadmin roli serwera.
  • Identyfikatory logowania entra firmy Microsoft są obsługiwane przy użyciu narzędzia sqlcmd i narzędzia SQL Server Management Studio .
  • Wyzwalacze logowania są obsługiwane w przypadku zdarzeń logowania pochodzących z logowań firmy Microsoft Entra.
  • Usługi Service Broker i poczta bazy danych można skonfigurować przy użyciu logowań firmy Microsoft Entra.

Następne kroki

Włączanie funkcji zabezpieczeń.

Zobacz artykuł Funkcje zabezpieczeń usługi SQL Managed Instance, aby uzyskać pełną listę sposobów zabezpieczania bazy danych. Omówione są następujące funkcje zabezpieczeń:

Możliwości usługi SQL Managed Instance

Aby zapoznać się z pełnym omówieniem możliwości usługi SQL Managed Instance, zobacz: