Události
Vytváření inteligentních aplikací
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Tento článek vysvětluje, jak migrovat z tradičních metod ověřování na bezpečnější připojení bez hesla pomocí Služby Azure Database for PostgreSQL.
Žádosti o aplikace do služby Azure Database for PostgreSQL musí být ověřeny. Azure Database for PostgreSQL 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.
Když se aplikace ověří ve službě Azure Database for PostgreSQL, poskytne pár uživatelského jména a hesla pro připojení databáze. 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í PostgreSQL.
Ověřování Microsoft Entra je mechanismus pro připojení ke službě Azure Database for PostgreSQL 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:
V PostgreSQL můžete vytvářet účty. Pokud se rozhodnete používat hesla jako přihlašovací údaje pro účty, budou tyto přihlašovací údaje uloženy v user
tabulce. Vzhledem k tomu, že tato hesla jsou uložená v PostgreSQL, musíte spravovat rotaci hesel sami.
I když se můžete připojit ke službě Azure Database for PostgreSQL pomocí hesel, měli byste je používat opatrně. Musíte být usilovní, 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. Existuje například riziko, že uživatel se zlými úmysly může získat přístup k aplikaci, pokud se připojovací řetězec omylem přihlásí ke správě zdrojového kódu, odešle se prostřednictvím nezabezpečeného e-mailu, vloží do nesprávného chatu nebo ho někdo, kdo by neměl mít oprávnění. Místo toho zvažte aktualizaci aplikace tak, aby používala 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ězec.
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. Pokud například pracujete místně, bude se obecně ověřovat pomocí účtu, DefaultAzureCredential
který vývojář použil k přihlášení k sadě Visual Studio. 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 se připojovací řetězec vyžaduje na jiném místě, aplikace není bez hesla.
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 nebo rotovali tajné kódy. Další informace o spravovaných identitách najdete v přehledové dokumentaci.
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.
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 AZ_POSTGRESQL_AD_NON_ADMIN_USERNAME=<YOUR_AZURE_AD_NON_ADMIN_USER_DISPLAY_NAME>
export AZ_LOCAL_IP_ADDRESS=<YOUR_LOCAL_IP_ADDRESS>
export CURRENT_USERNAME=$(az ad signed-in-user show --query userPrincipalName --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ů, ve které jsou vaše prostředky.<YOUR_DATABASE_SERVER_NAME>
: Název serveru PostgreSQL. Měl by být jedinečný v rámci Azure.<YOUR_AZURE_AD_NON_ADMIN_USER_DISPLAY_NAME>
: Zobrazované jméno uživatele Microsoft Entra, který není správcem. Ujistěte se, že je jméno platným uživatelem ve vašem tenantovi Microsoft Entra.<YOUR_LOCAL_IP_ADDRESS>
: IP adresa místního počítače, ze kterého spustíte aplikaci Spring Boot. Jedním z pohodlných způsobů, jak ji najít, je otevřít whatismyip.akamai.com.Pokud chcete s Azure Database for PostgreSQL používat přístup k ID Microsoft Entra, měli byste nejprve nastavit uživatele správce Microsoft Entra. Pouze uživatel Microsoft Entra Admin může vytvářet nebo povolovat uživatele pro ověřování založené na ID Microsoft Entra.
Pokud chcete po vytvoření serveru nastavit správce Microsoft Entra, postupujte podle pokynů v tématu Správa rolí Microsoft Entra na flexibilním serveru Azure Database for PostgreSQL.
Poznámka
Flexibilní server PostgreSQL může vytvořit více správců Microsoft Entra.
Instance Azure Database for PostgreSQL jsou ve výchozím nastavení zabezpečené. Obsahuje bránu firewall, která nepovoluje žádné příchozí připojení. Abyste mohli databázi používat, musíte přidat pravidlo brány firewall, které umožní přístup k databázovému serveru místní IP adresou.
Vzhledem k tomu, že jste na začátku tohoto článku nakonfigurovali místní IP adresu, můžete bránu firewall serveru otevřít spuštěním následujícího příkazu:
az postgres flexible-server firewall-rule create \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_DATABASE_SERVER_NAME \
--rule-name $AZ_DATABASE_SERVER_NAME-database-allow-local-ip \
--start-ip-address $AZ_LOCAL_IP_ADDRESS \
--end-ip-address $AZ_LOCAL_IP_ADDRESS \
--output tsv
Pokud se připojujete k serveru PostgreSQL z Subsystém Windows pro Linux (WSL) na počítači s Windows, musíte do brány firewall přidat ID hostitele WSL.
Získejte IP adresu hostitelského počítače spuštěním následujícího příkazu ve WSL:
cat /etc/resolv.conf
Zkopírujte IP adresu za termínem nameserver
a pak pomocí následujícího příkazu nastavte proměnnou prostředí pro IP adresu WSL:
export AZ_WSL_IP_ADDRESS=<the-copied-IP-address>
Pak pomocí následujícího příkazu otevřete bránu firewall serveru pro vaši aplikaci založenou na WSL:
az postgres flexible-server firewall-rule create \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_DATABASE_SERVER_NAME \
--rule-name $AZ_DATABASE_SERVER_NAME-database-allow-local-ip \
--start-ip-address $AZ_WSL_IP_ADDRESS \
--end-ip-address $AZ_WSL_IP_ADDRESS \
--output tsv
Dále vytvořte uživatele Microsoft Entra, který není správcem, a udělte mu všechna oprávnění k $AZ_DATABASE_NAME
databázi. Název $AZ_DATABASE_NAME
databáze můžete změnit tak, aby vyhovoval vašim potřebám.
Vytvořte skript SQL s názvem create_ad_user_local.sql pro vytvoření uživatele bez oprávnění správce. Přidejte následující obsah a uložte ho místně:
cat << EOF > create_ad_user_local.sql
select * from pgaadauth_create_principal('$AZ_POSTGRESQL_AD_NON_ADMIN_USERNAME', false, false);
EOF
Potom pomocí následujícího příkazu spusťte skript SQL a vytvořte uživatele Microsoft Entra bez oprávnění správce:
psql "host=$AZ_DATABASE_SERVER_NAME.postgres.database.azure.com user=$CURRENT_USERNAME dbname=postgres port=5432 password=$(az account get-access-token --resource-type oss-rdbms --output tsv --query accessToken) sslmode=require" < create_ad_user_local.sql
Teď pomocí následujícího příkazu odeberte dočasný soubor skriptu SQL:
rm create_ad_user_local.sql
Poznámka
Podrobnější informace o vytváření uživatelů PostgreSQL najdete v tématu Vytváření uživatelů ve službě Azure Database for PostgreSQL.
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 ve službě PostgreSQL. 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.
Přihlaste se k Azure přes Azure CLI pomocí následujícího příkazu:
az login
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-extensions
. Tato knihovna obsahuje všechny entity potřebné k implementaci připojení bez hesla.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity-extensions</artifactId>
<version>1.0.0</version>
</dependency>
Povolte ověřovací modul plug-in Azure PostgreSQL v adrese URL JDBC. Identifikujte umístění v kódu, která aktuálně vytvářejí připojení ke službě java.sql.Connection
Azure Database for PostgreSQL. Aktualizujte url
soubor application.properties a user
v souboru application.properties tak, aby odpovídaly následujícím hodnotám:
url=jdbc:postgresql://$AZ_DATABASE_SERVER_NAME.postgres.database.azure.com:5432/$AZ_DATABASE_NAME?sslmode=require&authenticationPluginClassName=com.azure.identity.extensions.jdbc.postgresql.AzurePostgresqlAuthenticationPlugin
user=$AZ_POSTGRESQL_AD_NON_ADMIN_USERNAME
$AZ_POSTGRESQL_AD_NON_ADMIN_USERNAME
Nahraďte dvě $AZ_DATABASE_SERVER_NAME
proměnné hodnotou, kterou jste nakonfigurovali na začátku tohoto článku.
Po provedení těchto změn kódu spusťte aplikaci místně. Pokud jste přihlášení k kompatibilnímu integrovanému vývojovému prostředí nebo nástroji příkazového řádku, jako je Azure CLI, Visual Studio nebo IntelliJ, měla by nová konfigurace vyzvednout vaše místní přihlašovací údaje. 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ě.
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. Například aplikace nasazená do instance služby Aplikace Azure, 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í spouštět v hostitelském prostředí Azure bez hesla:
Poznámka
Azure také poskytuje konektor Service Connector, který vám může pomoct připojit hostující službu s PostgreSQL. Pomocí konektoru Service Connector ke konfiguraci hostitelského prostředí můžete vynechat krok přiřazování rolí spravované identitě, protože konektor služby to udě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šší.
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 Aplikace Azure vyberte v navigačním podokně identitu.
Na kartě Přiřazený systém nezapomeňte nastavit pole Stav na 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 instanci služby Aplikace Azure 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)
Dále udělte oprávnění spravované identitě, kterou jste přiřadili pro přístup k vaší instanci PostgreSQL.
Pokud jste služby připojili pomocí konektoru Service Connector, příkazy předchozího kroku už roli přiřadily, abyste tento krok mohli přeskočit.
Před nasazením aplikace do hostitelského prostředí je potřeba provést další změnu kódu, protože se aplikace bude připojovat k PostgreSQL pomocí uživatele vytvořeného pro spravovanou identitu.
Aktualizujte kód tak, aby používal uživatele vytvořeného pro spravovanou identitu:
Poznámka
Pokud jste použili příkaz Konektor služby, přeskočte tento krok.
properties.put("user", "$AZ_POSTGRESQL_AD_MI_USERNAME");
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 PostgreSQL. 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.
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í:
Události
Vytváření inteligentních aplikací
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatŠkolení
Postup výuky
Konfigurace a migrace do Azure Database for PostgreSQL DP-3021 - Training
Azure Database for PostgreSQL je databázová služba platforma jako služba v cloudu Microsoftu. Zakládá se na opensourcové relační databázi PostgreSQL a zahrnuje integrovanou vysokou dostupnost, automatické zálohování a obnovení a také komplexní funkce zabezpečení. Cenový model průběžných plateb poskytuje předvídatelný výkon a téměř okamžité škálování. V tomto studijním programu se seznámíte s hlavními funkcemi PostgreSQL a s tím, jak fungují ve službě Azure Database for PostgreSQL. Dozvíte se o různých možno
Certifikace
Microsoft Certified: Přidružení správce služby Azure Database - Certifications
Správa infrastruktury databáze SQL Serveru pro cloudové, místní a hybridní relační databáze pomocí nabídek relačních databází Microsoft PaaS.