Udostępnij za pośrednictwem


Samouczek: tworzenie i używanie identyfikatorów logowania do serwera Microsoft Entra

Dotyczy: Azure SQL Database Azure SQL Managed InstanceAzure Synapse Analytics (tylko dedykowane pule SQL)

W tym artykule opisano proces tworzenia i używania identyfikatorów logowania wspieranych przez usługę Microsoft Entra ID (dawniej Azure Active Directory) w wirtualnej master bazie danych usługi Azure SQL.

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

  • Tworzenie identyfikatora logowania entra firmy Microsoft w wirtualnej master bazie danych przy użyciu nowego rozszerzenia składni dla usługi Azure SQL Database
  • Tworzenie użytkownika zamapowanego na logowanie firmy Microsoft Entra w wirtualnej master bazie danych
  • Udzielanie ról serwera użytkownikowi firmy Microsoft Entra
  • Wyłączanie logowania do usługi Microsoft Entra

Uwaga

Podmioty zabezpieczeń serwera Microsoft Entra (identyfikatory logowania) są obecnie dostępne w publicznej wersji zapoznawczej usługi Azure SQL Database. Usługa Azure SQL Managed Instance może już korzystać z identyfikatorów logowania usługi Microsoft Entra.

Wymagania wstępne

Tworzenie identyfikatora logowania microsoft Entra

  1. Utwórz identyfikator logowania usługi Azure SQL Database dla konta microsoft Entra. W naszym przykładzie użyjemy bob@contoso.com nazwy , która istnieje w naszej domenie Firmy Microsoft Entra o nazwie contoso. Identyfikator logowania można również utworzyć na podstawie grupy entra firmy Microsoft lub jednostki usługi (aplikacji). Na przykład mygroup jest to grupa Microsoft Entra składająca się z kont Microsoft Entra, które są członkami tej grupy. Aby uzyskać więcej informacji, zobacz CREATE LOGIN (Transact-SQL).

    Uwaga

    Pierwszy identyfikator logowania firmy Microsoft Entra musi zostać utworzony przez administratora firmy Microsoft Entra. Administrator firmy Microsoft Entra może być użytkownikiem lub grupą firmy Microsoft Entra. Identyfikator logowania SQL nie może utworzyć identyfikatorów logowania firmy Microsoft Entra.

  2. Za pomocą programu SQL Server Management Studio (SSMS) zaloguj się do usługi SQL Database przy użyciu konta administratora usługi Microsoft Entra skonfigurowanego dla serwera.

  3. Uruchom poniższe zapytanie:

    Use master
    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER
    GO
    
  4. Sprawdź utworzone logowanie w pliku sys.server_principals. Wykonaj następujące zapytanie:

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

    Zostaną wyświetlone podobne dane wyjściowe do następujących:

    Name                            type_desc       type   is_disabled
    bob@contoso.com                 EXTERNAL_LOGIN  E      0
    
  5. Identyfikator logowania bob@contoso.com został utworzony w wirtualnej master bazie danych.

Tworzenie użytkownika na podstawie identyfikatora logowania firmy Microsoft Entra

  1. Teraz, gdy utworzyliśmy identyfikator logowania firmy Microsoft Entra, możemy utworzyć użytkownika firmy Microsoft Entra na poziomie bazy danych, który jest mapowany na logowanie microsoft Entra w wirtualnej master bazie danych. Będziemy nadal używać naszego przykładu, bob@contoso.com aby utworzyć użytkownika w wirtualnej master bazie danych, ponieważ chcemy zademonstrować dodanie użytkownika do ról specjalnych. Tylko administrator firmy Microsoft Entra lub administrator programu SQL Server mogą tworzyć użytkowników w wirtualnej master bazie danych.

  2. Używamy wirtualnej master bazy danych, ale możesz przełączyć się do wybranej bazy danych, jeśli chcesz utworzyć użytkowników w innych bazach danych. Uruchom poniższe zapytanie.

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

    Napiwek

    Chociaż nie jest wymagane używanie aliasów użytkownika entra firmy Microsoft (na przykład bob@contoso.com), zaleca się użycie tego samego aliasu dla użytkowników firmy Microsoft Entra i logowań firmy Microsoft Entra.

  3. Sprawdź utworzonego użytkownika w pliku sys.database_principals. Wykonaj następujące zapytanie:

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

    Zostaną wyświetlone podobne dane wyjściowe do następujących:

    Name                            type_desc       type
    bob@contoso.com                 EXTERNAL_USER   E
    

