Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 handledning beskrivs hur du migrerar ett befintligt Node.js-program för att ansluta till Azure SQL Database och använda lösenordslösa anslutningar i stället för en lösning med 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.
Gå till Microsoft Entra-sidan på din logiska server.
Välj Ange administratör för att öppna den utfällbara menyn Microsoft Entra ID .
I den utfällbara menyn Microsoft Entra ID söker du efter den användare som du vill tilldela som administratör.
Välj användaren och välj Välj.
Konfigurera din lokala utvecklingsmiljö
Lösenordslösa anslutningar kan konfigureras för att fungera för både lokala 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 i avsnittet Logga in på Azure .
I Azure-portalen bläddrar du till din SQL-databas och väljer Frågeredigeraren (förhandsversion).
Välj Fortsätt som
<your-username>till höger på skärmen för att logga in på databasen med ditt konto.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]; GONä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
Skapa miljöinställningar för ditt program.
AZURE_SQL_SERVER=<YOURSERVERNAME>.database.windows.net AZURE_SQL_DATABASE=<YOURDATABASENAME> AZURE_SQL_PORT=1433Befintlig programkod som ansluter till Azure SQL Database med hjälp avNode.js SQL-drivrutin – omständlig fortsätter att fungera med lösenordslösa anslutningar med mindre ändringar. Om du vill använda en hanterad användartilldelad identitet anger du och
authentication.typeegenskaperna.import sql from 'mssql'; // Environment settings - no user or password const server = process.env.AZURE_SQL_SERVER; const database = process.env.AZURE_SQL_DATABASE; const port = parseInt(process.env.AZURE_SQL_PORT); // Passwordless configuration const config = { server, port, database, authentication: { type: 'azure-active-directory-default', }, options: { encrypt: true, clientId: process.env.AZURE_CLIENT_ID // <----- user-assigned managed identity } }; // Existing application code export default class Database { config = {}; poolconnection = null; connected = false; constructor(config) { this.config = config; console.log(`Database: config: ${JSON.stringify(config)}`); } async connect() { try { console.log(`Database connecting...${this.connected}`); if (this.connected === false) { this.poolconnection = await sql.connect(this.config); this.connected = true; console.log('Database connection successful'); } else { console.log('Database already connected'); } } catch (error) { console.error(`Error connecting to database: ${JSON.stringify(error)}`); } } async disconnect() { try { this.poolconnection.close(); console.log('Database connection closed'); } catch (error) { console.error(`Error closing database connection: ${error}`); } } async executeQuery(query) { await this.connect(); const request = this.poolconnection.request(); const result = await request.query(query); return result.rowsAffected[0]; } } const databaseClient = new Database(config); const result = await databaseClient.executeQuery(`select * from mytable where id = 10`);Miljövariabeln
AZURE_CLIENT_IDskapas senare i den här handledningen.
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:
- Lösenordsfri översikt
- Metodtips för hanterad identitet
- Hantering av identiteter i Microsoft Entra för Azure SQL
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.
- Överst i Azure Portal söker du efter hanterade identiteter. Välj resultatet Hanterade identiteter .
- Välj + Skapa överst på översiktssidan för hanterade identiteter .
- 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.
- Välj Granska och skapa längst ned på sidan.
- 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.
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.
Välj Identitet i det vänstra navigeringsfältet.
På sidan Identitet växlar du till fliken Användartilldelad .
Välj + Lägg till för att öppna den utfällbara menyn Lägg till användartilldelad hanterad identitet .
Välj den prenumeration som du använde tidigare för att skapa identiteten.
Sök efter MigrationIdentity efter namn och välj den i sökresultaten.
Välj Lägg till för att associera identiteten med din app.
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.
I Azure-portalen bläddrar du till din SQL-databas och väljer Frågeredigeraren (förhandsversion).
Välj Fortsätt som
<username>till höger på skärmen för att logga in på databasen med ditt konto.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]; GONär du kör dessa kommandon tilldelas den användartilldelade hanterade identiteten rollen SQL DB Contributor. 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:
Skapa en appinställning för klient-ID för hanterad identitet
Om du vill använda den användartilldelade hanterade identiteten skapar du en AZURE_CLIENT_ID miljövariabel och anger den lika med klient-ID:t för den hanterade identiteten. Du kan ange den här variabeln i avsnittet Konfiguration i din app i Azure-portalen. Du hittar klient-ID:t i avsnittet Översikt över den hanterade identitetsresursen i Azure-portalen.
Spara ändringarna och starta om programmet om det inte gör det automatiskt.
Om du behöver använda en systemtilldelad hanterad identitet utelämnar du egenskapen options.clientId . Du måste fortfarande använda egenskapen authentication.type.
const config = {
server,
port,
database,
authentication: {
type: 'azure-active-directory-default'
},
options: {
encrypt: true
}
};
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ö.