Dela via


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 Database

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 Sidan Microsoft Entra på den logiska servern.

  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.

    A screenshot showing how to enable Microsoft Entra admin.

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
    

    A screenshot showing how to use the Azure Query editor.

    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 databasen anslutningssträng för att kunna 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äng (AZURE_SQL_CONNECTIONSTRING) för att använda det lösenordslösa anslutningssträng formatet:

  1. Leta upp anslutningssträng. 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 värdet anslutningssträng 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-portalen 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 + 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.

A screenshot showing how to create a managed identity using the Azure portal.

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 Apps
  • Virtuella Azure-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.

    A screenshot showing how to assign a managed identity.

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
    

    A screenshot showing how to use the Azure Query editor to create a SQL user for a managed identity.

    När du kör dessa kommandon tilldelas rollen SQL DB-deltagare 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 det lösenordslösa anslutningssträng formatet. Anslut ionssträ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 din App Service-instans och leta upp Azure SQL Database-anslutningssträng.

  2. Välj redigeringsikonen och uppdatera värdet för anslutningssträng så att det matchar följande format. <database-server-name> Ändra platshållarna 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ö.

Nästa steg

I den här självstudien har du lärt dig hur du migrerar ett program till lösenordslösa anslutningar.

Du kan läsa följande resurser för att utforska begreppen som beskrivs i den här artikeln mer ingående: