Migrace aplikace pro použití připojení bez hesla se službou Azure Event Hubs
Článek
Žádosti o aplikace na služby Azure musí být ověřeny pomocí konfigurací, jako jsou přístupové klíče účtu nebo připojení bez hesla. Pokud je to však možné, měli byste upřednostnit připojení bez hesla ve vašich aplikacích. Tradiční metody ověřování, které používají hesla nebo tajné klíče, vytvářejí bezpečnostní rizika a komplikace. Další informace o výhodách přechodu na připojení bez hesla najdete v centru služeb Azure.
Následující kurz vysvětluje, jak migrovat existující aplikaci pro připojení pomocí připojení bez hesla. Stejný postup migrace by se měl použít bez ohledu na to, jestli používáte přístupové klíče, připojovací řetězec nebo jiný přístup založený na tajných klíčích.
Konfigurace místního vývojového prostředí
Připojení bez hesla je možné nakonfigurovat tak, aby fungovala pro místní prostředí i prostředí hostovaná v Azure. V této části použijete konfigurace, které jednotlivým uživatelům umožní ověřovat se ve službě Azure Event Hubs pro místní vývoj.
Přiřazování rolí uživatelů
Při místním vývoji se ujistěte, že uživatelský účet, který přistupuje ke službě Azure Event Hubs, má správná oprávnění. K čtení a zápisu dat budete potřebovat roli příjemce dat služby Azure Event Hubs a odesílatele dat služby Azure Event Hubs. Abyste mohli tuto roli přiřadit sami sobě, musíte mít přiřazenou roli Správce uživatelských přístupů nebo jinou roli, která zahrnuje akci Microsoft.Authorization/roleAssignments/write . Role Azure RBAC můžete uživateli přiřadit pomocí webu Azure Portal, Azure CLI nebo Azure PowerShellu. Další informace o dostupných oborech pro přiřazení rolí najdete na stránce přehledu oboru.
Následující příklad přiřadí roli odesílatele dat služby Azure Event Hubs a roli Příjemce dat služby Azure Event Hubs k vašemu uživatelskému účtu. Tato role uděluje přístup ke zprávám centra událostí pro čtení a zápis.
Na webu Azure Portal vyhledejte centrum událostí pomocí hlavního panelu hledání nebo levé navigace.
Na stránce přehledu centra událostí v nabídce vlevo vyberte Řízení přístupu (IAM ).
Na stránce Řízení přístupu (IAM) vyberte kartu Přiřazení rolí.
V horní nabídce vyberte + Přidat a potom přidejte přiřazení role z výsledné rozevírací nabídky.
Pomocí vyhledávacího pole vyfiltrujte výsledky podle požadované role. V tomto příkladu vyhledejte odesílatele dat služby Azure Event Hubs a vyberte odpovídající výsledek a pak zvolte Další.
V části Přiřadit přístup vyberte Uživatel, skupina nebo instanční objekt a pak zvolte + Vybrat členy.
V dialogovém okně vyhledejte své uživatelské jméno Microsoft Entra (obvykle vaše user@domain e-mailová adresa) a pak v dolní části dialogového okna zvolte Vybrat .
Vyberte Zkontrolovat a přiřadit přejděte na poslední stránku a pak proces dokončete opětovnou kontrolou a přiřazením .
Opakujte tento postup pro roli příjemce dat služby Azure Event Hubs, aby účet mohl odesílat a přijímat zprávy.
Pokud chcete přiřadit roli na úrovni prostředku pomocí Azure CLI, musíte nejprve pomocí příkazu načíst ID az eventhubs eventhub show prostředku. Výstupní vlastnosti můžete filtrovat pomocí parametru --query .
az eventhubs eventhub show \
--resource-group '<your-resource-group-name>' \
--namespace-name '<your-event-hubs-namespace>' \
--name '<your-event-hub-name>' \
--query id
Zkopírujte výstup Id z předchozího příkazu. Role pak můžete přiřadit příkazem az role v Azure CLI.
az role assignment create --assignee "<user@domain>" \
--role "Azure Event Hubs Data Receiver" \
--scope "<your-resource-id>"
az role assignment create --assignee "<user@domain>" \
--role "Azure Event Hubs Data Sender" \
--scope "<your-resource-id>"
Pokud chcete přiřadit roli na úrovni prostředku pomocí Azure PowerShellu, musíte nejprve pomocí příkazu načíst ID Get-AzResource prostředku.
Ve většině případů bude trvat minutu nebo dvě, než se přiřazení role rozšíří v Azure, ale ve výjimečných případech může trvat až osm minut. Pokud při prvním spuštění kódu dojde k chybám ověřování, chvíli počkejte a zkuste to znovu.
Místní přihlášení k Azure
V případě místního vývoje se ujistěte, že jste ověřeni pomocí stejného účtu Microsoft Entra, ke kterému jste přiřadili roli. Ověřování můžete provést prostřednictvím oblíbených vývojových nástrojů, jako je Azure CLI nebo Azure PowerShell. Vývojové nástroje, pomocí kterých se můžete ověřovat, se liší v různých jazycích.
Přihlaste se k Azure přes Azure CLI pomocí následujícího příkazu:
az login
V pravém horním rohu sady Visual Studio vyberte tlačítko Přihlásit se.
Přihlaste se pomocí účtu Microsoft Entra, kterému jste přiřadili roli dříve.
Abyste mohli pracovat pomocí DefaultAzureCredential editoru Visual Studio Code, budete muset nainstalovat Azure CLI.
V hlavní nabídce editoru Visual Studio Code přejděte do terminálu > Nový terminál.
Přihlaste se k Azure přes Azure CLI pomocí následujícího příkazu:
az login
Přihlaste se k Azure pomocí PowerShellu pomocí následujícího příkazu:
Connect-AzAccount
Aktualizace kódu aplikace tak, aby používala připojení bez hesla
Klientská knihovna Azure Identity pro každý z následujících ekosystémů poskytuje DefaultAzureCredential třídu, která zpracovává ověřování bez hesla do Azure:
DefaultAzureCredential podporuje více metod ověřování. Metoda, která se má použít, je určena za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí. Podívejte se na předchozí odkazy pro pořadí a umístění, ve kterých DefaultAzureCredential se hledají přihlašovací údaje.
Pokud chcete použít DefaultAzureCredential v aplikaci .NET, nainstalujte Azure.Identity balíček:
dotnet add package Azure.Identity
Do horní části souboru přidejte následující kód:
using Azure.Identity;
Identifikujte umístění v kódu, která vytvoří EventHubProducerClient objekt pro EventProcessorClient připojení ke službě Azure Event Hubs. Aktualizujte kód tak, aby odpovídal následujícímu příkladu:
Identifikujte umístění v kódu, která vytvoří ProducerClient instanci pro ConsumerClient připojení ke službě Azure Event Hubs. Aktualizujte kód tak, aby odpovídal následujícímu příkladu:
Identifikujte umístění v kódu, která vytvoří EventHubProducerClient objekt pro EventProcessorClient připojení ke službě Azure Event Hubs. Aktualizujte kód tak, aby odpovídal následujícímu příkladu:
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.build();
String eventHubNamespace = "https://" + namespace + ".servicebus.windows.net";
// Event Hubs producer
EventHubProducerClient producerClient = new EventHubClientBuilder()
.credential(eventHubNamespace, eventHubName, credential)
.buildProducerClient();
// Event Hubs processor
EventProcessorClient processorClient = new EventProcessorClientBuilder()
.consumerGroup(consumerGroupName)
.credential(eventHubNamespace, eventHubName, credential)
.checkpointStore(new SampleCheckpointStore())
.processEvent(eventContext -> {
System.out.println(
"Partition ID = " +
eventContext.getPartitionContext().getPartitionId() +
" and sequence number of event = " +
eventContext.getEventData().getSequenceNumber());
})
.processError(errorContext -> {
System.out.println(
"Error occurred while processing events " +
errorContext.getThrowable().getMessage());
})
.buildEventProcessorClient();
Pokud chcete použít DefaultAzureCredential v aplikaci Node.js, nainstalujte @azure/identity balíček:
npm install --save @azure/identity
Do horní části souboru přidejte následující kód:
import { DefaultAzureCredential } from "@azure/identity";
Identifikujte umístění v kódu, která vytvoří EventHubProducerClient objekt pro EventHubConsumerClient připojení ke službě Azure Event Hubs. Aktualizujte kód tak, aby odpovídal následujícímu příkladu:
Pokud chcete balíček použít DefaultAzureCredential v aplikaci v Pythonu, nainstalujte balíček azure-identity :
pip install azure-identity
Do horní části souboru přidejte následující kód:
from azure.identity import DefaultAzureCredential
Identifikujte umístění v kódu, která vytvoří EventHubProducerClient objekt pro EventHubConsumerClient připojení ke službě Azure Event Hubs. Aktualizujte kód tak, aby odpovídal následujícímu příkladu:
Nezapomeňte aktualizovat obor názvů služby Event Hubs v identifikátoru URI vašich EventHubProducerClient objektů nebo EventProcessorClient objektů. Název oboru názvů najdete na stránce přehledu webu Azure Portal.
Místní spuštění aplikace
Po provedení těchto změn kódu spusťte aplikaci místně. Nová konfigurace by měla vyzvednout vaše místní přihlašovací údaje, jako je Azure CLI, Visual Studio nebo IntelliJ. Role, které jste přiřadili uživateli v Azure, umožňují vaší aplikaci připojit se ke službě Azure místně.
Konfigurace hostitelského prostředí Azure
Jakmile je vaše aplikace nakonfigurovaná tak, aby používala připojení bez hesla a běží místně, může se stejný kód po nasazení do Azure ověřit ve službách Azure. Následující části vysvětlují, jak nakonfigurovat nasazenou aplikaci pro připojení ke službě Azure Event Hubs pomocí spravované identity. Spravované identity nabízejí ve službě Microsoft Entra ID automaticky spravované identity aplikací používaných při připojování k prostředkům, které podporují ověřování službou Microsoft Entra. Další informace o spravovaných identitách:
Spravovanou identitu přiřazenou uživatelem můžete vytvořit pomocí webu Azure Portal nebo Azure CLI. Vaše aplikace používá identitu k ověření v jiných službách.
az identity create --name MigrationIdentity --resource-group <your-resource-group>
Přidružení spravované identity k webové aplikaci
Musíte nakonfigurovat webovou aplikaci tak, aby používala spravovanou identitu, kterou jste vytvořili. Přiřaďte identitu k aplikaci pomocí webu Azure Portal nebo Azure CLI.
Vyberte předplatné, které jste použili dříve k vytvoření identity.
Vyhledejte migrationIdentity podle názvu a vyberte ji z výsledků hledání.
Vyberte Přidat a přidružte identitu k vaší aplikaci.
Pomocí následujících příkazů Azure CLI přidružte identitu k vaší aplikaci:
Načtěte ID spravované identity, kterou jste vytvořili pomocí příkazu az identity show . Zkopírujte výstupní hodnotu, kterou chcete použít v dalším kroku.
az identity show --name MigrationIdentity -g <your-identity-resource-group-name> --query id
az vm identity assign \
--resource-group <resource-group-name> \
--name <virtual-machine-name>
--identities <managed-identity-id>
Spravovanou identitu můžete přiřadit k instanci služby Azure Kubernetes Service (AKS) pomocí příkazu az aks update .
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--enable-managed-identity \
--assign-identity <managed-identity-id> \
--assign-kubelet-identity <managed-identity-id>
Konektor služby můžete použít k vytvoření připojení mezi výpočetním prostředím Azure a cílovou službou pomocí Azure CLI. Příkazy rozhraní příkazového řádku konektoru služby automaticky přiřazují vaší identitě správnou roli. Další informace o konektoru služby a o podporovaných scénářích najdete na stránce přehledu.
Načtěte ID klienta spravované identity, kterou jste vytvořili pomocí az identity show příkazu. Zkopírujte hodnotu pro pozdější použití.
az identity show \
--name MigrationIdentity \
--resource-group <your-resource-group> \
--query clientId
K navázání připojení služby použijte příslušný příkaz rozhraní příkazového řádku:
Dále musíte udělit oprávnění spravované identitě, kterou jste vytvořili pro přístup k centru událostí. Udělte oprávnění přiřazením role spravované identitě stejně jako u místního vývojového uživatele.
Přejděte na stránku přehledu centra událostí a v levém navigačním panelu vyberte Řízení přístupu (IAM ).
Zvolte Přidat přiřazení role.
Ve vyhledávacím poli role vyhledejte odesílatele dat služby Azure Event Hubs, což je běžná role používaná ke správě operací s daty pro fronty. Můžete přiřadit libovolnou roli, která je vhodná pro váš případ použití. V seznamu vyberte odesílatele dat služby Azure Event Hubs a zvolte Další.
Na obrazovce Přidat přiřazení role jako možnost Přiřadit přístup vyberte Spravovaná identita. Pak zvolte +Vybrat členy.
V informačním rámečku vyhledejte spravovanou identitu, kterou jste vytvořili podle názvu, a vyberte ji z výsledků. Výběrem možnosti Vybrat zavřete rozevírací nabídku.
Vyberte Další několikrát, dokud nebudete moct vybrat Zkontrolovat a přiřadit, abyste dokončili přiřazení role.
Opakujte tento postup pro roli příjemce dat centra událostí Azure.
Pokud chcete přiřadit roli na úrovni prostředku pomocí Azure CLI, musíte nejprve načíst ID prostředku pomocí az eventhubs eventhub show příkazu show. Výstupní vlastnosti můžete filtrovat pomocí parametru --query .
az eventhubs eventhub show \
--resource-group '<your-resource-group-name>' \
--namespace-name '<your-event-hubs-namespace>' \
--name '<your-event-hub-name>' \
--query id
Zkopírujte ID výstupu z předchozího příkazu. Role pak můžete přiřadit pomocí příkazu az role assignment v Azure CLI.
az role assignment create --assignee "<user@domain>" \
--role "Azure Event Hubs Data Receiver" \
--scope "<your-resource-id>"
az role assignment create --assignee "<user@domain>" \
--role "Azure Event Hubs Data Sender" \
--scope "<your-resource-id>"
Pokud jste služby připojili pomocí konektoru Service Connector, nemusíte tento krok dokončit. Potřebné konfigurace rolí byly zpracovány za vás při spuštění příkazů rozhraní příkazového řádku konektoru služby.
Aktualizace kódu aplikace
Musíte nakonfigurovat kód aplikace tak, aby hledal konkrétní spravovanou identitu, kterou jste vytvořili při nasazení do Azure. V některých scénářích explicitně nastavíte spravovanou identitu aplikace, aby se zabránilo náhodnému zjištění a použití jiných identit prostředí.
Na stránce přehledu spravované identity zkopírujte hodnotu ID klienta do schránky.
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.managedIdentityClientId(managedIdentityClientId)
.build();
Vytvořte DefaultAzureCredentialClientIdOptions objekt s vlastností managedIdentityClientId nastavenou na ID klienta. Předejte tento objekt konstruktoru DefaultAzureCredential .
const credential = new DefaultAzureCredential({
managedIdentityClientId
});
DefaultAzureCredential Nastavte parametr managed_identity_client_id konstruktoru na ID klienta.
Po provedení této změny znovu nasaďte kód do Azure, aby se aktualizace konfigurace použily.
Otestování aplikace
Po nasazení aktualizovaného kódu přejděte do hostované aplikace v prohlížeči. Vaše aplikace by se měla úspěšně připojit k centru událostí. Mějte na paměti, že rozšíření přiřazení rolí v prostředí Azure může trvat několik minut. Vaše aplikace je teď nakonfigurovaná tak, aby běžela místně i v produkčním prostředí, aniž by vývojáři museli spravovat tajné kódy v samotné aplikaci.
Další kroky
V tomto kurzu jste zjistili, jak migrovat aplikaci na připojení bez hesla.
Podrobnější informace o konceptech probíraných v tomto článku najdete v následujících zdrojích informací: