Udostępnij za pośrednictwem


Tożsamości zarządzane w usłudze Microsoft Entra for Azure SQL

Dotyczy: Azure SQL DatabaseAzure SQL Managed Instance

Microsoft Entra ID (dawniej Azure Active Directory) obsługuje dwa typy tożsamości zarządzanych: tożsamość zarządzana przypisana przez system (SMI) i tożsamość zarządzana przypisana przez użytkownika (UMI). Aby uzyskać więcej informacji, zobacz Typy tożsamości zarządzanych.

Usługa SMI jest automatycznie przypisywana do usługi Azure SQL Managed Instance po jej utworzeniu. Jeśli używasz uwierzytelniania microsoft Entra w usłudze Azure SQL Database, musisz przypisać usługę SMI, gdy jednostki usługi platformy Azure są używane do tworzenia użytkowników usługi Microsoft Entra w usłudze SQL Database.

Wcześniej do tożsamości usługi Azure SQL Managed Instance lub serwera usługi SQL Database można było przypisać tylko elementy SMI. Teraz można przypisać interfejs użytkownika do wystąpienia zarządzanego SQL lub usługi SQL Database jako tożsamości wystąpienia lub serwera.

Oprócz używania interfejsu użytkownika i usługi SMI jako tożsamości wystąpienia lub serwera, można ich użyć do uzyskania dostępu do bazy danych przy użyciu opcji Authentication=Active Directory Managed Identityparametry połączenia SQL . Musisz utworzyć użytkownika SQL na podstawie tożsamości zarządzanej w docelowej bazie danych przy użyciu instrukcji CREATE USER . Aby uzyskać więcej informacji, zobacz Using Microsoft Entra authentication with SqlClient (Korzystanie z uwierzytelniania entra firmy Microsoft w programie SqlClient).

Aby pobrać bieżące elementy UMI lub SMI dla usługi Azure SQL Managed Instance lub Azure SQL Database, zobacz Pobieranie lub ustawianie tożsamości zarządzanej dla serwera logicznego lub wystąpienia zarządzanego w dalszej części tego artykułu.

Korzyści wynikające z używania tożsamości zarządzanych przypisanych przez użytkownika

Istnieje kilka zalet używania interfejsu użytkownika jako tożsamości serwera:

  • Użytkownicy mają elastyczność tworzenia i obsługi własnych interfejsów UMI dla dzierżawy. Identyfikatory UMI można używać jako tożsamości serwera dla usługi Azure SQL. Interfejs użytkownika jest zarządzany przez użytkownika, natomiast usługa SMI jest unikatowo zdefiniowana na serwer i przypisana przez system.

  • W przeszłości potrzebna była rola Czytelników katalogu Entra ID firmy Microsoft podczas korzystania z usługi SMI jako tożsamości serwera lub wystąpienia. Wraz z wprowadzeniem dostępu do identyfikatora Entra firmy Microsoft za pośrednictwem programu Microsoft Graph użytkownicy, którzy są zaniepokojeni przyznaniem uprawnień wysokiego poziomu, takim jak rola Czytelników katalogów do usługi SMI lub UMI, mogą również nadać uprawnienia niższego poziomu, aby tożsamość serwera lub wystąpienia mogła uzyskać dostęp do programu Microsoft Graph.

    Aby uzyskać więcej informacji na temat udostępniania uprawnień czytelników katalogu i jej funkcji, zobacz Rola Czytelników katalogów w identyfikatorze Entra firmy Microsoft dla usługi Azure SQL.

  • Użytkownicy mogą wybrać określony interfejs użytkownika jako tożsamość serwera lub wystąpienia dla wszystkich baz danych lub wystąpień zarządzanych w dzierżawie. Może też mieć wiele interfejsów UMI przypisanych do różnych serwerów lub wystąpień.

    Interfejsy UMI mogą być używane na różnych serwerach do reprezentowania różnych funkcji. Na przykład interfejs użytkownika może obsługiwać funkcję Transparent Data Encryption (TDE) na jednym serwerze, a usługa UMI może obsługiwać uwierzytelnianie firmy Microsoft Entra na innym serwerze.

  • Potrzebujesz interfejsu użytkownika, aby utworzyć serwer logiczny na platformie Azure skonfigurowany za pomocą funkcji TDE z kluczami zarządzanymi przez klienta (CMKs). Aby uzyskać więcej informacji, zobacz Transparent Data Encryption zarządzane przez klienta przy użyciu tożsamości zarządzanej przypisanej przez użytkownika.

  • UMI są niezależne od serwerów logicznych lub wystąpień zarządzanych. Po usunięciu serwera logicznego lub wystąpienia usługa SMI również zostanie usunięta. Interfejsy UMI nie są usuwane z serwerem.

Uwaga

