Sdílet prostřednictvím


Ověřte se k Azure prostředkům z Java aplikací, které jsou hostovány lokálně

Aplikace hostované mimo Azure, například v místním prostředí nebo datovém centru třetích stran, by měly k ověření ve službách Azure používat aplikační hlavní identitu prostřednictvím Microsoft Entra ID. V následujících částech se dozvíte:

  • Postup registrace aplikace ve službě Microsoft Entra k vytvoření služební zásady.
  • Jak přiřadit role k oprávněním oboru
  • Jak se pomocí služebního principála ověřit z kódu aplikace.

Pomocí vyhrazených aplikačních služebních účtů můžete při přístupu k prostředkům Azure dodržovat princip nejnižších oprávnění. Omezte oprávnění na konkrétní požadavky aplikace během vývoje, abyste zabránili náhodnému přístupu k Azure prostředkům určeným pro jiné aplikace nebo služby. Tento přístup vám také pomůže vyhnout se problémům při přesunu aplikace do produkčního prostředí tím, že zajistí, že aplikace není v vývojovém prostředí příliš privilegovaná.

Vytvořte pro každé prostředí, ve kterém aplikaci hostujete, jinou registraci aplikace. Pro každý principál služby můžete nakonfigurovat oprávnění prostředků specifická pro konkrétní prostředí. Zajistíte tím, že aplikace nasazená do jednoho prostředí nebude mít přístup k prostředkům Azure v jiném prostředí.

Registrace aplikace v Azure

Objekty aplikačních služebních principálů se vytvářejí registrací aplikace v Azure pomocí portálu Azure nebo Azure CLI.

  1. Na portálu Azure přejděte pomocí panelu hledání na stránku App registrations.

  2. Na stránce App registrations vyberte + Nová registrace.

  3. Na stránce registrace aplikace :

    • Do pole Název zadejte popisnou hodnotu, která obsahuje název aplikace a cílové prostředí.
    • Pro Podporované typy účtůvyberte Účty pouze v tomto organizačním adresáři (pouze Microsoft Customer Led – jednotná instance), nebo vyberte možnost, která nejlépe vyhovuje vašim požadavkům.
  4. Vyberte Register pro registraci vaší aplikace a vytvoření service principal.

    A snímek obrazovky ukazující, jak vytvořit registraci aplikace na portálu Azure portal.

  5. Na stránce registrace aplikace aplikace zkopírujte ID aplikace (klienta) a ID adresáře (tenanta) a vložte je do dočasného umístění pro pozdější použití v konfiguracích kódu aplikace.

  6. Vyberte Přidání certifikátu nebo tajného kódu pro nastavení přihlašovacích údajů pro vaši aplikaci.

  7. Na stránce Certifikáty a tajemství vyberte + Nový tajný klíč klienta.

  8. V panelu, který se otevře Přidat tajný klíč klienta:

    • Jako popiszadejte hodnotu Current.
    • Pro hodnotu u Expires ponechte výchozí doporučenou hodnotu 180 dnů.
    • Chcete-li přidat tajemství, vyberte Přidat.
  9. Na stránce Certifikáty & tajných kódů zkopírujte vlastnost Hodnota tajného klíče klienta pro použití v dalším kroku.

    Poznámka:

    Hodnota tajného klíče klienta se zobrazí jenom jednou po vytvoření registrace aplikace. Můžete přidat další tajné kódy klienta bez zneplatnění tohoto tajného klíče klienta, ale neexistuje způsob, jak tuto hodnotu znovu zobrazit.

Přiřazení rolí k instančnímu objektu aplikace

