Samouczek: łączenie aplikacji funkcji z usługą Azure SQL przy użyciu zarządzanej tożsamości oraz wią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 zwiększają bezpieczeństwo aplikacji, eliminując tajne dane z aplikacji, takie jak poświadczenia w ciągach połączeniowych. W tym samouczku dodajesz tożsamość zarządzaną do aplikacji funkcyjnej korzystającej z wiązań Azure SQL.

Ten samouczek wykorzystuje zarządzaną tożsamość przypisaną przez użytkownika (UAMI), co jest zalecane, ponieważ może być współdzielona między zasobami i jest niezależna od cyklu życia aplikacji. Więcej informacji o połączeniach opartych na tożsamości w Azure Functions można znaleźć w sekcji Konfiguruj połączenia z usługami zdalnymi.

Po ukończeniu tego tutorialu Twoja aplikacja funkcjonalna łączy się z Azure SQL Database bez potrzeby używania nazwy użytkownika i hasła.

Przegląd kroków, które podejmujesz:

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

Po pierwsze, włącz uwierzytelnianie Microsoft Entra do bazy danych SQL, przypisując użytkownika Microsoft Entra jako administratora serwera Active Directory. 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 funkcje i ograniczenia Microsoft Entra w bazie danych SQL.

Możesz włączyć uwierzytelnianie Microsoft Entra przez portal Azure, PowerShell lub Azure CLI. Instrukcje dotyczące Azure CLI znajdują się w następującej sekcji. Aby uzyskać informacje o wykonaniu tego zadania za pomocą portalu Azure i PowerShell, zobacz dokumentację Azure SQL dotyczącą uwierzytelniania Microsoft Entra.

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

  2. Znajdź identyfikator obiektu użytkownika Microsoft Entra za pomocą polecenia az ad user list i zastąp <user-principal-name>. Zapisz wynik do 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 Azure CLI:

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

    Wskazówka

    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 Active Directory, używając polecenia az sql server ad-admin create w Cloud Shell. W poniższym poleceniu zastąp <> nazwą serwera (bez sufiksu).

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

Aby uzyskać więcej informacji o dodaniu administratora Active Directory, zobacz Provisionuj administratora Microsoft Entra dla swojego serwera.

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

Stwórz zarządzaną tożsamość przypisaną przez użytkownika i przypisz ją do swojej aplikacji funkcyjnej. Używaj tożsamości przypisanej przez użytkownika, ponieważ możesz ją ponownie wykorzystać na wielu zasobach, a jej cykl życia jest niezależny od Twojej aplikacji funkcjonalnej.

  1. W portalu Azure wyszukaj Managed Identities i wybierz Create.

  2. Wybierz subskrypcję, grupę zasobów, region i nadaj tożsamości nazwę (na przykład my-sql-identity).

  3. Wybierz Przejrzyj + utwórz, a następnie wybierz Utwórz.

  4. Po utworzeniu tożsamości przejdź do aplikacji funkcjonalnej w portalu.

  5. W Ustawieniach wybierz Tożsamość, a następnie zakładkę przypisana przez użytkownika .

  6. Wybierz Dodaj (Dodaj), wybierz utworzoną przez siebie tożsamość zarządzaną i wybierz Dodaj (Dodaj).

Wskazówka

Możesz także użyć zarządzanej tożsamości przypisanej przez system. Jeśli wolisz opcję przypisaną przez system, włącz ją na karcie System assigned na stronie Tożsamość. W przypadku użycia tożsamości przypisanej przez system element <identity-name> w poleceniach SQL oznacza nazwę aplikacji funkcji i nie potrzebujesz parametru User Id w parametrach połączenia.

Przyznaj dostęp do bazy danych SQL dla tożsamości zarządzanej

W tym kroku połącz się z bazą danych SQL za pomocą konta użytkownika Microsoft Entra i przyznaj tożsamości zarządzanej dostęp do bazy danych.

  1. Otwórz swoje ulubione narzędzie SQL i zaloguj się, używając konta użytkownika Microsoft Entra, na przykład użytkownika Microsoft Entra, którego przypisałeś jako administratora. Ten krok można wykonać w Cloud Shell, używając polecenia SQLCMD.

    sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
    
  2. W konsoli SQL dla wybranej bazy danych uruchom następujące polecenia, aby nadać uprawnienia Twojej funkcji. Na 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. Dla tożsamości przypisanej przez użytkownika to nazwa, którą nadałeś jej przy jej tworzeniu (na przykład my-sql-identity). W przypadku tożsamości przypisanej przez system nazwa jest zawsze taka sama jak nazwa aplikacji funkcyjnej.

    Note

    Jeśli używasz wyzwalacza Azure SQL, tożsamość zarządzana wymaga dodatkowych uprawnień poza db_datareader i db_datawriter. Aby uzyskać więcej informacji, zobacz nadawanie uprawnień dla wyzwalacza Azure SQL.

Konfiguracja ciągu połączenia SQL dla funkcji Azure

W ostatnim kroku skonfiguruj parametry połączenia SQL aplikacji funkcji tak, aby używały uwierzytelniania przy użyciu tożsamości zarządzanej Microsoft Entra.

Nazwę ustawienia parametrów połączenia identyfikujesz w kodzie funkcji za pomocą atrybutu powiązania ConnectionStringSetting, co widać w atrybutach i adnotacjach powiązania wejściowego SQL.

W ustawieniach aplikacji funkcji zaktualizuj ustawienie parametrów połączenia SQL tak, aby było zgodne z następującym formatem:

Server=<server-name>.database.windows.net; Authentication=Active Directory Default; Database=<database-name>; User Id=<client-id-of-user-assigned-identity>

Zastąp element <server-name> nazwą swojego serwera SQL, element <database-name> nazwą swojej bazy danych, a element <client-id-of-user-assigned-identity> identyfikatorem klienta swojej tożsamości zarządzanej przypisanej przez użytkownika. ID klienta znajdziesz na stronie Przegląd swojego zarządzanego zasobu tożsamości w portalu Azure.

Wskazówka

Słowo kluczowe Active Directory Default uwierzytelniania działa zarówno lokalnie (przy użyciu Twoich poświadczeń deweloperskich), jak i na platformie Azure (przy użyciu tożsamości zarządzanej). Ta funkcja oznacza, że możesz używać tego samego parametry połączenia w obu środowiskach. Dla zarządzanej tożsamości przypisanej systemowi pomijam parametr.User Id

Aby uzyskać więcej informacji o połączeniach opartych na tożsamości, zobacz Konfiguruj połączenia z usługami zdalnymi.

Następne kroki