Należy włączyć tożsamość wystąpienia (SMI lub UMI), aby umożliwić obsługę uwierzytelniania w usłudze Microsoft Entra w usłudze SQL Managed Instance. W przypadku usługi SQL Database włączenie tożsamości serwera jest opcjonalne i wymagane tylko wtedy, gdy jednostka usługi Microsoft Entra (aplikacja Microsoft Entra) nadzoruje tworzenie użytkowników, grup lub aplikacji firmy Microsoft na serwerze oraz zarządzanie nimi. Aby uzyskać więcej informacji, zobacz Microsoft Entra service principal with Azure SQL (Jednostka usługi Microsoft Entra w usłudze Azure SQL).

Tworzenie tożsamości zarządzanej przypisanej przez użytkownika

Aby uzyskać informacje na temat tworzenia interfejsu użytkownika, zobacz Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika.

Uprawnienia

Po utworzeniu interfejsu użytkownika wymagane są pewne uprawnienia, aby umożliwić usłudze UMI odczytywanie z programu Microsoft Graph jako tożsamości serwera. Przyznaj następujące uprawnienia lub nadaj użytkownikowi rolę Czytelnicy katalogu.

Te uprawnienia powinny zostać przyznane przed aprowizację serwera logicznego lub wystąpienia zarządzanego. Po udzieleniu uprawnień do interfejsu użytkownika są one włączone dla wszystkich serwerów lub wystąpień utworzonych przy użyciu interfejsu użytkownika przypisanego jako tożsamość serwera.

  • User.Read.All: umożliwia dostęp do informacji o użytkowniku firmy Microsoft Entra.
  • GroupMember.Read.All: umożliwia dostęp do informacji o grupie Entra firmy Microsoft.
  • Application.Read.ALL: Umożliwia dostęp do informacji o jednostce usługi Entra firmy Microsoft (aplikacji).

Udzielenie uprawnień

Poniższy przykładowy skrypt programu PowerShell przyznaje niezbędne uprawnienia dla tożsamości zarządzanej. Ten przykład przypisuje uprawnienia do tożsamości umiservertestzarządzanej przypisanej przez użytkownika.

Aby uruchomić skrypt, musisz zalogować się jako użytkownik z rolą Global Administracja istrator lub Privileged Role Administracja istrator.

Skrypt udziela tożsamości zarządzanej User.Read.Alluprawnień , GroupMember.Read.Alli Application.Read.ALL w celu uzyskania dostępu do programu Microsoft Graph.

# Script to assign permissions to an existing UMI 
# The following required Microsoft Graph permissions will be assigned: 
#   User.Read.All
#   GroupMember.Read.All
#   Application.Read.All

Import-Module Microsoft.Graph.Authentication
Import-Module Microsoft.Graph.Applications

$tenantId = "<tenantId>"        # Your tenant ID
$MSIName = "<managedIdentity>"; # Name of your managed identity

# Log in as a user with the "Global Administrator" or "Privileged Role Administrator" role
Connect-MgGraph -TenantId $tenantId -Scopes "AppRoleAssignment.ReadWrite.All,Application.Read.All"

# Search for Microsoft Graph
$MSGraphSP = Get-MgServicePrincipal -Filter "DisplayName eq 'Microsoft Graph'";
$MSGraphSP

# Sample Output

# DisplayName     Id                                   AppId                                SignInAudience      ServicePrincipalType
# -----------     --                                   -----                                --------------      --------------------
# Microsoft Graph 47d73278-e43c-4cc2-a606-c500b66883ef 00000003-0000-0000-c000-000000000000 AzureADMultipleOrgs Application

$MSI = Get-MgServicePrincipal -Filter "DisplayName eq '$MSIName'" 
if($MSI.Count -gt 1)
{ 
Write-Output "More than 1 principal found with that name, please find your principal and copy its object ID. Replace the above line with the syntax $MSI = Get-MgServicePrincipal -ServicePrincipalId <your_object_id>"
Exit
}

# Get required permissions
$Permissions = @(
  "User.Read.All"
  "GroupMember.Read.All"
  "Application.Read.All"
)

# Find app permissions within Microsoft Graph application
$MSGraphAppRoles = $MSGraphSP.AppRoles | Where-Object {($_.Value -in $Permissions)}

# Assign the managed identity app roles for each permission
foreach($AppRole in $MSGraphAppRoles)
{
    $AppRoleAssignment = @{
	    principalId = $MSI.Id
	    resourceId = $MSGraphSP.Id
	    appRoleId = $AppRole.Id
    }

    New-MgServicePrincipalAppRoleAssignment `
    -ServicePrincipalId $AppRoleAssignment.PrincipalId `
    -BodyParameter $AppRoleAssignment -Verbose
}

Sprawdzanie uprawnień dla tożsamości zarządzanej przypisanej przez użytkownika

Aby sprawdzić uprawnienia dla interfejsu użytkownika, przejdź do witryny Azure Portal. W zasobie Microsoft Entra ID przejdź do pozycji Aplikacje dla przedsiębiorstw. Wybierz pozycję Wszystkie aplikacje dla pozycji Typ aplikacji i wyszukaj utworzony interfejs użytkownika.

Screenshot of enterprise application settings in the Azure portal.

Wybierz pozycję UMI i przejdź do ustawień uprawnień w obszarze Zabezpieczenia.

Screenshot of user-assigned managed identity permissions.

Pobieranie lub ustawianie tożsamości zarządzanej dla serwera logicznego lub wystąpienia zarządzanego

Aby utworzyć serwer przy użyciu interfejsu użytkownika, zobacz następujący przewodnik: Tworzenie serwera logicznego Azure SQL przy użyciu tożsamości zarządzanej przypisanej przez użytkownika.

Pobieranie usługi SMI dla serwera logicznego usługi Azure SQL Database

W witrynie Azure Portal zostanie wyświetlony identyfikator tożsamości zarządzanej przypisanej przez system (SMI) w menu Właściwości serwera logicznego usługi Azure SQL Database.

Screenshot of the Azure portal page for an Azure SQL Database logical server. In the Properties menu, the System Assigned Managed Identity is highlighted.

  • Aby pobrać elementy UMI dla usługi Azure SQL Managed Instance lub Azure SQL Database, skorzystaj z poniższych przykładów programu PowerShell lub interfejsu wiersza polecenia platformy Azure.
  • Aby pobrać usługę SMI dla usługi Azure SQL Managed Instance, użyj następujących przykładów programu PowerShell lub interfejsu wiersza polecenia platformy Azure.

Ustawianie tożsamości zarządzanej w witrynie Azure Portal

Aby ustawić tożsamość zarządzaną przez użytkownika dla serwera logicznego usługi Azure SQL Database lub usługi Azure SQL Managed Instance w witrynie Azure Portal:

  1. Przejdź do zasobu programu SQL Server lub wystąpienia zarządzanego SQL.
  2. W obszarze Zabezpieczenia wybierz ustawienie Tożsamość .
  3. W obszarze Tożsamość zarządzana przypisana przez użytkownika wybierz pozycję Dodaj.
  4. Wybierz subskrypcję, a następnie w polu Tożsamość podstawowa wybierz tożsamość zarządzaną dla subskrypcji. Następnie wybierz przycisk Wybierz .

Azure portal screenshot of selecting a user-assigned managed identity when configuring an existing server identity.

Tworzenie lub ustawianie tożsamości zarządzanej przy użyciu interfejsu wiersza polecenia platformy Azure

Interfejs wiersza polecenia platformy Azure w wersji 2.26.0 (lub nowszej) jest wymagany do uruchamiania tych poleceń za pomocą interfejsu użytkownika.

Tożsamość zarządzana usługi Azure SQL Database przy użyciu interfejsu wiersza polecenia platformy Azure

  • Aby aprowizować nowy serwer przy użyciu tożsamości zarządzanej przypisanej przez użytkownika, użyj polecenia az sql server create .

  • Aby uzyskać tożsamości zarządzane dla serwera logicznego, użyj polecenia az sql server show .

    • Aby na przykład pobrać tożsamości zarządzane przypisane przez użytkownika na serwerze logicznym, poszukaj principalId następujących elementów:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.userAssignedIdentities
      
    • Aby pobrać tożsamość zarządzaną przypisaną przez system serwera logicznego usługi Azure SQL Database:

      az sql server show --resource-group "resourcegroupnamehere" --name "sql-logical-server-name-here" --query identity.principalId
      
  • Aby zaktualizować ustawienie serwera usługi UMI, użyj polecenia az sql server update .

Tożsamość zarządzana usługi Azure SQL Managed Instance przy użyciu interfejsu wiersza polecenia platformy Azure

  • Aby aprowizować nowe wystąpienie zarządzane za pomocą interfejsu użytkownika, użyj polecenia az sql mi create .

  • Aby uzyskać tożsamości zarządzane przypisane przez system i przypisane przez użytkownika dla wystąpień zarządzanych, użyj polecenia az sql mi show .

    • Aby na przykład pobrać elementy UMI dla wystąpienia zarządzanego, poszukaj principalId następujących elementów:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.userAssignedIdentities
      
    • Aby pobrać usługę SMI wystąpienia zarządzanego:

      az sql mi show --resource-group "resourcegroupnamehere" --name "sql-mi-name-here" --query identity.principalId
      
  • Aby zaktualizować ustawienie wystąpienia zarządzanego usługi UMI, użyj polecenia az sql mi update .

Tworzenie lub ustawianie tożsamości zarządzanej przy użyciu programu PowerShell

