Verifiëren bij Azure-resources vanuit on-premises JavaScript-apps

Apps die buiten Azure worden uitgevoerd (bijvoorbeeld on-premises of in een datacenter van derden), moeten een service-principal voor toepassingen gebruiken om te verifiëren bij Azure bij het openen van Azure-resources. Toepassingsservice-principalobjecten worden gemaakt met behulp van het app-registratieproces in Azure. Wanneer een toepassingsservice-principal wordt gemaakt, worden er een client-id en clientgeheim gegenereerd voor uw app. U slaat de client-id, het clientgeheim en uw tenant-id op in omgevingsvariabelen, zodat de Azure SDK voor JavaScript de omgevingsvariabelen gebruikt om uw app tijdens runtime te verifiëren bij Azure.

Er moet een andere app-registratie worden gemaakt voor elke omgeving (zoals test, fase, productie) waarin de app wordt uitgevoerd. Hierdoor kunnen omgevingsspecifieke resourcemachtigingen worden geconfigureerd voor elke service-principal en ervoor zorgen dat een app die in één omgeving is geïmplementeerd, niet praat met Azure-resources die deel uitmaken van een andere omgeving.

1 - De toepassing registreren in Azure

Een app kan worden geregistreerd bij Azure met behulp van Azure Portal of de Azure CLI.

Meld u aan bij Azure Portal en volg deze stappen.

Instructies Schermafbeelding
In Azure Portal:
  1. Voer app-registraties in in de zoekbalk bovenaan Azure Portal.
  2. Selecteer het item met het label App-registraties onder de kop Services in het menu dat onder de zoekbalk wordt weergegeven.
A screenshot showing how to use the top search bar in the Azure portal to find and navigate to the App registrations page.
Selecteer + Nieuwe registratie op de pagina App-registraties. A screenshot showing the location of the New registration button in the App registrations page.
Vul op de pagina Een toepassing registreren het formulier als volgt in.
  1. Naam → Voer een naam in voor de app-registratie in Azure. Het wordt aanbevolen deze naam op te nemen, zoals de app-naam en -omgeving (test, prod) waarvoor de app-registratie is bedoeld.
  2. Ondersteunde accounttypen → Accounts in deze organisatiemap.
Selecteer Registreren om uw app te registreren en de service-principal van de toepassing te maken.
A screenshot to fill out Register by giving the app a name and specifying supported account types as accounts in this organizational directory only.
Op de pagina App-registratie voor uw app:
  1. Toepassings-id (client) → Dit is de app-id die uw app gebruikt voor toegang tot Azure tijdens lokale ontwikkeling. Kopieer deze waarde naar een tijdelijke locatie in een teksteditor, omdat u deze in een toekomstige stap nodig hebt.
  2. Map-id (tenant) → Deze waarde is ook nodig voor uw app wanneer deze wordt geverifieerd bij Azure. Kopieer deze waarde naar een tijdelijke locatie in een teksteditor. Deze is ook nodig in een toekomstige stap.
  3. Clientreferenties → U moet de clientreferenties voor de app instellen voordat uw app kan worden geverifieerd bij Azure en Azure-services kunt gebruiken. Selecteer Een certificaat of geheim toevoegen om referenties voor uw app toe te voegen.
A screenshot of the App registration after completion. This screenshot shows the application and tenant IDs, which will be needed in a future step.
Selecteer + Nieuw clientgeheim op de pagina Certificaten en geheimen. A screenshot showing the location of the link to use to create a new client secret on the certificates and secrets page.
Het dialoogvenster Een clientgeheim toevoegen wordt weergegeven aan de rechterkant van de pagina. In dit dialoogvenster:
  1. Beschrijving → Voer een waarde van Current in.
  2. Verloopt → Selecteer een waarde van 24 maanden.
Selecteer Toevoegen om het geheim toe te voegen.

BELANGRIJK: Stel een herinnering in uw agenda in vóór de vervaldatum van het geheim. Op deze manier kunt u een nieuw geheim toevoegen vóór en uw apps bijwerken vóór de vervaldatum van dit geheim en een serviceonderbreking in uw app voorkomen.
A screenshot showing the page where a new client secret is added for the application service principal created by the app registration process.
Op de pagina Certificaten en geheimen wordt de waarde van het clientgeheim weergegeven.

Kopieer deze waarde naar een tijdelijke locatie in een teksteditor omdat u deze in een toekomstige stap nodig hebt.

BELANGRIJK: Dit is de enige keer dat u deze waarde ziet. Wanneer u deze pagina verlaat of vernieuwt, kunt u deze waarde niet meer zien. U kunt een ander clientgeheim toevoegen zonder dit clientgeheim ongeldig te maken, maar u ziet deze waarde niet meer.
A screenshot showing the page with the generated client secret.

