Delen via


Java-apps verifiëren voor Azure services tijdens lokale ontwikkeling met behulp van service-principals

Tijdens lokale ontwikkeling moeten toepassingen worden geverifieerd bij Azure voor toegang tot verschillende Azure services. U kunt lokaal verifiëren met behulp van een van de volgende methoden:

In dit artikel wordt uitgelegd hoe u een toepassingsservice-principal gebruikt. Zie Application- en service-principal-objecten in Microsoft Entra ID voor meer informatie over service-principals. In dit artikel leert u het volgende:

  • Een toepassing registreren bij Microsoft Entra om een service principal te maken.
  • Het gebruik van Microsoft Entra groepen om machtigingen efficiënt te beheren.
  • Rollen toewijzen aan scopetoestemmingen.
  • Authenticeren met behulp van een service-principal vanuit uw applicatiecode.

Met behulp van toegewezen toepassingsservice-principals kunt u het principe van minimale bevoegdheden volgen bij het openen van Azure resources. U kunt tijdens de ontwikkeling machtigingen beperken tot de specifieke vereisten van de app om onbedoelde toegang tot Azure resources te voorkomen die zijn bedoeld voor andere apps of services. Deze aanpak helpt u ook problemen te voorkomen wanneer u de app naar productie verplaatst door ervoor te zorgen dat de app niet te veel bevoegdheden heeft in de ontwikkelomgeving.

A-diagram waarin wordt getoond hoe een lokale Java-app een service-principal gebruikt om verbinding te maken met Azure resources.

Wanneer u de app registreert in Azure, wordt er een toepassingsservice-principal gemaakt. Voor lokale ontwikkeling moet u het volgende doen:

  • Maak een afzonderlijke app-registratie voor elke ontwikkelaar die aan de app werkt, zodat elke ontwikkelaar een eigen toepassingsservice-principal heeft en geen referenties hoeft te delen.
  • Maak een afzonderlijke app-registratie voor elke app om de machtigingen van de app te beperken tot alleen wat nodig is.

Stel tijdens lokale ontwikkeling omgevingsvariabelen in met de identiteit van de toepassingsservice-principal. De Azure Identiteitsbibliotheek leest deze omgevingsvariabelen om de app te verifiëren bij de vereiste Azure resources.

De app registreren in Azure

Toepassingsservice-principalobjecten worden gemaakt via een app-registratie in Azure met behulp van de Azure-portal of Azure CLI.

  1. Gebruik in de Azure-portal de zoekbalk om naar de pagina App registrations te gaan.

  2. Selecteer op de pagina App registrations+ Nieuwe registratie.

  3. 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.
  4. Selecteer Register om uw app te registreren en de service-principal te maken.

    A schermopname waarin wordt getoond hoe u een app-registratie maakt in de Azure portal.

  5. 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.

  6. Selecteer Een certificaat of geheim toevoegen om referenties voor uw app in te stellen.

  7. Op de pagina Certificaten en geheimen, selecteer + Nieuw clientgeheim.

  8. Voeg in het een clientgeheim toe flyoutvenster dat wordt geopend:

    • Voer voor de Descriptioneen waarde in van Current.
    • Voor de verloopt waarde, laat u de standaard aanbevolen waarde van 180 dagen staan.
    • Selecteer Toevoegen om het geheim toe te voegen.
  9. 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.

Een Microsoft Entra groep maken voor lokale ontwikkeling

Maak een Microsoft Entra groep om de rollen (machtigingen) die de app nodig heeft in lokale ontwikkeling in te kapselen in plaats van de rollen toe te wijzen aan afzonderlijke service-principal-objecten. Deze aanpak biedt de volgende voordelen:

  • Elke ontwikkelaar heeft dezelfde rollen toegewezen op groepsniveau.
  • Als er een nieuwe rol nodig is voor de app, hoeft deze alleen aan de groep voor de app te worden toegevoegd.
  • Als een nieuwe ontwikkelaar lid wordt van het team, wordt er een nieuwe toepassingsservice-principal gemaakt voor de ontwikkelaar en toegevoegd aan de groep, zodat de ontwikkelaar over de juiste machtigingen beschikt om aan de app te werken.
  1. Navigeer naar de overzichtspagina Microsoft Entra ID in de Azure-portal.

  2. Selecteer Alle groepen in het menu aan de linkerkant.

  3. Selecteer Nieuwe groep op de pagina Groepen.

  4. Vul op de pagina Nieuwe groep de volgende formuliervelden in:

    • Groepstype: selecteer Beveiliging.
    • Groepsnaam: Voer een naam in voor de groep die een verwijzing naar de app- of omgevingsnaam bevat.
    • Groepsbeschrijving: Voer een beschrijving in waarmee het doel van de groep wordt uitgelegd.

    A-schermopname waarin wordt getoond hoe u een groep maakt in de Azure portal.

  5. Selecteer de koppeling Geen leden geselecteerd onder Leden om leden toe te voegen aan de groep.

  6. Zoek in het uitklapvenster dat wordt geopend naar de service-principal die u eerder hebt gemaakt en selecteer deze uit de gefilterde resultaten. Kies de knop Selecteren onderaan het deelvenster om uw selectie te bevestigen.

  7. Selecteer Maken onder aan de pagina Nieuwe groep om de groep te maken en terug te keren naar de pagina Alle groepen . Als de nieuwe groep niet wordt weergegeven, wacht u even en vernieuwt u de pagina.