Moduł Az.Sql w wersji 3.4 lub nowszej jest wymagany do korzystania z programu PowerShell z interfejsem użytkownika. Zalecana jest najnowsza wersja programu PowerShell lub użyj usługi Azure Cloud Shell w witrynie Azure Portal.

Tożsamość zarządzana usługi Azure SQL Database przy użyciu programu PowerShell

  • Aby aprowizować nowy serwer za pomocą interfejsu użytkownika, użyj polecenia New-AzSqlServer .

  • Aby uzyskać tożsamości zarządzane dla serwera logicznego, użyj polecenia Get-AzSqlServer .

    • Na przykład aby pobrać elementy UMI serwera logicznego, poszukaj principalId następujących elementów:

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Aby pobrać usługę SMI serwera logicznego usługi Azure SQL Database:

      $MI = get-azsqlserver -resourcegroupname "resourcegroupnamehere" -name "sql-logical-server-name-here"
      $MI.Identity.principalId
      
  • Aby zaktualizować ustawienie serwera UMI, użyj polecenia Set-AzSqlServer .

Tożsamość zarządzana usługi Azure SQL Managed Instance przy użyciu programu PowerShell

  • Aby aprowizować nowe wystąpienie zarządzane za pomocą interfejsu użytkownika, użyj polecenia New-AzSqlInstance .

  • Aby uzyskać tożsamości zarządzane dla wystąpienia zarządzanego, użyj polecenia Get-AzSqlInstance .

    • Aby na przykład pobrać elementy UMI wystąpienia zarządzanego, poszukaj principalId poszczególnych elementów:

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.UserAssignedIdentities | ConvertTo-Json 
      
    • Aby pobrać usługę SMI wystąpienia zarządzanego:

      $MI = get-azsqlinstance -resourcegroupname "resourcegroupnamehere" -name "sql-mi-name-here"
      $MI.Identity.principalId
      
  • Aby zaktualizować ustawienie wystąpienia zarządzanego usługi UMI, użyj polecenia Set-AzSqlInstance .

Tworzenie lub ustawianie tożsamości zarządzanej przy użyciu interfejsu API REST

Aby zaktualizować ustawienia interfejsu użytkownika serwera, możesz również użyć skryptu aprowizacji interfejsu API REST używanego w temacie Tworzenie serwera logicznego przy użyciu tożsamości zarządzanej przypisanej przez użytkownika lub Utwórz wystąpienie zarządzane przy użyciu tożsamości zarządzanej przypisanej przez użytkownika. Uruchom ponownie polecenie aprowizacji w przewodniku ze zaktualizowaną właściwością tożsamości zarządzanej przypisanej przez użytkownika, którą chcesz zaktualizować.

Tworzenie lub ustawianie tożsamości zarządzanej przy użyciu szablonu usługi ARM

Aby zaktualizować ustawienia interfejsu użytkownika serwera, możesz również użyć szablonu usługi Azure Resource Manager (szablonu usługi ARM) używanego w temacie Tworzenie serwera logicznego przy użyciu tożsamości zarządzanej przypisanej przez użytkownika lub utwórz wystąpienie zarządzane przy użyciu tożsamości zarządzanej przypisanej przez użytkownika. Uruchom ponownie polecenie aprowizacji w przewodniku ze zaktualizowaną właściwością tożsamości zarządzanej przypisanej przez użytkownika, którą chcesz zaktualizować.

Uwaga

Nie można zmienić administratora serwera ani hasła ani zmienić administratora firmy Microsoft Entra, uruchamiając ponownie polecenie aprowizacji dla szablonu usługi ARM.

Ograniczenia i znane problemy

  • Po utworzeniu wystąpienia zarządzanego strona administratora firmy Microsoft Entra dla wystąpienia zarządzanego w witrynie Azure Portal wyświetli ostrzeżenie: Managed Instance needs permissions to access Microsoft Entra ID. Click here to grant "Read" permissions to your Managed Instance. Jeśli nadasz usłudze UMI odpowiednie uprawnienia omówione wcześniej w tym artykule, możesz zignorować to ostrzeżenie.
  • Jeśli używasz usługi SMI lub UMI jako tożsamości serwera lub wystąpienia, usunięcie tożsamości spowoduje, że serwer lub wystąpienie nie będzie mógł uzyskać dostępu do programu Microsoft Graph. Uwierzytelnianie microsoft Entra i inne funkcje nie powiedzie się. Aby przywrócić funkcję firmy Microsoft Entra, przypisz nowe elementy SMI lub UMI do serwera z odpowiednimi uprawnieniami.
  • Aby udzielić uprawnień dostępu do programu Microsoft Graph za pośrednictwem usługi SMI lub interfejsu użytkownika, musisz użyć programu PowerShell. Nie można udzielić tych uprawnień przy użyciu witryny Azure Portal.