Uwaga

Istniejąca składnia tworzenia użytkownika entra firmy Microsoft bez logowania firmy Microsoft Entra jest nadal obsługiwana. Wykonanie poniższej składni powoduje utworzenie bazy danych zawartej przez użytkownika w określonej bazie danych, z którą masz połączenie. Co ważne, ten użytkownik nie jest skojarzony z żadnym logowaniem, nawet jeśli w wirtualnej master bazie danych istnieje identyfikator logowania o tej samej nazwie.

Na przykład CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER.

Możesz utworzyć identyfikator logowania entra firmy Microsoft przy użyciu jednostki usługi z inną nazwą wyświetlaną. Aby uzyskać więcej informacji, zobacz Microsoft Entra logins and users with nonunique display names (Identyfikatory logowania i użytkownicy firmy Microsoft z nazwami wyświetlanymi bez nazwy).

Udzielanie ról na poziomie serwera do logowań usługi Microsoft Entra

Możesz dodawać identyfikatory logowania do stałych ról na poziomie serwera, takich jak ##MS_DefinitionReader##, ##MS_ServerStateReader##lub ##MS_ServerStateManager## rola.

Uwaga

Role na poziomie serwera wymienione tutaj nie są obsługiwane w przypadku grup firmy Microsoft Entra.

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

Uprawnienia nie będą obowiązywać, dopóki użytkownik nie połączy się ponownie. Opróżnij również pamięć podręczną DBCC:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS

Aby sprawdzić, które identyfikatory logowania firmy Microsoft są częścią ról na poziomie serwera, uruchom następujące zapytanie:

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;

Przyznawanie ról specjalnych użytkownikom firmy Microsoft Entra

Role specjalne dla usługi SQL Database można przypisać do użytkowników w wirtualnej master bazie danych.

Aby przyznać użytkownikowi jedną ze specjalnych ról bazy danych, użytkownik musi istnieć w wirtualnej master bazie danych.

Aby dodać użytkownika do roli, możesz uruchomić następujące zapytanie:

ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]

Aby usunąć użytkownika z roli, uruchom następujące zapytanie:

ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]

AzureAD_object może być użytkownikiem, grupą lub jednostką usługi firmy Microsoft w usłudze Microsoft Entra ID.

W naszym przykładzie utworzyliśmy użytkownika bob@contoso.com. Nadajmy użytkownikowi role dbmanager i loginmanager .

  1. Uruchom poniższe zapytanie:

    ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com]
    ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
    
  2. Sprawdź przypisanie roli bazy danych, uruchamiając następujące zapytanie:

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

    Zostaną wyświetlone podobne dane wyjściowe do następujących:

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

Opcjonalne — wyłączanie logowania

Składnia DDL ALTER LOGIN (Transact-SQL) może służyć do włączania lub wyłączania logowania entra firmy Microsoft w usłudze Azure SQL Database.

ALTER LOGIN [bob@contoso.com] DISABLE

DISABLE ENABLE Aby zmiany zaczęły obowiązywać natychmiast, pamięć podręczna uwierzytelniania i pamięć podręczna TokenAndPermUserStore muszą zostać wyczyszczone przy użyciu następujących poleceń języka T-SQL:

DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS

Sprawdź, czy logowanie zostało wyłączone, wykonując następujące zapytanie:

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

W tym przypadku należy zezwolić na dostęp tylko do odczytu w replikach geograficznych, ale odmówić połączenia na serwerze podstawowym.