Připojení bez hesla pro služby Azure
Poznámka:
Připojení bez hesla jsou funkce nezávislá na jazyce, která využívá více služeb Azure. I když se aktuální dokumentace zaměřuje na několik jazyků a služeb, právě probíhá vytváření další dokumentace pro další jazyky a služby.
Tento článek popisuje výzvy zabezpečení s hesly a zavádí připojení bez hesla pro služby Azure.
Problémy se zabezpečením s hesly a tajnými kódy
Hesla a tajné klíče by se měly používat opatrně a vývojáři je nesmí nikdy umístit do nezabezpečeného umístění. Mnoho aplikací se připojuje k back-endové databázi, mezipaměti, zasílání zpráv a službám událostí pomocí uživatelských jmen, hesel a přístupových klíčů. Pokud jsou tyto přihlašovací údaje zpřístupněny, můžete je použít k získání neoprávněného přístupu k citlivým informacím, jako je katalog prodeje, který jste vytvořili pro nadcházející kampaň, nebo zákaznická data, která musí být soukromá.
Vkládání hesel do samotné aplikace představuje obrovské bezpečnostní riziko z mnoha důvodů, včetně zjišťování prostřednictvím úložiště kódu. Mnoho vývojářů tato hesla externalizuje pomocí proměnných prostředí, aby je aplikace mohly načíst z různých prostředí. Tím se ale riziko přesune jenom od samotného kódu do spouštěcího prostředí. Každý, kdo získá přístup k prostředí, může ukrást hesla, což zase zvyšuje riziko exfiltrace dat.
Následující příklad kódu ukazuje, jak se připojit ke službě Azure Storage pomocí klíče účtu úložiště. Ř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, i když to není ideální řešení. Pokud vaše aplikace aktuálně používá přístupové klíče, zvažte migraci na připojení bez hesla.
// Connection using secret access keys
BlobServiceClient blobServiceClient = new(
new Uri("https://<storage-account-name>.blob.core.windows.net"),
new StorageSharedKeyCredential("<storage-account-name>", "<your-access-key>"));
Vývojáři musí být usilovní, aby tyto typy klíčů nebo tajných kódů nikdy nezpřístupnili v nezabezpečeném umístění. Mnoho společností má přísné požadavky na zabezpečení pro připojení ke službám Azure bez vystavení hesel vývojářům, operátorům nebo komukoli jinému. Často používají trezor k ukládání a načítání hesel do aplikací a dále snižují riziko přidáním požadavků a postupů obměny hesel. Tento přístup zase zvyšuje provozní složitost a občas vede k výpadkům připojení aplikací.
Připojení bez hesla a nulová důvěra (Zero Trust)
Teď můžete ve svých aplikacích používat připojení bez hesla k připojení ke službám založeným na Azure, aniž byste museli obměňovat hesla. V některých případech je vše, co potřebujete, konfigurace – nevyžaduje se žádný nový kód. nulová důvěra (Zero Trust) používá princip "never trust, always verify, and credential-free". To znamená zabezpečení veškeré komunikace tím, že důvěřujete počítačům nebo uživatelům až po ověření identity a před udělením přístupu k back-endovým službám.
Doporučenou možností ověřování pro zabezpečená připojení bez hesla je použití spravovaných identit a řízení přístupu na základě role v Azure (RBAC) v kombinaci. Díky tomuto přístupu nemusíte ručně sledovat a spravovat mnoho různých tajných kódů pro spravované identity, protože tyto úlohy jsou bezpečně zpracovávány interně v Azure.
Připojení bez hesla ke službám Azure můžete nakonfigurovat pomocí služby Service Připojení or nebo je můžete nakonfigurovat ručně. Service Připojení or umožňuje spravované identity v hostitelských službách aplikací, jako jsou Azure Spring Apps, Aplikace Azure Service a Azure Container Apps. Služba Připojení or také konfiguruje back-endové služby s připojeními bez hesla pomocí spravovaných identit a Azure RBAC a hydratuje aplikace s potřebnými informacemi o připojení.
Pokud zkontrolujete spuštěné prostředí aplikace nakonfigurované pro připojení bez hesla, zobrazí se úplná připojovací řetězec. Připojovací řetězec má například adresu databázového serveru, název databáze a pokyn k delegování ověřování na modul plug-in ověřování Azure, ale neobsahuje žádná hesla ani tajné kódy.
Následující video ukazuje připojení bez hesel z aplikací ke službám Azure s využitím aplikací v Javě jako příklad. Podobné pokrytí pro ostatní jazyky je připravované.
Představujeme DefaultAzureCredential
Připojení ke službám Azure bez hesla prostřednictvím Microsoft Entra ID a řízení přístupu na základě role (RBAC) je možné implementovat pomocí DefaultAzureCredential
klientských knihoven identit Azure.
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, se liší 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. Identita je spravovaná platformou Azure a nevyžaduje zřízení nebo obměně tajných kódů. 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ší dokumentace 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.
ServiceBusClient serviceBusClient = new(
new Uri("https://<your-service-bus-namespace>.blob.core.windows.net"),
new DefaultAzureCredential());
Viz také
Podrobnější vysvětlení připojení bez hesel najdete v průvodci vývojářem Konfigurace připojení bez hesel mezi několika aplikacemi a službami Azure.