Kurz: Připojení do databází Azure ze služby App Service bez tajných kódů pomocí spravované identity

App Service je vysoce škálovatelná služba s automatickými opravami pro hostování webů v Azure. Poskytuje také spravovanou identitu pro vaši aplikaci, což je řešení pro zabezpečení přístupu k databázím Azure, včetně následujících:

Poznámka:

Tento kurz neobsahuje pokyny pro službu Azure Cosmos DB, která podporuje jiné ověřování Microsoft Entra. Další informace najdete v dokumentaci ke službě Azure Cosmos DB, jako je použití spravovaných identit přiřazených systémem pro přístup k datům Azure Cosmos DB.

Spravované identity ve službě App Service zvyšují zabezpečení vaší aplikace tím, že z aplikace odstraňují tajné kódy, jako jsou přihlašovací údaje v připojovacích řetězcích. V tomto kurzu se dozvíte, jak se z App Service připojit k výše uvedeným databázím pomocí spravovaných identit.

Co se naučíte:

  • Nakonfigurujte uživatele Microsoft Entra jako správce pro vaši databázi Azure.
  • Připojení do databáze jako uživatel Microsoft Entra.
  • Nakonfigurujte spravovanou identitu přiřazenou systémem nebo přiřazenou uživatelem pro aplikaci app Service.
  • Udělte spravované identitě přístup k databázi.
  • Připojení do databáze Azure z vašeho kódu (.NET Framework 4.8, .NET 6, Node.js, Python, Java) pomocí spravované identity.
  • Připojení do databáze Azure z vašeho vývojového prostředí pomocí uživatele Microsoft Entra.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Požadavky

  • Vytvořte aplikaci ve službě App Service na základě .NET, Node.js, Pythonu nebo Javy.
  • Vytvořte databázový server pomocí Azure SQL Database, Azure Database for MySQL nebo Azure Database for PostgreSQL.
  • Měli byste být obeznámeni se standardním vzorem připojení (s uživatelským jménem a heslem) a úspěšně se připojit z aplikace App Service k databázi podle vašeho výběru.

Připravte prostředí pro Azure CLI.

1. Instalace rozšíření Service Připojení or bez hesla

Nainstalujte rozšíření service Připojení or bez hesla pro Azure CLI:

az extension add --name serviceconnector-passwordless --upgrade

2. Vytvoření připojení bez hesla

Dále vytvořte připojení bez hesla se službou Service Připojení or.

Tip

S vytvářením příkazů níže vám může pomoct Azure Portal. Na webu Azure Portal přejděte na prostředek služby Aplikace Azure, v nabídce vlevo vyberte Service Připojení or a vyberte Vytvořit. Vyplňte formulář všemi požadovanými parametry. Azure automaticky vygeneruje příkaz pro vytvoření připojení, který můžete zkopírovat do rozhraní příkazového řádku nebo spustit v Azure Cloud Shellu.

Následující příkaz Azure CLI používá --client-type parametr.

  1. Volitelně spusťte příkaz az webapp connection create sql -h pro získání podporovaných typů klientů.

  2. Zvolte typ klienta a spusťte odpovídající příkaz. Nahraďte zástupné symboly níže vlastními informacemi.

    az webapp connection create sql \
        --resource-group <group-name> \
        --name <server-name> \
        --target-resource-group <sql-group-name> \
        --server <sql-name> \
        --database <database-name> \
        --user-identity client-id=<client-id> subs-id=<subscription-id> \
        --client-type <client-type>
    

Tento příkaz Připojení or služby na pozadí dokončí následující úlohy:

  • Povolte spravovanou identitu přiřazenou systémem nebo přiřaďte identitu uživatele pro aplikaci <server-name> hostované službou Aplikace Azure Service.
  • Nastavte správce Microsoft Entra na aktuální přihlášeného uživatele.
  • Přidejte uživatele databáze pro spravovanou identitu přiřazenou systémem nebo spravovanou identitu přiřazenou uživatelem. Udělte tomuto uživateli všechna oprávnění databáze <database-name> . Uživatelské jméno najdete v připojovací řetězec v předchozím výstupu příkazu.
  • Nastavte konfigurace s názvem AZURE_MYSQL_CONNECTIONSTRING, AZURE_POSTGRESQL_CONNECTIONSTRINGnebo AZURE_SQL_CONNECTIONSTRING na prostředek Azure na základě typu databáze.
  • V případě služby App Service jsou konfigurace nastavené v okně Nastavení aplikace.

Pokud při vytváření připojení narazíte na nějaký problém, projděte si nápovědu v části Řešení potíží .

3. Úprava kódu

  1. Nainstalujte závislosti.

    dotnet add package Microsoft.Data.SqlClient
    
  2. Získejte připojovací řetězec Azure SQL Database z proměnné prostředí přidané službou Service Připojení or.

    using Microsoft.Data.SqlClient;
    
    // AZURE_SQL_CONNECTIONSTRING should be one of the following:
    // For system-assigned managed identity:"Server=tcp:<server-name>.database.windows.net;Database=<database-name>;Authentication=Active Directory Default;TrustServerCertificate=True"
    // For user-assigned managed identity: "Server=tcp:<server-name>.database.windows.net;Database=<database-name>;Authentication=Active Directory Default;User Id=<client-id-of-user-assigned-identity>;TrustServerCertificate=True"
    
    string connectionString = 
        Environment.GetEnvironmentVariable("AZURE_SQL_CONNECTIONSTRING")!;
    
    using var connection = new SqlConnection(connectionString);
    connection.Open();
    

    Další informace najdete v tématu Použití ověřování spravované identity služby Active Directory.

