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ů

Při zpracování hesel a tajných klíčů buďte opatrní. Nikdy je neumisťujte 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íčů. Při zveřejnění můžou bad actors tyto přihlašovací údaje 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í. Tento přístup ale posune riziko pouze 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 k 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 (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 (nulová důvěra (Zero Trust)) používá zásadu "nikdy nedůvěřuj, vždy ověřuj a nepověřovaj". Tento princip 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. Pomocí tohoto přístupu nemusíte ručně sledovat a spravovat mnoho různých tajných kódů pro spravované identity, protože Azure tyto úlohy bezpečně zpracovává interně.

Připojení bez hesla ke službám Azure můžete nakonfigurovat pomocí konektoru služeb nebo je můžete nakonfigurovat ručně. Service Connector umožňuje spravované identity v hostitelských službách aplikací, jako jsou Azure App Service a Azure Container Apps. Service Connector také konfiguruje backendové služby s využitím propojení bez hesla pomocí spravovaných identit a Azure RBAC a aplikacím poskytuje potřebné informace 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

Pomocí klientských knihoven Azure Identity DefaultAzureCredential můžete implementovat bezheslová připojení ke službám Azure prostřednictvím Microsoft Entra ID a řízení přístupu na základě rolí (RBAC).

Důležité

Některé jazyky vyžadují, abyste v kódu explicitně implementovali DefaultAzureCredential , zatímco jiné použí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, kterou metodu použít 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 hledá přihlašovací údaje, se v různých jazycích liší:

Pokud například pracujete místně s .NET, obecně se ověřuje pomocí účtu, DefaultAzureCredential který jste použili k přihlášení k Visual Studio, Azure CLI nebo Azure PowerShell. Když nasadíte aplikaci do Azure, DefaultAzureCredential automaticky zjistí a použije spravovanou identitu přidružené hostitelské služby, například Azure App Service. Pro tento přechod nemusíte provádět žádné změny kódu.

Poznámka:

Spravovaná identita poskytuje identitu zabezpečení, která představuje aplikaci nebo službu. Platforma Azure spravuje identitu a nemusíte zřizovat ani obměňovat tajné kódy. Další informace najdete v dokumentaci k přehledu .

Následující příklad kódu ukazuje, jak se připojit k 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 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>.servicebus.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.