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.
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.
3 - Omgevingsvariabelen configureren voor toepassing
U moet de AZURE_CLIENT_ID
, AZURE_TENANT_ID
en 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:
- 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 met de bovenstaande code een instantie van het DefaultAzureCredential
object wordt gemaakt, DefaultAzureCredential
leest u de omgevingsvariabelen AZURE_SUBSCRIPTION_ID
, AZURE_TENANT_ID
en AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
voor de informatie van de service-principal van de toepassing waarmee verbinding kan worden gemaakt met Azure.