Migrera ett .NET-program för att använda lösenordslösa anslutningar med Azure SQL Database

gäller för:Azure SQL Database

Programbegäranden till Azure SQL Database måste autentiseras. Även om det finns flera alternativ för autentisering till Azure SQL Database bör du prioritera lösenordslösa anslutningar i dina program när det är möjligt. Traditionella autentiseringsmetoder som använder lösenord eller hemliga nycklar skapar säkerhetsrisker och komplikationer. Gå till hubben för lösenordslösa anslutningar för Azure-tjänster för att lära dig mer om fördelarna med att flytta till lösenordslösa anslutningar. I följande självstudie beskrivs hur du migrerar ett befintligt program för att ansluta till Azure SQL Database för att använda lösenordslösa anslutningar i stället för en lösning för användarnamn och lösenord.

Konfigurera Azure SQL-databas

Lösenordslösa anslutningar använder Microsoft Entra-autentisering för att ansluta till Azure-tjänster, inklusive Azure SQL Database. Med Microsoft Entra-autentisering kan du hantera identiteter på en central plats för att förenkla behörighetshanteringen. Läs mer om hur du konfigurerar Microsoft Entra-autentisering för din Azure SQL Database:

För den här migreringsguiden kontrollerar du att du har en Microsoft Entra-administratör tilldelad till din Azure SQL Database.

  1. Gå till Microsoft Entra-sidan på din logiska server.

  2. Välj Ange administratör för att öppna den utfällbara menyn Microsoft Entra ID .

  3. I den utfällbara menyn Microsoft Entra ID söker du efter den användare som du vill tilldela som administratör.

  4. Välj användaren och välj Välj.

    En skärmbild som visar hur du aktiverar Microsoft Entra-administratör.

Konfigurera din lokala utvecklingsmiljö

Lösenordslösa anslutningar kan konfigureras för att fungera för både lokala miljöer och Azure-värdbaserade miljöer. I det här avsnittet använder du konfigurationer för att tillåta enskilda användare att autentisera till Azure SQL Database för lokal utveckling.

Logga in på Azure

För lokal utveckling kontrollerar du att du är inloggad med samma Azure AD-konto som du vill använda för att få åtkomst till Azure SQL Database. Du kan autentisera via populära utvecklingsverktyg, till exempel Azure CLI eller Azure PowerShell. De utvecklingsverktyg som du kan autentisera med varierar mellan olika språk.

Logga in på Azure via Azure CLI med följande kommando:

az login

Skapa en databasanvändare och tilldela roller

Skapa en användare i Azure SQL Database. Användaren bör motsvara det Azure-konto som du använde för att logga in lokalt via utvecklingsverktyg som Visual Studio eller IntelliJ.

  1. I Azure-portalen bläddrar du till din SQL-databas och väljer Frågeredigeraren (förhandsversion).

  2. Välj Fortsätt som <your-username> till höger på skärmen för att logga in på databasen med ditt konto.

  3. Kör följande T-SQL-kommandon i frågeredigerarens vy:

    CREATE USER [user@domain] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user@domain];
    ALTER ROLE db_datawriter ADD MEMBER [user@domain];
    ALTER ROLE db_ddladmin ADD MEMBER [user@domain];
    GO
    

    En skärmbild som visar hur du använder Azure Query-redigeraren.

    När du kör de här kommandona tilldelas rollen SQL DB-deltagare till det angivna kontot. Med den här rollen kan identiteten läsa, skriva och ändra databasens data och schema. Mer information om tilldelade roller finns i Roller med fast databas.

Uppdatera konfigurationen för lokal anslutning

Befintlig programkod som ansluter till Azure SQL Database med hjälp av Microsoft.Data.SqlClient biblioteket eller Entity Framework Core fortsätter att fungera med lösenordslösa anslutningar. Du måste dock uppdatera databasanslutningssträngen för att använda det lösenordslösa formatet. Följande kod fungerar till exempel med både SQL-autentisering och lösenordslösa anslutningar:

string connectionString = app.Configuration.GetConnectionString("AZURE_SQL_CONNECTIONSTRING")!;

using var conn = new SqlConnection(connectionString);
conn.Open();

var command = new SqlCommand("SELECT * FROM Persons", conn);
using SqlDataReader reader = command.ExecuteReader();

Så här uppdaterar du den refererade anslutningssträngen (AZURE_SQL_CONNECTIONSTRING) så att det lösenordslösa anslutningssträngformatet används:

  1. Leta upp anslutningssträngen. För lokal utveckling med .NET-program lagras detta vanligtvis på någon av följande platser:

    • Konfigurationsfilen appsettings.json för projektet.
    • Konfigurationsfilen launchsettings.json för Visual Studio-projekt.
    • Lokala system- eller containermiljövariabler.
  2. Ersätt anslutningssträngvärdet med följande lösenordslösa format. <database-server-name> Uppdatera platshållarna och <database-name> med dina egna värden:

    Server=tcp:<database-server-name>.database.windows.net,1433;Initial Catalog=<database-name>;
    Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication="Active Directory Default";
    

Testa appen

Kör appen lokalt och kontrollera att anslutningarna till Azure SQL Database fungerar som förväntat. Tänk på att det kan ta flera minuter innan ändringar av Azure-användare och roller sprids via din Azure-miljö. Ditt program är nu konfigurerat att köras lokalt utan att utvecklare behöver hantera hemligheter i själva programmet.

