Sdílet prostřednictvím


Migrace aplikace pro použití bez hesel pomocí služby Azure Service Bus

Žádosti o aplikace do služby Azure Service Bus musí být ověřeny pomocí přístupových klíčů úč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. V tomto kurzu se dozvíte, jak migrovat z tradičních metod ověřování na bezpečnější připojení bez hesla.

Rizika zabezpečení spojená s přístupovými klíči

Následující příklad kódu ukazuje, jak se připojit ke službě Azure Service Bus pomocí připojovací řetězec, který obsahuje přístupový klíč. Když vytvoříte Service Bus, Azure tyto klíče vygeneruje a připojovací řetězec automaticky. Řada vývojářů se k tomuto řešení přikláněla, protože je obeznámená s možnostmi, se kterými v minulosti spolupracovali. Pokud vaše aplikace aktuálně používá připojovací řetězec, zvažte migraci na připojení bez hesla pomocí kroků popsaných v tomto dokumentu.

await using ServiceBusClient client = new("<CONNECTION-STRING>");

Připojovací řetězce by se měly používat s opatrností. Vývojáři musí být usilovní, aby klíče nikdy nezpřístupnili v nezabezpečeném umístění. Každý, kdo získá přístup ke klíči, se může ověřit. Pokud je například klíč účtu omylem zkontrolován do správy zdrojového kódu, odeslán prostřednictvím nezabezpečeného e-mailu, vloženého do nesprávného chatu nebo zobrazení někým, kdo by neměl mít oprávnění, hrozí riziko, že uživatel se zlými úmysly přistupuje k aplikaci. Místo toho zvažte aktualizaci aplikace tak, aby používala připojení bez hesla.

Migrace na připojení bez hesla

Mnoho služeb Azure podporuje připojení bez hesla prostřednictvím Microsoft Entra ID a řízení přístupu na základě role (RBAC). Tyto techniky poskytují robustní funkce zabezpečení a je možné je implementovat pomocí DefaultAzureCredential klientských knihoven azure Identity.

Důležité

Některé jazyky musí v kódu implementovat DefaultAzureCredential explicitně, zatímco jiné využívají DefaultAzureCredential interně prostřednictvím podkladových modulů plug-in nebo ovladačů.

DefaultAzureCredential podporuje více metod ověřování a automaticky určuje, které metody by se měly používat 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í vývoj a produkční prostředí) bez implementace kódu specifického pro prostředí.

Pořadí a umístění, ve kterých DefaultAzureCredential se hledají přihlašovací údaje, najdete v přehledu knihovny identit Azure a liší se mezi jazyky. Pokud například pracujete místně s .NET, bude se obecně ověřovat pomocí účtu, DefaultAzureCredential který vývojář použil k přihlášení k sadě Visual Studio, Azure CLI nebo Azure PowerShellu. Když se aplikace nasadí do Azure, DefaultAzureCredential automaticky zjistí a použije spravovanou identitu přidružené hostitelské služby, například Aplikace Azure Service. Pro tento přechod nejsou vyžadovány žádné změny kódu.

Poznámka:

Spravovaná identita poskytuje identitu zabezpečení, která představuje aplikaci nebo službu. Identitu spravuje platforma Azure a nevyžaduje, abyste zřizovali nebo rotovali tajné kódy. Další informace o spravovaných identitách najdete v přehledové dokumentaci.

Následující příklad kódu ukazuje, jak se připojit ke službě Service Bus pomocí připojení bez hesla. Další část popisuje, jak migrovat na toto nastavení pro konkrétní službu podrobněji.

Aplikace .NET může předat instanci DefaultAzureCredential do konstruktoru třídy klienta služby. DefaultAzureCredential automaticky zjistí přihlašovací údaje, které jsou v daném prostředí k dispozici.

client = new ServiceBusClient(
    "<NAMESPACE-NAME>.servicebus.windows.net",
    new DefaultAzureCredential());

