Ověřit Java aplikace hostované na Azure ke zdrojům Azure pomocí systémem přiřazené spravované identity

Doporučeným přístupem k ověření Azure hostované aplikace u jiných prostředků Azure je použití managed identity. Většina služeb Azure tento přístup podporuje, včetně aplikací hostovaných na Azure App Service, Azure Container Apps a Azure Virtual Machines. Další informace najdete v tématu Azure služby a typy prostředků podporující spravované identity. Další informace o různých technikách ověřování a přístupech najdete v tématu Authenticate Java aplikace pro Azure služby pomocí knihovny identit Azure.

V následujících částech se dozvíte:

  • Základní koncepty spravované identity
  • Vytvoření spravované identity přiřazené systémem pro vaši aplikaci
  • Přiřazení rolí spravované identitě přiřazené systémem
  • Jak autentizovat pomocí spravované identity přiřazené systémem ve vašem aplikačním kódu.

Základní koncepty spravované identity

Spravovaná identita umožňuje aplikaci bezpečně připojit k dalším Azure prostředkům bez použití tajných klíčů nebo jiných tajných kódů aplikací. Interně Azure sleduje identitu a prostředky, ke kterým se může připojit. Azure tyto informace používá k automatickému získání tokenů Microsoft Entra pro aplikaci, aby se mohla připojit k dalším Azure prostředkům.

Při konfiguraci hostované aplikace je potřeba zvážit dva typy spravovaných identit:

  • Systemem přiřazené spravované identity jsou povoleny přímo na prostředku Azure a jsou vázány na jeho životní cyklus. Po odstranění prostředku Azure automaticky odstraní identitu za vás. Identity přiřazené systémem poskytují minimalistický přístup k používání spravovaných identit.
  • Uživatelsky přiřazené spravované identity se vytvářejí jako samostatné prostředky Azure a nabízejí větší flexibilitu a schopnosti. Jsou ideální pro řešení zahrnující více Azure prostředků, které potřebují sdílet stejnou identitu a oprávnění. Pokud například více virtuálních počítačů potřebuje přístup ke stejné sadě Azure prostředků, poskytuje spravovaná identita přiřazená uživatelem možnost opakovaného použití a optimalizovanou správu.

Návod

Další informace o výběru a správě spravovaných identit přiřazených systémem a přiřazených uživatelem najdete v článku s doporučeními k osvědčeným postupům spravované identity .

Následující části popisují postup povolení a použití spravované identity přiřazené systémem pro Azure hostované aplikace. Pokud potřebujete použít spravovanou identitu přiřazenou uživatelem, přečtěte si téma Authentication Azure-hostované Java aplikace k Azure prostředkům pomocí spravované identity přiřazené uživatelem.

Povolit systemem přiřazenou spravovanou identitu na hostitelském prostředku Azure.

Pokud chcete začít používat spravovanou identitu přiřazenou systémem s vaší aplikací, povolte identitu na Azure prostředku, který je hostitelem vaší aplikace, jako je Azure App Service, Azure Container Apps nebo instance Azure Virtual Machines.

Spravovanou identitu přiřazenou systémem můžete povolit pro prostředek Azure pomocí portálu Azure nebo Azure CLI.

  1. Na portálu Azure přejděte k prostředku, který je hostitelem kódu aplikace, jako je Azure App Service nebo instance Azure Container Apps.

  2. Na stránce přehledu prostředku rozbalte nastavení a v navigaci vyberte Identitu.

  3. Na stránce Identita přepněte posuvník stav na Zapnuto.

  4. Výběrem možnosti Uložit se vaše změny uplatní.

    Snímek obrazovky znázorňující povolení spravované identity přiřazené systémem v aplikaci kontejneru

Přiřazení rolí ke spravované identitě

Dále určete, které role vaše aplikace potřebuje, a přiřaďte tyto role spravované identitě. Spravované identitě můžete přiřadit role v následujících oborech:

  • zdroj: Přiřazené role se vztahují pouze na tento konkrétní zdroj.
  • skupiny prostředků: Přiřazené role se vztahují na všechny prostředky obsažené ve skupině prostředků.
  • Předplatné: Přiřazené role se vztahují na všechny prostředky obsažené v předplatném.

Následující příklad ukazuje, jak přiřadit role v oboru skupiny prostředků, protože mnoho aplikací spravuje všechny související Azure prostředky pomocí jedné skupiny prostředků.

  1. Přejděte na stránku Přehled skupiny prostředků, která obsahuje aplikaci s identitou spravovanou systémem.

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

  3. Na stránce řízení přístupu (IAM) vyberte + Přidat v horní nabídce a potom zvolte Přidat přiřazení role a přejděte na stránku Přidat přiřazení role.

    Snímek obrazovky znázorňující, jak získat přístup ke stránce přiřazení role identity

  4. Na stránce Přidat přiřazení role se zobrazí vícekrokový pracovní postup se záložkami pro přiřazení rolí k identitám. Na úvodní kartě Role vyhledejte roli, kterou chcete přiřadit k identitě, pomocí vyhledávacího pole v horní části.

  5. Ve výsledcích vyberte roli, potom klikněte na Další, abyste přešli na kartu Členové.

  6. U možnosti Přiřadit přístup k vyberte možnost Spravovaná identita.

  7. Pro otevření panelu Vybrat spravované identity vyberte u možnosti Členové volbu + Vybrat členy.

  8. Na panelu Vyberte spravované identity použijte rozevírací seznamy Předplatné a Spravované identity k filtrování výsledků hledání pro vaše identity. Pomocí vyhledávacího pole Select vyhledejte systémovou identitu, kterou jste povolili pro prostředek Azure hostující vaši aplikaci.

    Snímek obrazovky znázorňující proces přiřazení spravované identity

  9. Vyberte identitu a zvolte Pokračujte výběrem v dolní části panelu.

  10. Vyberte Zkontrolovat a přiřadit v dolní části stránky.

  11. Na poslední kartě Zkontrolovat + přiřadit, vyberte možnost Zkontrolovat + přiřadit a dokončete pracovní postup.

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

Knihovna Identit Azure poskytuje různé přihlašovací údaje – implementace TokenCredential přizpůsobené podpoře různých scénářů a toků ověřování Microsoft Entra. Vzhledem k tomu, že spravovaná identita není při místním spuštění dostupná, následující kroky ukazují, které přihlašovací údaje použít ve které situaci:

  • Místní vývojové prostředí: Pouze při místním vývoji použijte třídu DefaultAzureCredential pro jasně vymezený a předkonfigurovaný řetězec přihlašovacích údajů. DefaultAzureCredential zjišťuje přihlašovací údaje uživatele z místního nástroje nebo integrovaného vývojového prostředí ( například Azure CLI nebo Visual Studio Code). Poskytuje také flexibilitu a pohodlí pro opakování, doby čekání na odpovědi a podporu více možností ověřování. Další informace najdete v článku Autentizace ke službám Azure během místního vývoje.
  • Azure hostované aplikace: Když aplikace běží v Azure, použijte ManagedIdentityCredential k bezpečnému zjištění spravované identity nakonfigurované pro vaši aplikaci. Zadáním tohoto přesného typu přihlašovacích údajů zabráníte neočekávanému vyzvednutí dalších dostupných přihlašovacích údajů.

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 se přistupuje pomocí specializovaných klientských tříd z různých klientských knihoven Azure SDK. Následující příklad kódu ukazuje, jak vytvořit instanci přihlašovacích údajů a použít ji s klientem služby Azure SDK. V kódu aplikace proveďte následující kroky pro ověření pomocí spravované identity:

  1. Importujte DefaultAzureCredentialBuilder, ManagedIdentityCredentialBuilder a TokenCredential třídy.
  2. Předejte klientovi příslušnou TokenCredential instanci:
    • Použijte DefaultAzureCredential při místním spuštění
    • Použití ManagedIdentityCredential při spuštění aplikace v Azure

Následující příklad ukazuje ověření SecretClient pomocí spravované identity přiřazené systémem:

import com.azure.core.credential.TokenCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.identity.ManagedIdentityCredentialBuilder;
import com.azure.security.keyvault.secrets.SecretClient;
import com.azure.security.keyvault.secrets.SecretClientBuilder;

TokenCredential credential = null;

// Set up credential based on environment (Azure or local development)
String environment = System.getenv("ENV");

if (environment != null && environment.equals("production")) {
    credential = new ManagedIdentityCredentialBuilder()
        .build();
} else {
    credential = new DefaultAzureCredentialBuilder()
        .build();
}

// Azure SDK client builders accept the credential as a parameter
SecretClient client = new SecretClientBuilder()
    .vaultUrl("https://<your-key-vault-name>.vault.azure.net")
    .credential(credential)
    .buildClient();

Další kroky

Tento článek se zabýval ověřováním pomocí spravované identity přiřazené systémem. Tato forma ověřování je jedním z několika způsobů, jak se můžete ověřit v Azure SDK pro Java. Následující články popisují další způsoby:

Pokud narazíte na problémy související s ověřováním aplikací hostovanými Azure, prohlédni si téma Řešení Azure ověřování hostované aplikace.