Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Apps die buiten Azure worden gehost, zoals on-premises of in een datacenter van derden, moeten een toepassingsservice-principal via Microsoft Entra-id gebruiken om te verifiëren bij Azure-services. In de volgende secties leert u het volgende:
- Een toepassing registreren bij Microsoft Entra om een service-principal te maken
- Rollen toewijzen aan scoperechten
- Authenticeren met behulp van een service-principal vanuit uw app-code
Met behulp van service-principals voor toegewezen toepassingen kunt u voldoen aan het principe van minimale bevoegdheden bij het openen van Azure-resources. Machtigingen zijn beperkt tot de specifieke vereisten van de app tijdens de ontwikkeling, waardoor onbedoelde toegang tot Azure-resources wordt voorkomen die zijn bedoeld voor andere apps of services. Deze aanpak helpt ook problemen te voorkomen wanneer de app naar productie wordt verplaatst door ervoor te zorgen dat deze niet te veel bevoegdheden heeft in de ontwikkelomgeving.
Er moet een andere app-registratie worden gemaakt voor elke omgeving waarin de app wordt gehost. Hierdoor kunnen omgevingsspecifieke resourcemachtigingen worden geconfigureerd voor elke service-principal en zorgt u ervoor dat een app die in één omgeving is geïmplementeerd, niet met Azure-resources in een andere omgeving praat.
De app registreren in Azure
Toepassingsservice-principalobjecten worden gemaakt via een app-registratie in Azure met behulp van Azure Portal of Azure CLI.
Gebruik de zoekbalk in Azure Portal om naar de pagina App-registraties te gaan.
Selecteer + Nieuwe registratie op de pagina App-registraties.
Op de pagina Een toepassing registreren:
- Voer voor het veld Naam een beschrijvende waarde in die de naam van de app en de doelomgeving bevat.
- Selecteer voor de Ondersteunde accounttypende optie Accounts in dit organisatieadresboek (alleen Microsoft Customer Led - Enkele tenant)of de optie die het beste bij uw vereisten past.
Selecteer Register om uw app te registreren en de service-principal te maken.
Kopieer op de pagina App-registratie voor uw app de toepassings-id (client) en Directory-id (tenant) en plak deze op een tijdelijke locatie voor later in de configuraties van uw applicatiecode.
Selecteer Een certificaat of geheim toevoegen om referenties voor uw app in te stellen.
Op de pagina Certificaten en geheimen, selecteer + Nieuw clientgeheim.
Voeg in het een clientgeheim toe flyoutvenster dat wordt geopend:
- Voer voor de beschrijving een waarde in van
Current. - Laat voor de waarde Verlopen de standaard aanbevolen waarde staan van
180 days. - Selecteer Toevoegen om het geheim toe te voegen.
- Voer voor de beschrijving een waarde in van
Kopieer op de pagina Certificaten & geheimen de eigenschap Waarde van het clientgeheim voor gebruik in een toekomstige stap.
Opmerking
De waarde van het clientgeheim wordt slechts eenmaal weergegeven nadat de app-registratie is gemaakt. U kunt meer clientgeheimen toevoegen zonder dit clientgeheim ongeldig te maken, maar u kunt deze waarde niet opnieuw weergeven.
Rollen toewijzen aan de service-principal van de toepassing
Bepaal vervolgens welke rollen (machtigingen) uw app nodig heeft voor welke resources en wijs deze rollen toe aan de service-principal die u hebt gemaakt. Rollen kunnen worden toegewezen op het niveau van de resource, resourcegroep of abonnement. In dit voorbeeld ziet u hoe u rollen toewijst binnen het bereik van de resourcegroep, omdat de meeste apps al hun Azure-resources groeperen in één resourcegroep.
Navigeer in Azure Portal naar de overzichtspagina van de resourcegroep die uw app bevat.
Selecteer Toegangsbeheer (IAM) in de linkernavigatie.
Selecteer + Toevoegen en kies vervolgens roltoewijzing toevoegen in de vervolgkeuzelijst op de pagina Toegangsbeheer (IAM). De pagina Roltoewijzing toevoegen bevat verschillende tabbladen voor het configureren en toewijzen van rollen.
Gebruik op het tabblad Rol het zoekvak om de rol te vinden die u wilt toewijzen. Selecteer de rol en kies Volgende.
Op het tabblad Leden :
- Voor de waarde 'toegang toewijzen aan' selecteert u gebruiker, gebruikersgroep of service-principal.
- Voor de waarde Leden kiest u + Leden selecteren om het flyoutdeelvenster Leden selecteren te openen.
- Zoek naar de service principal die u eerder hebt gemaakt en selecteer deze in de gefilterde resultaten. Kies Selecteren om de groep te selecteren en het uitklapdeelvenster te sluiten.
- Selecteer Beoordelen en toewijzen onderaan het tabblad Leden .
Selecteer op het tabblad Controleren en toewijzen de optie Controleren en toewijzen onderaan de pagina.
De omgevingsvariabelen van de app instellen
Tijdens uitvoeringstijd zoeken bepaalde referenties uit de Azure Identity-bibliotheek, zoals DefaultAzureCredential, EnvironmentCredentialen ClientSecretCredential, naar serviceprincipal-informatie in de omgevingsvariabelen. Er zijn meerdere manieren om omgevingsvariabelen te configureren wanneer u met JavaScript werkt, afhankelijk van uw hulpprogramma's en omgeving.
Configureer, ongeacht de methode die u kiest, de volgende omgevingsvariabelen voor een service-principal:
-
AZURE_CLIENT_ID: wordt gebruikt om de geregistreerde app in Azure te identificeren. -
AZURE_TENANT_ID: de id van de Microsoft Entra-tenant. -
AZURE_CLIENT_SECRET: de geheime referentie die is gegenereerd voor de app.
In Visual Studio Code kunnen omgevingsvariabelen worden ingesteld in het launch.json-bestand van uw project. Deze waarden worden automatisch opgehaald wanneer de app wordt gestart. Deze configuraties reizen echter niet met uw app tijdens de implementatie, dus u moet omgevingsvariabelen instellen in uw doelhostingomgeving.
"configurations": [
{
"env": {
"NODE_ENV": "development",
"AZURE_CLIENT_ID": "<your-client-id>",
"AZURE_TENANT_ID":"<your-tenant-id>",
"AZURE_CLIENT_SECRET": "<your-client-secret>"
}
}
Verifiëren bij Azure-services vanuit uw app
De Azure Identity-bibliotheek biedt verschillende referenties: implementaties van TokenCredential die zijn aangepast voor de ondersteuning van diverse scenario's en Microsoft Entra-authenticatiestromen. In de volgende stappen ziet u hoe u ClientSecretCredential gebruikt wanneer u lokaal en in productie met service-principals werkt.
De code implementeren
Voeg het @azure/identiteitspakket toe aan het Node.js project:
npm install @azure/identity
Azure-services worden geopend met behulp van gespecialiseerde clientklassen uit de verschillende Azure SDK-clientbibliotheken. Voer de volgende stappen uit voor javaScript-code waarmee een Azure SDK-clientobject in uw app wordt gemaakt:
- Importeer de
ClientSecretCredentialklasse uit de@azure/identitymodule. - Maak een
ClientSecretCredentialobject met detenantId,clientIdenclientSecret. - Geef het
ClientSecretCredentialexemplaar door aan de objectconstructor van de Azure SDK-client.
Een voorbeeld van deze benadering wordt weergegeven in het volgende codesegment:
import { BlobServiceClient } from '@azure/storage-blob';
import { ClientSecretCredential } from '@azure/identity';
// Authentication
const tenantId = process.env.AZURE_TENANT_ID;
const clientId = process.env.AZURE_CLIENT_ID;
const clientSecret = process.env.AZURE_CLIENT_SECRET;
// Azure Storage account name
const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!tenantId || !clientId || !clientSecret || !accountName) {
throw Error('Required environment variables not found');
}
const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
credential
);
Een alternatieve methode is om het ClientSecretCredential object rechtstreeks door te geven aan de Azure SDK-clientconstructor:
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
new ClientSecretCredential(tenantId, clientId, clientSecret)
);