Dále určete, jaké role (oprávnění) vaše aplikace potřebuje k jakým prostředkům, a přiřaďte tyto role k vytvořenému služebnímu principalu. Role je možné přiřadit na úrovni prostředků, skupin prostředků nebo předplatného. Tento příklad ukazuje, jak přiřadit role v oboru skupiny prostředků, protože většina aplikací seskupuje všechny své Azure prostředky do jedné skupiny prostředků.

  1. Na portálu Azure přejděte na stránku Overview skupiny prostředků, která obsahuje vaši aplikaci.

  2. V levém navigačním panelu vyberte řízení přístupu (IAM).

  3. Na stránce Řízení přístupu (IAM) vyberte + Přidat a pak v rozevírací nabídce zvolte Přidat přiřazení role . Stránka Přidat přiřazení role poskytuje několik záložek pro konfiguraci a přiřazení rolí.

  4. Na kartě Role vyhledejte roli, kterou chcete přiřadit, pomocí vyhledávacího pole. Vyberte roli a pak zvolte Další.

  5. Na kartě Členové :

    • V části Přiřadit přístup k hodnotě vyberte Uživatel, skupina nebo instanční objekt .
    • Pro hodnotu Členové zvolte + Vybrat členy , aby se otevřel informační panel Vybrat členy .
    • Vyhledejte služební objekt, který jste vytvořili dříve, a vyberte ho z výsledků filtrování. Výběrem možnosti Vybrat vyberte skupinu a zavřete informační panel.
    • V dolní části karty Členové vyberte Zkontrolovat a přiřadit.

    Snímek obrazovky znázorňující, jak přiřadit roli instančnímu objektu

  6. Na kartě Revize a Přiřazení vyberte Revize a Přiřazení v dolní části stránky.

Nastavení proměnných prostředí aplikace

Při běhu se některé přihlašovací údaje z knihovny Azure Identity, jako například , DefaultAzureCredential, a EnvironmentCredential, pokouší vyhledat informace o službě principal podle konvencí v proměnných prostředí. Při práci s Java můžete proměnné prostředí nakonfigurovat několika způsoby v závislosti na nástrojích a prostředích.

Bez ohledu na zvolený přístup nakonfigurujte pro instanční objekt následující proměnné prostředí:

  • AZURE_CLIENT_ID: Slouží k identifikaci registrované aplikace v Azure.
  • AZURE_TENANT_ID: ID tenanta Microsoft Entra.
  • AZURE_CLIENT_SECRET: Tajné přihlašovací údaje vygenerované pro aplikaci.

Nastavte následující proměnné prostředí. Nahraďte zástupné hodnoty skutečnými hodnotami z registrace aplikace:

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

Pro Java aplikaci spuštěnou jako systémovou službu na produkčním serveru definujte proměnné prostředí v souboru a odkazujte na ni direktivou EnvironmentFile v souboru jednotky služby:

[Unit]
Description=Java application service
After=network.target

[Service]
User=app-user
WorkingDirectory=/path/to/java-app
EnvironmentFile=/path/to/java-app/app-environment-variables
ExecStart=/usr/bin/java -jar app.jar

[Install]
WantedBy=multi-user.target

Soubor prostředí by měl obsahovat seznam proměnných prostředí s jejich hodnotami:

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

Autentizace ke službám Azure z vaší aplikace

Knihovna Azure Identity poskytuje různá pověření – implementace TokenCredential, které podporují různé scénáře a toky ověřování Microsoft Entra. Následující kroky ukazují, jak používat ClientSecretCredential při práci se servisními hlavními místně a v produkčním prostředí.

Implementace kódu

Přidejte závislost azure-identity do souboru pom.xml.

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

Ke službám Azure přistupujete pomocí specializovaných klientských tříd z různých Azure SDK klientských knihoven. Pro každý Java kód, který ve vaší aplikaci vytvoří objekt klienta Azure SDK, postupujte takto:

  1. Importujte ClientSecretCredentialBuilder třídu z com.azure.identity balíčku.
  2. Vytvořte objekt ClientSecretCredential pomocí ClientSecretCredentialBuilder s tenantId, clientId a clientSecret.
  3. Předejte instanci ClientSecretCredential do metody credential tvůrce objektů klienta Azure SDK.

Příklad tohoto přístupu je znázorněn v následujícím segmentu kódu:

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();