2 - Rollen toewijzen aan de service-principal van de toepassing

Vervolgens moet u bepalen welke rollen (machtigingen) uw app nodig heeft voor welke resources en welke rollen aan uw app worden toegewezen. Rollen kunnen aan een resource, resourcegroep of abonnementsbereik worden toegewezen. In dit voorbeeld ziet u hoe u rollen toewijst voor de service-principal binnen het bereik van de resourcegroep, omdat de meeste toepassingen al hun Azure-resources groeperen in één resourcegroep.

Instructies Schermafbeelding
Zoek de resourcegroep voor uw toepassing door te zoeken naar de naam van de resourcegroep met behulp van het zoekvak boven aan Azure Portal.

Navigeer naar uw resourcegroep door de naam van de resourcegroep te selecteren onder de kop Resourcegroepen in het dialoogvenster.
A screenshot showing the top search box in the Azure portal to locate and navigate to the resource group you want to assign roles (permissions) to.
Selecteer op de pagina voor de resourcegroep toegangsbeheer (IAM) in het menu aan de linkerkant. A screenshot of the resource group page showing the location of the Access control (IAM) menu item.
Op de pagina Toegangsbeheer (IAM):
  1. Selecteer het tabblad Roltoewijzingen.
  2. Selecteer + Toevoegen in het bovenste menu en voeg vervolgens roltoewijzing toe in de resulterende vervolgkeuzelijst.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
De pagina Roltoewijzing toevoegen bevat alle rollen die kunnen worden toegewezen voor de resourcegroep.
  1. Gebruik het zoekvak om de lijst te filteren op een beter beheerbare grootte. In dit voorbeeld ziet u hoe u filtert op Storage Blob-rollen.
  2. Selecteer de rol die u wilt toewijzen.
    Selecteer Volgende om naar het volgende scherm te gaan.
A screenshot showing how to filter and select role assignments to be added to the resource group.
Op de volgende pagina Roltoewijzing toevoegen kunt u opgeven aan welke gebruiker de rol moet toewijzen.
  1. Selecteer Gebruiker, groep of service-principal onder Toegang toewijzen aan.
  2. Selecteer + Leden selecteren onder Leden
Aan de rechterkant van Azure Portal wordt een dialoogvenster geopend.
A screenshot showing the radio button to select to assign a role to a Microsoft Entra group and the link used to select the group to assign the role to.
In het dialoogvenster Leden selecteren :
  1. Het tekstvak Selecteren kan worden gebruikt om de lijst met gebruikers en groepen in uw abonnement te filteren. Typ indien nodig de eerste paar tekens van de service-principal die u voor de app hebt gemaakt om de lijst te filteren.
  2. Selecteer de service-principal die aan uw toepassing is gekoppeld.
Selecteer Selecteren onderaan het dialoogvenster om door te gaan.
A screenshot showing how to filter for and select the Microsoft Entra group for the application in the Select members dialog box.
De service-principal wordt weergegeven als geselecteerd in het scherm Roltoewijzing toevoegen.

Selecteer Beoordelen + toewijzen om naar de laatste pagina te gaan en vervolgens opnieuw beoordelen en toewijzen om het proces te voltooien.
A screenshot showing the completed Add role assignment page and the location of the Review + assign button used to complete the process.

3 - Omgevingsvariabelen configureren voor toepassing

U moet de AZURE_CLIENT_ID, AZURE_TENANT_IDen AZURE_CLIENT_SECRET omgevingsvariabelen instellen voor het proces waarmee uw JavaScript-app wordt uitgevoerd om de referenties van de service-principal van de toepassing beschikbaar te maken voor uw app tijdens runtime. Het DefaultAzureCredential object zoekt naar de informatie van de service-principal in deze omgevingsvariabelen.

AZURE_CLIENT_ID=<value>
AZURE_TENANT_ID=<value>
AZURE_CLIENT_SECRET=<value>

4 - DefaultAzureCredential implementeren in de toepassing

Als u Azure SDK-clientobjecten wilt verifiëren bij Azure, moet uw toepassing de DefaultAzureCredential klasse van het @azure/identiteitspakket gebruiken.

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:

  1. Importeer de DefaultAzureCredential klasse uit de @azure/identity module.
  2. Maak een DefaultAzureCredential object.
  3. 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 met de bovenstaande code een instantie van het DefaultAzureCredential object wordt gemaakt, DefaultAzureCredential leest u de omgevingsvariabelen AZURE_SUBSCRIPTION_ID, AZURE_TENANT_IDen AZURE_CLIENT_IDAZURE_CLIENT_SECRET voor de informatie van de service-principal van de toepassing waarmee verbinding kan worden gemaakt met Azure.