Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje, jak migrovat z tradičních metod ověřování na bezpečnější připojení bez hesel pomocí Azure SQL Database.
Žádosti o aplikace do služby Azure SQL Database musí být ověřeny. Azure SQL Database nabízí několik různých způsobů, jak se aplikace bezpečně připojit. Jedním ze způsobů je použití hesel. Pokud je to však možné, měli byste upřednostnit připojení bez hesla ve vašich aplikacích.
Porovnání možností ověřování
Když se aplikace ověří ve službě Azure SQL Database, poskytne pár uživatelského jména a hesla pro připojení k databázi. V závislosti na tom, kde jsou identity uložené, existují dva typy ověřování: ověřování Microsoft Entra a ověřování Azure SQL Database.
Ověřovací systém Microsoft Entra
Ověřování Microsoft Entra je mechanismus pro připojení ke službě Azure SQL Database pomocí identit definovaných v MICROSOFT Entra ID. Pomocí ověřování Microsoft Entra můžete spravovat identity uživatelů databáze a další služby Microsoft v centrálním umístění, což zjednodušuje správu oprávnění.
Použití ID Microsoft Entra pro ověřování poskytuje následující výhody:
- Jednotné ověřování uživatelů ve službách Azure
- Správa zásad hesel a obměně hesel na jednom místě
- Více forem ověřování, které podporuje ID Microsoft Entra, což může eliminovat potřebu ukládat hesla.
- Zákazníci můžou spravovat oprávnění k databázi pomocí externích skupin (Microsoft Entra ID).
- Ověřování Microsoft Entra používá uživatele databáze Azure SQL k ověřování identit na úrovni databáze.
- Podpora ověřování na základě tokenů pro aplikace připojující se ke službě Azure SQL Database
Ověřování Azure SQL Database
V Azure SQL Database můžete vytvářet účty. Pokud se rozhodnete použít hesla jako přihlašovací údaje pro účty, sys.database_principals tabulka tyto přihlašovací údaje uloží. Vzhledem k tomu, že Azure SQL Database tato hesla ukládá, musíte spravovat obměnu hesel sami.
I když se můžete připojit k Azure SQL Database pomocí hesel, používejte je s opatrností. Buďte opatrní, abyste nikdy nezpřístupnili hesla v nezabezpečeném umístění. Každý, kdo získá přístup k heslům, se může ověřit. Pokud například omylem zkontrolujete připojovací řetězec do správy zdrojového kódu, odešlete ho nezabezpečeným e-mailem, vložíte ho do nesprávného chatu nebo ho zobrazíte někým, kdo by neměl mít oprávnění, může k aplikaci přistupovat škodlivý uživatel. Místo toho zvažte aktualizaci aplikace tak, aby používala připojení bez hesla.
Představujeme připojení bez hesla
S připojením bez hesla se můžete připojit ke službám Azure, aniž byste museli ukládat přihlašovací údaje v kódu aplikace, jeho konfiguračních souborech nebo v proměnných prostředí.
Mnoho služeb Azure podporuje připojení bez hesla, například prostřednictvím spravované identity Azure. Tyto techniky poskytují robustní funkce zabezpečení, které můžete implementovat pomocí DefaultAzureCredential z klientských knihoven identit Azure. V tomto kurzu se dozvíte, jak aktualizovat existující aplikaci tak, aby používala DefaultAzureCredential místo alternativ, jako jsou připojovací řetězce.
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í, v nichž DefaultAzureCredential vyhledává přihlašovací údaje, najdete v přehledu knihovny Azure Identity. Například při práci lokálně se DefaultAzureCredential bude obvykle ověřovat pomocí účtu, který vývojář použil k přihlášení k Visual Studiu. Po nasazení aplikace do Azure DefaultAzureCredential se automaticky přepne na použití spravované identity. Pro tento přechod nejsou vyžadovány žádné změny kódu.
Pokud chcete zajistit, aby připojení byla bez hesla, musíte vzít v úvahu místní vývoj i produkční prostředí. Pokud je na kterémkoli z obou míst vyžadován připojovací řetězec, aplikace není bezheslová.
V místním vývojovém prostředí se můžete ověřit pomocí Azure CLI, Azure PowerShellu, sady Visual Studio nebo modulů plug-in Azure pro Visual Studio Code nebo IntelliJ. V takovém případě můžete místo konfigurace vlastností použít tyto přihlašovací údaje ve vaší aplikaci.
Když nasadíte aplikace do hostitelského prostředí Azure, jako je virtuální počítač, můžete v tomto prostředí přiřadit spravovanou identitu. Pak nebudete muset zadávat přihlašovací údaje pro připojení ke službám Azure.
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 ani střídali jakékoli tajné klíče. Další informace o spravovaných identitách najdete v přehledové dokumentaci.
Poznámka:
Vzhledem k tomu, že ovladač JDBC pro Azure SQL Database zatím nepodporuje připojení bez hesla z místních prostředí, tento článek se zaměřuje pouze na aplikace nasazené do Azure hostitelských prostředí a jejich migraci na používání bez hesel.
Migrace existující aplikace pro použití připojení bez hesla
Následující postup vysvětluje, jak migrovat existující aplikaci tak, aby místo řešení založeného na heslech používala připojení bez hesla.
0) Příprava pracovního prostředí
Nejprve pomocí následujícího příkazu nastavte některé proměnné prostředí.
export AZ_RESOURCE_GROUP=<YOUR_RESOURCE_GROUP>
export AZ_DATABASE_SERVER_NAME=<YOUR_DATABASE_SERVER_NAME>
export AZ_DATABASE_NAME=demo
export CURRENT_USERNAME=$(az ad signed-in-user show --query userPrincipalName --output tsv)
export CURRENT_USER_OBJECTID=$(az ad signed-in-user show --query id --output tsv)
Zástupné symboly nahraďte následujícími hodnotami, které se používají v tomto článku:
-
<YOUR_RESOURCE_GROUP>: Název skupiny prostředků pro vaše prostředky. -
<YOUR_DATABASE_SERVER_NAME>: Název vašeho serveru Azure SQL Database. Měl by být jedinečný v rámci Azure.
1) Konfigurace služby Azure SQL Database
1.1) Povolit ověřování pomocí Microsoft Entra ID
Chcete-li používat přístup Microsoft Entra ID pro Azure SQL Database, nejprve nastavte uživatele správce Microsoft Entra. Pouze uživatel s rolí správce Microsoft Entra může vytvářet nebo povolovat uživatele pro ověřování založené na Microsoft Entra ID.
Pokud používáte Azure CLI, spusťte následující příkaz, abyste měli jistotu, že má dostatečná oprávnění:
az login --scope https://graph.microsoft.com/.default
Potom spuštěním následujícího příkazu nastavte správce Microsoft Entra:
az sql server ad-admin create \
--resource-group $AZ_RESOURCE_GROUP \
--server $AZ_DATABASE_SERVER_NAME \
--display-name $CURRENT_USERNAME \
--object-id $CURRENT_USER_OBJECTID
Tento příkaz nastaví jako správce Microsoft Entra aktuálně přihlášeného uživatele.
Poznámka:
Na server Azure SQL Database můžete vytvořit pouze jednoho správce Microsoft Entra. Výběr jiného správce přepíše existujícího správce Microsoft Entra nakonfigurovaného na serveru.
2) Migrace kódu aplikace pro použití připojení bez hesla
Dále pomocí následujících kroků aktualizujte kód tak, aby používal připojení bez hesla. I když jsou koncepčně podobné, každý jazyk používá různé podrobnosti implementace.
Do projektu přidejte do balíčku následující odkaz
azure-identity. Tato knihovna obsahuje všechny entity potřebné k implementaci připojení bez hesla.<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.5.4</version> </dependency>Povolte ověřování pomocí spravované identity Microsoft Entra v adrese JDBC URL. Najděte místa v kódu, která aktuálně vytvářejí objekt
java.sql.Connectionpro připojení k Azure SQL Database. Aktualizujte kód tak, aby odpovídal následujícímu příkladu:String url = "jdbc:sqlserver://$AZ_DATABASE_SERVER_NAME.database.windows.net:1433;databaseName=$AZ_DATABASE_NAME;authentication=ActiveDirectoryMSI;" Connection con = DriverManager.getConnection(url);Nahraďte dvě
$AZ_DATABASE_SERVER_NAMEproměnné a jednu$AZ_DATABASE_NAMEproměnnou hodnotami, které jste nakonfigurovali na začátku tohoto článku.Z adresy URL JDBC odeberte
userapassword.
3) Konfigurace hostitelského prostředí Azure
Jakmile aplikaci nakonfigurujete tak, aby používala připojení bez hesla, může se stejný kód po nasazení do Azure ověřit u Azure služeb. Například aplikace nasazená do instance služby Azure App Service, která má přiřazenou spravovanou identitu, se může připojit ke službě Azure Storage.
V této části provedete dva kroky, které vaší aplikaci umožní spustit v Azure hostitelském prostředí bez hesla:
- Přiřaďte spravovanou identitu pro hostitelské prostředí Azure.
- Přiřaďte spravované identitě role.
Poznámka:
Azure také poskytuje Service Connector, který vám může pomoci propojit vaši hostitelskou službu s SQL serverem. Pomocí konektoru Service Connector ke konfiguraci hostitelského prostředí můžete vynechat krok přiřazování rolí spravované identitě, protože ho konektor služby dělá za vás. Následující část popisuje, jak nakonfigurovat hostitelské prostředí Azure dvěma způsoby: jedno prostřednictvím konektoru Service Connector a druhé konfigurací každého hostitelského prostředí přímo.
Důležité
Příkazy konektoru služby vyžadují Azure CLI 2.41.0 nebo vyšší.
Přiřazení spravované identity pomocí webu Azure Portal
Následující kroky ukazují, jak přiřadit 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.
Na hlavní stránce přehledu vaší instance služby Azure App Service vyberte v navigačním podokně identitu .
Na kartě Přiřazený systém nezapomeňte nastavit pole Stavna zapnuto. Identitu přiřazenou systémem spravuje Azure interně a zpracovává úlohy správy za vás. Podrobnosti a ID identity se ve vašem kódu nikdy nezpřístupní.
Spravovanou identitu můžete také přiřadit v hostitelském prostředí Azure pomocí Azure CLI.
Spravovanou identitu můžete přiřadit k instanci služby Azure App Service pomocí příkazu az webapp identity assign , jak je znázorněno v následujícím příkladu:
export AZ_MI_OBJECT_ID=$(az webapp identity assign \
--resource-group $AZ_RESOURCE_GROUP \
--name <service-instance-name> \
--query principalId \
--output tsv)
Přiřazení rolí ke spravované identitě
Dále udělte oprávnění spravované identitě, kterou jste vytvořili pro přístup k vaší databázi SQL.
Pokud jste služby připojili pomocí konektoru služby, příkazy v předchozím kroku už roli přiřadily, takže tento krok můžete přeskočit.
Otestování aplikace
Po provedení těchto změn kódu můžete aplikaci sestavit a znovu nasadit. Pak přejděte do hostované aplikace v prohlížeči. Vaše aplikace by se měla úspěšně připojit k databázi Azure SQL. Může trvat několik minut, než se přiřazení rolí projeví ve vašem prostředí Azure. 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í: