Kurz: Připojení aplikaci funkcí do Azure SQL se spravovanou identitou a vazbami SQL

Azure Functions poskytuje spravovanou identitu, což je řešení pro zabezpečení přístupu ke službě Azure SQL Database a dalším službám Azure. Spravované identity usnadňují zabezpečení vaší aplikace odstraněním tajných kódů z vaší aplikace, jako jsou přihlašovací údaje v připojovací řetězec. V tomto kurzu přidáte spravovanou identitu do funkce Azure Functions, která využívá vazby Azure SQL. Ukázkový projekt azure Functions s vazbami SQL je k dispozici v příkladu back-endu ToDo.

Po dokončení tohoto kurzu se vaše funkce Azure Functions připojí k databázi Azure SQL bez nutnosti uživatelského jména a hesla.

Přehled kroků, které provedete:

Udělení přístupu k databázi uživateli Microsoft Entra

Nejprve povolte ověřování Microsoft Entra do databáze SQL přiřazením uživatele Microsoft Entra jako správce služby Active Directory serveru. Tento uživatel se liší od účtu Microsoft, který jste použili k registraci předplatného Azure. Musí se jednat o uživatele, kterého jste vytvořili, importovali, synchronizovali nebo pozvali do MICROSOFT Entra ID. Další informace o povolených uživatelích Microsoft Entra naleznete v tématu Microsoft Entra funkce a omezení v databázi SQL.

Povolení ověřování Microsoft Entra je možné provést prostřednictvím webu Azure Portal, PowerShellu nebo Azure CLI. Pokyny pro Azure CLI jsou uvedené níže a informace o dokončení tohoto postupu prostřednictvím webu Azure Portal a PowerShell je k dispozici v dokumentaci k Azure SQL týkající se ověřování Microsoft Entra.

  1. Pokud váš tenant Microsoft Entra ještě nemá uživatele, vytvořte ho podle pokynů v tématu Přidání nebo odstranění uživatelů pomocí ID Microsoft Entra.

  2. Vyhledejte ID objektu uživatele Microsoft Entra pomocí az ad user list a nahraďte <hlavní název> uživatele. Výsledek se uloží do proměnné.

    Pro Azure CLI 2.37.0 a novější:

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

    Pro starší verze Azure CLI:

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

    Tip

    Pokud chcete zobrazit seznam všech hlavních názvů uživatelů v Microsoft Entra ID, spusťte az ad user list --query [].userPrincipalNamepříkaz .

  3. Přidejte tohoto uživatele Microsoft Entra jako správce služby Active Directory pomocí az sql server ad-admin create příkazu v Cloud Shellu. V následujícím příkazu nahraďte <název> serveru názvem serveru (bez přípony .database.windows.net ).

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

Další informace o přidání správce služby Active Directory najdete v tématu Zřízení správce Microsoft Entra pro váš server.

Povolení spravované identity přiřazené systémem ve službě Azure Functions

V tomto kroku přidáme identitu přiřazenou systémem do funkce Azure Functions. V pozdějších krocích se této identitě udělí přístup k databázi SQL.

Povolení spravované identity přiřazené systémem na webu Azure Portal:

  1. Na portálu vytvořte funkci Azure Functions, jak byste normálně měli. Přejděte na něj na portálu.
  2. Posuňte se dolů ke skupině Nastavení v levém navigačním panelu.
  3. Vyberte Identitu.
  4. Na kartě Přiřazený systém přepněte stav na Zapnuto. Klikněte na Uložit.

Turn on system assigned identity for Function app

Další informace o povolení spravované identity přiřazené systémem prostřednictvím Azure CLI nebo PowerShellu najdete v dalších informacích o používání spravovaných identit se službou Azure Functions.

Tip

U spravované identity přiřazené uživatelem přepněte na kartu Přiřazené uživatelem. Klikněte na Přidat a vyberte spravovanou identitu. Další informace o vytváření spravované identity přiřazené uživatelem najdete v tématu Správa spravovaných identit přiřazených uživatelem.

Udělení přístupu k spravované identitě službě SQL Database

V tomto kroku se připojíme k databázi SQL pomocí uživatelského účtu Microsoft Entra a udělíme spravované identitě přístup k databázi.

  1. Otevřete preferovaný nástroj SQL a přihlaste se pomocí uživatelského účtu Microsoft Entra (například uživatele Microsoft Entra, který jsme přiřadili jako správce). To lze provést v Cloud Shellu pomocí příkazu SQLCMD.

    sqlcmd -S <server-name>.database.windows.net -d <db-name> -U <aad-user-name> -P "<aad-password>" -G -l 30
    
  2. Na příkazovém řádku SQL pro požadovanou databázi spusťte následující příkazy, které vaší funkci udělují oprávnění. Příklad:

    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> je název spravované identity v Microsoft Entra ID. Pokud je identita přiřazená systémem, název je vždy stejný jako název vaší aplikace funkcí.

Konfigurace připojovací řetězec SQL funkce Azure Functions

V posledním kroku nakonfigurujeme sql připojovací řetězec funkce Azure Functions tak, aby používala ověřování identit spravované microsoftem Entra.

Název nastavení připojovací řetězec je v kódu služby Functions identifikován jako atribut vazby "Připojení ionStringSetting", jak je vidět v atributech a poznámkách vstupní vazby SQL.

V nastavení aplikace naší aplikace funkcí by se mělo aktualizovat nastavení SQL připojovací řetězec tak, aby fungovalo podle tohoto formátu:

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

testdb je název databáze, ke které se připojujeme, a demo.database.windows.net je název serveru, ke kterému se připojujeme.

Tip

Pro spravovanou identitu přiřazenou uživatelem použijte Server=demo.database.windows.net; Authentication=Active Directory Managed Identity; User Id=ClientIdOfManagedIdentity; Database=testdb.

Další kroky