Sdílet prostřednictvím


Připojení bez hesla pro služby Azure

Poznámka:

Připojení bez hesla jsou jazykově nezávislá funkce, která zahrnuje několik služeb Azure. Přestože se aktuální dokumentace zaměřuje na několik jazyků a služeb, v současné době pracujeme na další dokumentaci pro další jazyky a služby.

Tento článek popisuje bezpečnostní problémy s hesly a představuje připojení bez hesla pro služby Azure.

Problémy se zabezpečením hesel a tajných kódů

Hesla a tajné klíče by měly být používány opatrně a vývojáři je nikdy nesmí umisťovat na nezabezpečené místo. 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ě. Mnoho vývojářů tíhne k tomuto řešení, protože se jim zdá, že je obeznámeno s možnostmi, se kterými pracovali v minulosti, i když to není ideální řešení. Pokud vaše aplikace v současné době 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 pečliví, aby nikdy nezveřejnili tyto typy klíčů nebo tajných kódů v nezabezpečeném umístění. Mnoho společností má přísné bezpečnostní požadavky na připojení ke službám Azure, aniž by vývojářům, operátorům nebo komukoli jinému prozradily hesla. Trezor často používají 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ů na střídání hesel. Tento přístup zase zvyšuje provozní složitost a někdy vede k výpadkům připojení aplikací.

Připojení bez hesla a nulová důvěra (Zero Trust)

Ve svých aplikacích se nyní můžete pomocí připojení bez hesla připojit ke službám Azure bez nutnosti obměňovat hesla. V některých případech stačí pouze konfigurace – není vyžadován žádný nový kód. Nulová důvěra (Zero Trust) používá zásadu "nikdy nedůvěřuj, vždy ověřuj a nepověřovaj". To znamená zabezpečit veškerou komunikaci důvěřujícími stroji nebo uživateli až po ověření identity a před tím, než jim bude udělen přístup 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. S tímto přístupem 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ě Azure.

Pomocí konektoru Service Connector můžete nakonfigurovat připojení bez hesla ke službám Azure nebo je můžete nakonfigurovat ručně. Service Connector umožňuje spravované identity v hostitelských službách aplikací, jako jsou Azure Spring Apps, Aplikace Azure Service a Azure Container Apps. Service Connector také konfiguruje back-endové služby s připojeními bez hesla pomocí spravovaných identit a Azure RBAC a hydratuje aplikace potřebnými informacemi o připojení.

Pokud zkontrolujete běžící prostředí aplikace nakonfigurované pro připojení bez hesla, uvidíte úplný připojovací řetězec. Připojovací řetězec nese například adresu databázového serveru, název databáze a instrukce pro delegování ověřování na ověřovací modul plug-in Azure, ale neobsahuje žádná hesla ani tajné kódy.

Následující video znázorňuje připojení bez hesla z aplikací ke službám Azure na příkladu aplikací v Javě. Podobné pokrytí pro další jazyky se chystá.


Představujeme DefaultAzureCredential

Připojení bez hesla ke službám Azure prostřednictvím Microsoft Entra ID a řízení přístupu na základě rolí (RBAC) je možné 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í DefaultAzureCredential vyhledávání přihlašovacích údajů se v různých jazycích liší:

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 spravována platformou Azure a nevyžaduje zřizování ani obměnu 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 podrobněji popisuje, jak přejít na toto nastavení pro konkrétní službu. Aplikace .NET může předat instanci do DefaultAzureCredential 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 hesla najdete v příručce pro vývojáře Konfigurace připojení bez hesla mezi více aplikacemi a službami Azure.