Samouczek: Połączenie aplikacji funkcji do usługi Azure SQL przy użyciu tożsamości zarządzanej i powiązań SQL

Usługa Azure Functions udostępnia tożsamość zarządzaną, która jest kluczowym rozwiązaniem do zabezpieczania dostępu do usługi Azure SQL Database i innych usług platformy Azure. Tożsamości zarządzane sprawiają, że aplikacja jest bezpieczniejsza, eliminując wpisy tajne z aplikacji, takie jak poświadczenia w parametry połączenia. W tym samouczku dodasz tożsamość zarządzaną do funkcji platformy Azure, która korzysta z powiązań usługi Azure SQL. Przykładowy projekt funkcji platformy Azure z powiązaniami SQL jest dostępny w przykładzie zaplecza Zadań do wykonania.

Po zakończeniu pracy z tym samouczkiem funkcja platformy Azure połączy się z bazą danych Azure SQL Database bez konieczności używania nazwy użytkownika i hasła.

Omówienie kroków, które należy wykonać:

Udzielanie dostępu do bazy danych użytkownikowi Firmy Microsoft Entra

Najpierw włącz uwierzytelnianie microsoft Entra w bazie danych SQL, przypisując użytkownika Entra firmy Microsoft jako administratora usługi Active Directory serwera. Ten użytkownik różni się od konta Microsoft użytego do zarejestrowania się w celu uzyskania subskrypcji platformy Azure. Musi to być użytkownik, który został utworzony, zaimportowany, zsynchronizowany lub zaproszony do usługi Microsoft Entra ID. Aby uzyskać więcej informacji na temat dozwolonych użytkowników microsoft Entra, zobacz Microsoft Entra features and limitations in SQL Database (Funkcje i ograniczenia firmy Microsoft w bazie danych SQL).

Włączanie uwierzytelniania entra firmy Microsoft można wykonać za pośrednictwem witryny Azure Portal, programu PowerShell lub interfejsu wiersza polecenia platformy Azure. Wskazówki dotyczące interfejsu wiersza polecenia platformy Azure znajdują się poniżej i informacje dotyczące wykonywania tych czynności za pośrednictwem witryny Azure Portal, a program PowerShell jest dostępny w dokumentacji usługi Azure SQL na temat uwierzytelniania w usłudze Microsoft Entra.

  1. Jeśli dzierżawa firmy Microsoft Entra nie ma jeszcze użytkownika, utwórz go, wykonując kroki opisane w temacie Dodawanie lub usuwanie użytkowników przy użyciu identyfikatora Entra firmy Microsoft.

  2. Znajdź identyfikator obiektu użytkownika Microsoft Entra przy użyciu i zastąp az ad user list wartość <user-principal-name>. Wynik jest zapisywany w zmiennej.

    W przypadku interfejsu wiersza polecenia platformy Azure w wersji 2.37.0 i nowszych:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].id --output tsv)
    

    W przypadku starszych wersji interfejsu wiersza polecenia platformy Azure:

    azureaduser=$(az ad user list --filter "userPrincipalName eq '<user-principal-name>'" --query [].objectId --output tsv)
    

    Napiwek

    Aby wyświetlić listę wszystkich głównych nazw użytkowników w identyfikatorze Entra firmy Microsoft, uruchom polecenie az ad user list --query [].userPrincipalName.

  3. Dodaj tego użytkownika microsoft Entra jako administratora usługi Active Directory przy użyciu az sql server ad-admin create polecenia w usłudze Cloud Shell. W poniższym poleceniu zastąp <ciąg server-name> nazwą serwera (bez sufiksu.database.windows.net).

    az sql server ad-admin create --resource-group myResourceGroup --server-name <server-name> --display-name ADMIN --object-id $azureaduser
    

Aby uzyskać więcej informacji na temat dodawania administratora usługi Active Directory, zobacz Provision a Microsoft Entra administrator for your server (Aprowizuj administratora usługi Microsoft Entra dla serwera)

Włączanie tożsamości zarządzanej przypisanej przez system w funkcji platformy Azure

W tym kroku dodamy tożsamość przypisaną przez system do funkcji platformy Azure. W kolejnych krokach ta tożsamość będzie mieć dostęp do bazy danych SQL.

Aby włączyć tożsamość zarządzaną przypisaną przez system w witrynie Azure Portal:

  1. Utwórz funkcję platformy Azure w portalu, tak jak zwykle. Przejdź do niej w portalu.
  2. Przewiń w dół do grupy Ustawienia w obszarze nawigacji po lewej stronie.
  3. Wybierz pozycję Tożsamość.
  4. Na karcie Przypisane przez system przełącz pozycję Stan na Włączone. Kliknij przycisk Zapisz.

Turn on system assigned identity for Function app

Aby uzyskać informacje na temat włączania tożsamości zarządzanej przypisanej przez system za pośrednictwem interfejsu wiersza polecenia platformy Azure lub programu PowerShell, zapoznaj się z informacjami na temat korzystania z tożsamości zarządzanych w usłudze Azure Functions.

Napiwek

W przypadku tożsamości zarządzanej przypisanej przez użytkownika przejdź do karty Przypisane przez użytkownika. Kliknij przycisk Dodaj i wybierz tożsamość zarządzaną. Aby uzyskać więcej informacji na temat tworzenia tożsamości zarządzanej przypisanej przez użytkownika, zobacz Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika.

Udzielanie dostępu do bazy danych SQL do tożsamości zarządzanej

W tym kroku połączymy się z bazą danych SQL przy użyciu konta użytkownika Microsoft Entra i przyznamy tożsamości zarządzanej dostęp do bazy danych.

  1. Otwórz preferowane narzędzie SQL i zaloguj się przy użyciu konta użytkownika Microsoft Entra (na przykład użytkownika Microsoft Entra przypisanego jako administrator). Można to zrobić w usłudze Cloud Shell za pomocą polecenia SQLCMD.

    sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
    
  2. W wierszu polecenia SQL dla żądanej bazy danych uruchom następujące polecenia, aby udzielić uprawnień funkcji. Przykład:

    CREATE USER [<identity-name>] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [<identity-name>];
    ALTER ROLE db_datawriter ADD MEMBER [<identity-name>];
    GO
    

    <identity-name> to nazwa tożsamości zarządzanej w usłudze Microsoft Entra ID. Jeśli tożsamość jest przypisana przez system, nazwa jest zawsze taka sama jak nazwa aplikacji funkcji.

Konfigurowanie parametry połączenia SQL funkcji platformy Azure

W ostatnim kroku skonfigurujemy parametry połączenia SQL funkcji platformy Azure do korzystania z uwierzytelniania tożsamości zarządzanej firmy Microsoft Entra.

Nazwa ustawienia parametry połączenia jest identyfikowana w naszym kodzie usługi Functions jako atrybut powiązania "Połączenie ionStringSetting", jak pokazano w atrybutach powiązania danych wejściowych SQL i adnotacjach.

W ustawieniach aplikacji aplikacji funkcji należy zaktualizować ustawienie sql parametry połączenia, aby było zgodne z następującym formatem:

Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; Database=testdb

testdb to nazwa bazy danych, z którymi nawiązujemy połączenie, a demo.database.windows.net to nazwa serwera, z którymi nawiązujemy połączenie.

Napiwek

W przypadku tożsamości zarządzanej przypisanej przez użytkownika użyj polecenia Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdb.

Następne kroki