Postup migrace aplikace pro použití ověřování bez hesla

Následující postup vysvětluje, jak migrovat existující aplikaci, aby místo řešení založeného na klíči používala připojení bez hesla. Nejprve nakonfigurujete místní vývojové prostředí a pak tyto koncepty použijete v hostitelském prostředí aplikace Azure. Stejný postup migrace by se měl použít bez ohledu na to, jestli používáte přístupové klíče přímo nebo prostřednictvím připojovací řetězec.

Konfigurace rolí a uživatelů pro místní ověřování vývoje

Při místním vývoji se ujistěte, že uživatelský účet, který přistupuje ke službě Service Bus, má správná oprávnění. V tomto příkladu použijete roli Vlastník dat služby Azure Service Bus k odesílání a příjmu dat, i když jsou k dispozici i podrobnější role. 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.

V tomto scénáři přiřadíte oprávnění k vašemu uživatelskému účtu omezenému na konkrétní obor názvů služby Service Bus, abyste mohli postupovat podle principu nejnižšího oprávnění. Tento postup poskytuje uživatelům jenom minimální potřebná oprávnění a vytváří bezpečnější produkční prostředí.

Následující příklad přiřadí roli Vlastník dat služby Azure Service Bus k vašemu uživatelskému účtu, což vám umožní odesílat a přijímat data.

Důležité

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.

  1. Na webu Azure Portal najděte obor názvů služby Service Bus pomocí hlavního vyhledávacího panelu nebo levé navigace.

  2. Na stránce přehledu služby Service Bus vyberte v nabídce vlevo řízení přístupu (IAM ).

  3. Na stránce Řízení přístupu (IAM) vyberte kartu Přiřazení rolí.

  4. V horní nabídce vyberte + Přidat a potom přidejte přiřazení role z výsledné rozevírací nabídky.

    Snímek obrazovky znázorňující, jak přiřadit roli

  5. Pomocí vyhledávacího pole vyfiltrujte výsledky podle požadované role. V tomto příkladu vyhledejte vlastníka dat služby Azure Service Bus a vyberte odpovídající výsledek a pak zvolte Další.

  6. V části Přiřadit přístup vyberte Uživatel, skupina nebo instanční objekt a pak zvolte + Vybrat členy.

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

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

Přihlášení a migrace kódu aplikace pro použití připojení bez hesla

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 pro obor názvů služby Service Bus. Ověřování můžete provést prostřednictvím Azure CLI, sady Visual Studio, Azure PowerShellu nebo jiných nástrojů, jako je IntelliJ.

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

Dále aktualizujte kód tak, aby používal připojení bez hesla.

  1. Pokud chcete použít DefaultAzureCredential v aplikaci .NET, nainstalujte Azure.Identity balíček:

    dotnet add package Azure.Identity
    
  2. Do horní části souboru přidejte následující kód:

    using Azure.Identity;
    
  3. Identifikujte kód, který vytvoří objekt pro připojení ke službě ServiceBusClient Azure Service Bus. Aktualizujte kód tak, aby odpovídal následujícímu příkladu:

     var serviceBusNamespace = $"{namespace}.servicebus.windows.net";
     ServiceBusClient client = new(
         serviceBusNamespace,
         new DefaultAzureCredential());
    

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 místnímu vývojovému uživateli v Azure, umožní 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. Aplikace nasazená například do instance služby Aplikace Azure, která má povolenou spravovanou identitu, se může připojit ke službě Azure Service Bus.

Vytvoření spravované identity pomocí webu Azure Portal

Následující kroky ukazují, jak vytvořit spravovanou identitu přiřazenou systémem pro různé služby hostování webů. Spravovaná identita se může bezpečně připojit k jiným službám Azure pomocí konfigurací aplikací, které jste nastavili dříve.