Další informace naleznete v tématu Domovská stránka pro programování klientů na Microsoft SQL Server. Další ukázky kódu najdete v tématu Vytvoření připojení bez hesla k databázové službě prostřednictvím služby Připojení or.

4. Nastavení vývojového prostředí

Tento ukázkový kód používá DefaultAzureCredential k získání použitelného tokenu pro databázi Azure z ID Microsoft Entra a pak ho přidá do připojení k databázi. I když můžete přizpůsobit DefaultAzureCredential, je to už ve výchozím nastavení všestranné. Získá token od přihlášeného uživatele Microsoft Entra nebo ze spravované identity v závislosti na tom, jestli ho spouštíte místně ve vývojovém prostředí nebo ve službě App Service.

Bez jakýchkoli dalších změn je váš kód připravený ke spuštění v Azure. K místnímu ladění kódu ale vaše vývojové prostředí potřebuje přihlášeného uživatele Microsoft Entra. V tomto kroku nakonfigurujete své prostředí podle vlastního výběru přihlášením pomocí uživatele Microsoft Entra.

  1. Visual Studio pro Windows je integrované s ověřováním Microsoft Entra. Pokud chcete povolit vývoj a ladění v sadě Visual Studio, přidejte uživatele Microsoft Entra v sadě Visual Studio tak, že v nabídce vyberete Nastavení účet souboru>a vyberete Přihlásit se nebo Přidat.

  2. Pokud chcete nastavit uživatele Microsoft Entra pro ověřování služby Azure, v nabídce vyberte Možnosti nástrojů>a pak vyberte Výběr účtu ověřování>služby Azure. Vyberte uživatele Microsoft Entra, který jste přidali, a vyberte OK.

Další informace o nastavení vývojového prostředí pro ověřování Microsoft Entra najdete v tématu Klientská knihovna identit Azure pro .NET.

Teď jste připraveni vyvíjet a ladit aplikaci pomocí služby SQL Database jako back-endu pomocí ověřování Microsoft Entra.

5. Testování a publikování

  1. Spusťte kód ve vývojovém prostředí. Váš kód používá přihlášeného uživatele Microsoft Entra ve vašem prostředí k připojení k back-endové databázi. Uživatel má přístup k databázi, protože je nakonfigurovaný jako správce Microsoft Entra pro databázi.

  2. Publikujte svůj kód do Azure pomocí upřednostňované metody publikování. Ve službě App Service váš kód používá spravovanou identitu aplikace k připojení k back-endové databázi.

Nejčastější dotazy

Podporuje spravovaná identita SQL Server?

Místní SQL Server nepodporuje ID Microsoft Entra a spravované identity.

Zobrazuje se mi chyba Login failed for user '<token-identified principal>'.

Spravovaná identita, pro kterou se pokoušíte požádat o token, nemá oprávnění pro přístup k databázi Azure.

Provedl(a) jsem změny ověřování služby App Service nebo přidružené registrace aplikace. Proč stále získám starý token?

Back-endové služby spravovaných identit také udržují mezipaměť tokenů, která aktualizuje token pro cílový prostředek, pouze když vyprší jeho platnost. Pokud konfiguraci upravíte po pokusu o získání tokenu s vaší aplikací, ve skutečnosti nezískáte nový token s aktualizovanými oprávněními, dokud nevyprší platnost tokenu uloženého v mezipaměti. Nejlepší způsob, jak to obejít, je otestovat změny pomocí nového okna InPrivate (Edge)/private (Safari)/Anonymní okno (Chrome). Tímto způsobem určitě začínáte z nové ověřené relace.

Návody přidat spravovanou identitu do skupiny Microsoft Entra?

Pokud chcete, můžete přidat identitu do skupiny Microsoft Entra a pak místo identity udělit přístup ke skupině Microsoft Entra. Například následující příkazy přidají spravovanou identitu z předchozího kroku do nové skupiny myAzureSQLDBAccessGroup:

groupid=$(az ad group create --display-name myAzureSQLDBAccessGroup --mail-nickname myAzureSQLDBAccessGroup --query objectId --output tsv)
msiobjectid=$(az webapp identity show --resource-group <group-name> --name <app-name> --query principalId --output tsv)
az ad group member add --group $groupid --member-id $msiobjectid
az ad group member list -g $groupid

Pokud chcete udělit oprávnění k databázi pro skupinu Microsoft Entra, přečtěte si dokumentaci k příslušnému typu databáze.

Zobrazuje se mi chyba SSL connection is required. Please specify SSL options and retry.

Připojení pro databázi Azure vyžaduje další nastavení a přesahuje rozsah tohoto kurzu. Další informace najdete na jednom z následujících odkazů:

Konfigurace připojení TLS ve službě Azure Database for PostgreSQL – Jeden server– Konfigurace připojení SSL ve vaší aplikaci pro bezpečné připojení ke službě Azure Database for MySQL

Další kroky

Naučili jste se:

  • Nakonfigurujte uživatele Microsoft Entra jako správce pro vaši databázi Azure.
  • Připojení do databáze jako uživatel Microsoft Entra.
  • Nakonfigurujte spravovanou identitu přiřazenou systémem nebo přiřazenou uživatelem pro aplikaci app Service.
  • Udělte spravované identitě přístup k databázi.
  • Připojení do databáze Azure z vašeho kódu (.NET Framework 4.8, .NET 6, Node.js, Python, Java) pomocí spravované identity.
  • Připojení do databáze Azure z vašeho vývojového prostředí pomocí uživatele Microsoft Entra.