Rollen toewijzen aan de groep

Bepaal vervolgens welke rollen (machtigingen) uw app nodig heeft voor welke resources en wijs deze rollen toe aan de Microsoft Entra groep die u hebt gemaakt. Aan groepen kan een rol worden toegewezen op het niveau van de bron, bron-groep 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.

  1. Navigeer in de Azure-portal naar de pagina Overview van de resourcegroep die uw app bevat.

  2. Selecteer Toegangsbeheer (IAM) in de linkernavigatie.

  3. 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.

  4. Gebruik op het tabblad Rol het zoekvak om de rol te vinden die u wilt toewijzen. Selecteer de rol en kies Volgende.

  5. 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 Microsoft Entra groep 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 .

    A schermopname waarin wordt getoond hoe u een rol toewijst aan de Microsoft Entra group.

  6. Selecteer op het tabblad Controleren en toewijzen de optie Controleren en toewijzen onderaan de pagina.

De omgevingsvariabelen van de app instellen

Tijdens de uitvoering zoeken bepaalde referenties uit de Azure Identiteitsbibliotheek, zoals DefaultAzureCredential, EnvironmentCredential en ClientSecretCredential, op conventionele wijze naar informatie over de service-principal in de omgevingsvariabelen. Wanneer u met Java werkt, kunt u omgevingsvariabelen op verschillende manieren configureren, 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.

Voeg de volgende regels toe aan uw ~/.bashrc of ~/.zshrc bestand. Vervang de waarden van de tijdelijke aanduiding door de werkelijke waarden van uw app-registratie:

export AZURE_CLIENT_ID="<your-client-id>"
export AZURE_TENANT_ID="<your-tenant-id>"
export AZURE_CLIENT_SECRET="<your-client-secret>"

Nadat u het bestand hebt bewerkt, voert u source ~/.bashrc of source ~/.zshrc uit om de wijzigingen op uw huidige sessie toe te passen.

Verifiëren bij Azure services vanuit uw app

De Azure Identity library biedt verschillende credentials - implementaties van TokenCredential die verschillende scenario's en Microsoft Entra verificatiestromen ondersteunen. In de volgende stappen ziet u hoe u ClientSecretCredential gebruikt wanneer u lokaal en in productie met service-principals werkt.

De code implementeren

Voeg de azure-identity afhankelijkheid toe aan uw pom.xml bestand:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
</dependency>

U opent Azure services met behulp van gespecialiseerde clientklassen uit de verschillende Azure SDK clientbibliotheken. Voer de volgende stappen uit voor elke Java code waarmee een Azure SDK clientobject in uw app wordt gemaakt:

  1. Importeer de ClientSecretCredentialBuilder klasse uit het com.azure.identity pakket.
  2. Maak een ClientSecretCredential object met behulp van ClientSecretCredentialBuilder de tenantId, clientIden clientSecret.
  3. Geef het ClientSecretCredential-exemplaar door aan de methode credential van de Azure SDK clientobjectbouwer.

Een voorbeeld van deze benadering wordt weergegeven in het volgende codesegment:

import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;

String tenantId = System.getenv("AZURE_TENANT_ID");
String clientId = System.getenv("AZURE_CLIENT_ID");
String clientSecret = System.getenv("AZURE_CLIENT_SECRET");

ClientSecretCredential credential = new ClientSecretCredentialBuilder()
    .tenantId(tenantId)
    .clientId(clientId)
    .clientSecret(clientSecret)
    .build();

BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
    .endpoint("https://<account-name>.blob.core.windows.net")
    .credential(credential)
    .buildClient();

Volgende stappen

Dit artikel heeft betrekking op verificatie via een service-principal. Deze vorm van verificatie is een van de vele manieren waarop u kunt verifiëren in de Azure SDK voor Java. In de volgende artikelen worden andere manieren beschreven om te verifiëren:

Als u problemen ondervindt met betrekking tot service-principalverificatie, raadpleegt u de sectie Problemen met service-principalverificatie oplossen.

Nadat u authenticatie onder de knie hebt, raadpleegt u logboekregistratie configureren in de Azure SDK voor Java voor informatie over de logboekregistratiefunctionaliteit die door de SDK wordt geboden.