Některá prostředí pro hostování aplikací podporují konektor služby Service Connector, který vám pomůže propojit výpočetní služby Azure s jinými backingovými službami. Service Connector automaticky konfiguruje nastavení sítě a informace o připojení. Další informace o konektoru služby a o podporovaných scénářích najdete na stránce přehledu.

V současné době se podporují následující výpočetní služby:

  • Azure App Service
  • Azure Spring Cloud
  • Azure Container Apps (Preview)

V tomto průvodci migrací použijete App Service, ale postup je podobný pro Azure Spring Apps a Azure Container Apps.

Poznámka:

Azure Spring Apps v současné době podporuje pouze konektor Service Connector s využitím připojovací řetězec.

  1. Na hlavní stránce přehledu služby App Service vyberte v levém navigačním panelu konektor služby.

  2. V horní nabídce vyberte + Vytvořit a otevře se panel Vytvořit připojení . Zadejte následující hodnoty:

    • Typ služby: Zvolte Service Bus.
    • Předplatné: Vyberte předplatné, které chcete použít.
    • Název připojení: Zadejte název připojení, například connector_appservice_servicebus.
    • Typ klienta: Ponechte vybranou výchozí hodnotu nebo zvolte konkrétního klienta, který chcete použít.

    Vyberte Další: Ověřování.

  3. Ujistěte se, že je vybraná spravovaná identita přiřazená systémem (doporučeno) a pak zvolte Další: Sítě.

  4. Ponechte vybrané výchozí hodnoty a pak zvolte Další: Zkontrolovat a vytvořit.

  5. Jakmile Azure ověří nastavení, vyberte Vytvořit.

Konektor služby automaticky vytvoří spravovanou identitu přiřazenou systémem pro službu App Service. Konektor také přiřadí spravovanou identitu roli vlastníka dat služby Azure Service Bus pro vybranou službu Service Bus.

Případně můžete povolit spravovanou identitu také v hostitelském prostředí Azure pomocí Azure CLI.

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. Rozhraní příkazového řádku automaticky zpracovává vytvoření spravované identity a přiřadí správnou roli, jak je vysvětleno v pokynech na portálu.

Pokud používáte službu Aplikace Azure, použijte příkazaz webapp connection:

az webapp connection create servicebus \
    --resource-group <resource-group-name> \
    --name <webapp-name> \
    --target-resource-group <target-resource-group-name> \
    --namespace <target-service-bus-namespace> \
    --system-identity

Pokud používáte Azure Spring Apps, použijte tento az spring connection příkaz:

az spring connection create servicebus \
    --resource-group <resource-group-name> \
    --service <service-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --target-resource-group <target-resource-group> \
    --namespace <target-service-bus-namespace> \
    --system-identity

Pokud používáte Azure Container Apps, použijte tento az containerapp connection příkaz:

az containerapp connection create servicebus \
    --resource-group <resource-group-name> \
    --name <webapp-name> \
    --target-resource-group <target-resource-group-name> \
    --namespace <target-service-bus-namespace> \
    --system-identity

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

Dále musíte udělit oprávnění spravované identitě, kterou jste vytvořili pro přístup ke službě Service Bus. Můžete to provést přiřazením role spravované identitě stejně jako u místního vývojového uživatele.

Pokud jste služby připojili pomocí konektoru služeb, nemusíte tento krok dokončit. Potřebné konfigurace byly zpracovány za vás:

  • Pokud jste při vytváření připojení vybrali spravovanou identitu přiřazenou systémem, vytvořila se pro vaši aplikaci spravovaná identita a přiřadila roli Vlastník dat služby Azure Service Bus ve službě Service Bus.

  • Pokud jste vybrali připojovací řetězec, připojovací řetězec se přidala jako proměnná prostředí aplikace.

Otestování aplikace

Po provedení těchto změn kódu přejděte v prohlížeči do hostované aplikace. Vaše aplikace by se měla úspěšně připojit ke službě Service Bus. 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.