Door Azure gehoste apps verifiëren bij Azure-resources met de Azure SDK voor JavaScript
Wanneer een app wordt gehost in Azure (met behulp van een service zoals Azure-app Service, Azure Virtual Machines of Azure Container Instances), is de aanbevolen benadering voor het verifiëren van een app bij Azure-resources het gebruik van een beheerde identiteit.
Een beheerde identiteit biedt een identiteit voor uw app, zodat uw app verbinding maakt met andere Azure-resources zonder dat u een geheim hoeft te gebruiken (zoals een verbindingsreeks sleutel). Intern kent Azure de identiteit van uw app en met welke resources verbinding mag worden gemaakt. Azure gebruikt deze informatie om automatisch Microsoft Entra-tokens voor de app te verkrijgen, zodat deze verbinding kan maken met andere Azure-resources, allemaal zonder dat u de verificatiegeheimen hoeft te beheren (maken of draaien).
Typen beheerde identiteiten
Er zijn twee typen beheerde identiteit:
- Door het systeem toegewezen beheerde identiteiten - één Azure-resource
- Door de gebruiker toegewezen beheerde identiteiten - meerdere Azure-resources
In dit artikel worden de stappen beschreven voor het inschakelen en gebruiken van een door het systeem toegewezen beheerde identiteit voor een app. Als u een door de gebruiker toegewezen beheerde identiteit wilt gebruiken, raadpleegt u het artikel Door de gebruiker toegewezen beheerde identiteiten beheren om te zien hoe u een door de gebruiker toegewezen beheerde identiteit maakt.
Door het systeem toegewezen beheerde identiteiten voor één resource
Door het systeem toegewezen beheerde identiteiten worden geleverd door en rechtstreeks gekoppeld aan een Azure-resource. Wanneer u beheerde identiteit inschakelt voor een Azure-resource, krijgt u een door het systeem toegewezen beheerde identiteit voor die resource. Deze is gekoppeld aan de levenscyclus van de Azure-resource. Als de resource wordt verwijderd, wordt de identiteit automatisch verwijderd. Omdat u alleen beheerde identiteit moet inschakelen voor de Azure-resource die als host fungeert voor uw code, is dit het eenvoudigste type beheerde identiteit dat u kunt gebruiken.
Door de gebruiker toegewezen beheerde identiteiten voor meerdere resources
Conceptueel is deze identiteit een zelfstandige Azure-resource. Dit wordt het meest gebruikt wanneer uw oplossing meerdere workloads heeft die worden uitgevoerd op meerdere Azure-resources die allemaal dezelfde identiteit en dezelfde machtigingen moeten delen. Als uw oplossing bijvoorbeeld onderdelen had die zijn uitgevoerd op meerdere Exemplaren van App Service en virtuele machines en ze allemaal toegang nodig hadden tot dezelfde set Azure-resources, zou het maken en gebruiken van een door de gebruiker toegewezen beheerde identiteit voor deze resources zinvol zijn.
1 - Door het systeem toegewezen: Inschakelen in gehoste app
De eerste stap is het inschakelen van een beheerde identiteit in de Azure-resource die als host fungeert voor uw app. Als u bijvoorbeeld een Django-toepassing host met behulp van Azure-app Service, moet u beheerde identiteit inschakelen voor die App Service-web-app. Als u een virtuele machine gebruikt om uw app te hosten, zou u uw VM in staat stellen beheerde identiteit te gebruiken.
U kunt een beheerde identiteit inschakelen voor een Azure-resource met behulp van De Azure-portal of de Azure CLI.
2 - Rollen toewijzen aan de beheerde identiteit
Vervolgens moet u bepalen welke rollen (machtigingen) uw app nodig heeft en de beheerde identiteit toewijzen aan die rollen in Azure. Aan een beheerde identiteit kunnen rollen worden toegewezen voor een resource, resourcegroep of abonnementsbereik. In dit voorbeeld ziet u hoe u rollen toewijst aan het bereik van de resourcegroep, omdat de meeste toepassingen al hun Azure-resources groeperen in één resourcegroep.
3 - DefaultAzureCredential implementeren in uw toepassing
De DefaultAzureCredential
klasse detecteert automatisch dat een beheerde identiteit wordt gebruikt en gebruikt de beheerde identiteit om te verifiëren bij andere Azure-resources. Zoals beschreven in het overzichtsartikel over Azure SDK voor JavaScript-verificatie , DefaultAzureCredential
ondersteunt u meerdere verificatiemethoden en bepaalt u de verificatiemethode die tijdens runtime wordt gebruikt. Op deze manier kan uw app verschillende verificatiemethoden in verschillende omgevingen gebruiken zonder omgevingsspecifieke code te implementeren.
Voeg eerst het @azure/identiteitspakket toe aan uw toepassing.
npm install @azure/identity
Voor elke JavaScript-code waarmee een Azure SDK-clientobject in uw app wordt gemaakt, wilt u het volgende doen:
- Importeer de
DefaultAzureCredential
klasse uit de@azure/identity
module. - Maak een
DefaultAzureCredential
object. - Geef het
DefaultAzureCredential
object door aan de objectconstructor van de Azure SDK-client.
Een voorbeeld hiervan wordt weergegeven in het volgende codesegment.
// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
new DefaultAzureCredential()
);
Wanneer de bovenstaande code wordt uitgevoerd op uw lokale werkstation tijdens de lokale ontwikkeling, kijkt u met de SDK-methode DefaultAzureCredential()naar de omgevingsvariabelen voor een toepassingsservice-principal of vs Code, de Azure CLI of Azure PowerShell voor een set referenties voor ontwikkelaars, die beide kunnen worden gebruikt om de app tijdens de lokale ontwikkeling te verifiëren bij Azure-resources. Op deze manier kan dezelfde code worden gebruikt om uw app te verifiëren bij Azure-resources tijdens zowel lokale ontwikkeling als wanneer deze wordt geïmplementeerd in Azure.