Konfigurera Azure-värdmiljön

När appen har konfigurerats för att använda lösenordslösa anslutningar lokalt kan samma kod autentiseras till Azure SQL Database när den har distribuerats till Azure. I avsnitten nedan beskrivs hur du konfigurerar ett distribuerat program för att ansluta till Azure SQL Database med hjälp av en hanterad identitet. Hanterade identiteter tillhandahåller en automatiskt hanterad identitet i Microsoft Entra-ID (tidigare Azure Active Directory) för program som ska användas när de ansluter till resurser som stöder Microsoft Entra-autentisering. Läs mer om hanterade identiteter:

Skapa den hanterade identiteten

Skapa en användartilldelad hanterad identitet med hjälp av Azure-portalen eller Azure CLI. Ditt program använder identiteten för att autentisera till andra tjänster.

  1. Överst i Azure Portal söker du efter hanterade identiteter. Välj resultatet Hanterade identiteter .
  2. Välj + Skapa överst på översiktssidan för hanterade identiteter .
  3. På fliken Grundläggande anger du följande värden:
    • Prenumeration: Välj önskad prenumeration.
    • Resursgrupp: Välj önskad resursgrupp.
    • Region: Välj en region nära din plats.
    • Namn: Ange ett igenkännbart namn för din identitet, till exempel MigrationIdentity.
  4. Välj Granska och skapa längst ned på sidan.
  5. När verifieringen har slutförts väljer du Skapa. Azure skapar en ny användartilldelad identitet.

När resursen har skapats väljer du Gå till resurs för att visa information om den hanterade identiteten.

En skärmbild som visar hur du skapar en hanterad identitet med hjälp av Azure-portalen.

Associera den hanterade identiteten med din webbapp

Konfigurera webbappen så att den använder den användartilldelade hanterade identitet som du skapade.

Slutför följande steg i Azure-portalen för att associera den användartilldelade hanterade identiteten med din app. Samma steg gäller för följande Azure-tjänster:

  • Azure Spring Apps
  • Azure Container-applikationer
  • Azure-virtuella datorer
  • Azure Kubernetes Service
  • Gå till översiktssidan för webbappen.
  1. Välj Identitet i det vänstra navigeringsfältet.

  2. På sidan Identitet växlar du till fliken Användartilldelad .

  3. Välj + Lägg till för att öppna den utfällbara menyn Lägg till användartilldelad hanterad identitet .

  4. Välj den prenumeration som du använde tidigare för att skapa identiteten.

  5. Sök efter MigrationIdentity efter namn och välj den i sökresultaten.

  6. Välj Lägg till för att associera identiteten med din app.

    Skärmbild som visar hur du tilldelar en hanterad identitet.

Skapa en databasanvändare för identiteten och tilldela roller

Skapa en SQL-databasanvändare som mappar tillbaka till den användartilldelade hanterade identiteten. Tilldela nödvändiga SQL-roller till användaren så att appen kan läsa, skriva och ändra data och schemat för databasen.

  1. I Azure-portalen bläddrar du till din SQL-databas och väljer Frågeredigeraren (förhandsversion).

  2. Välj Fortsätt som <username> till höger på skärmen för att logga in på databasen med ditt konto.

  3. Kör följande T-SQL-kommandon i frågeredigerarens vy:

    CREATE USER [user-assigned-identity-name] FROM EXTERNAL PROVIDER;
    ALTER ROLE db_datareader ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_datawriter ADD MEMBER [user-assigned-identity-name];
    ALTER ROLE db_ddladmin ADD MEMBER [user-assigned-identity-name];
    GO
    

    En skärmbild som visar hur du använder Azure Query-redigeraren för att skapa en SQL-användare för en hanterad identitet.

    När du kör dessa kommandon tilldelas rollen SQL DB Contributor till den användartilldelade hanterade identiteten. Med den här rollen kan identiteten läsa, skriva och ändra databasens data och schema.

Viktigt!

Var försiktig när du tilldelar databasanvändarroller i företagsproduktionsmiljöer. I dessa scenarier bör appen inte utföra alla åtgärder med en enda upphöjd identitet. Försök att implementera principen om minsta behörighet genom att konfigurera flera identiteter med specifika behörigheter för specifika uppgifter.

Du kan läsa mer om hur du konfigurerar databasroller och säkerhet på följande resurser:

Uppdatera anslutningssträngen

Uppdatera azure-appkonfigurationen så att den använder formatet för lösenordslös anslutningssträng. Anslutningssträngar lagras vanligtvis som miljövariabler i din appvärdmiljö. Följande instruktioner fokuserar på App Service, men andra Azure-värdtjänster tillhandahåller liknande konfigurationer.

  1. Gå till konfigurationssidan för App Service-instansen och leta upp Anslutningssträngen för Azure SQL Database.

  2. Välj redigeringsikonen och uppdatera värdet för anslutningssträngen så att det matchar följande format. Ändra platshållarna <database-server-name> och <database-name> med värdena för din egen tjänst.

    Server=tcp:<database-server-name>.database.windows.net,1433;Initial Catalog=<database-name>;
    Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;Authentication="Active Directory Default";
    
  3. Spara ändringarna och starta om programmet om det inte gör det automatiskt.

Testa programmet

Testa din app för att se till att allt fortfarande fungerar. Det kan ta några minuter innan alla ändringar sprids via Din Azure-miljö.