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 ukazuje, jak nakonfigurovat nastavení zabezpečení specifická pro Javu v App Service. Java aplikace spuštěné v App Service mají stejný soubor osvědčených bezpečnostních postupů jako jiné aplikace.
Azure App Service provozuje webové aplikace Java ve zcela spravované službě ve třech variantách.
- Java Standard Edition (SE): Může spustit aplikaci nasazenou jako balíček Java Archive (JAR), který obsahuje vložený server (například Spring Boot, Quarkus, Dropwizard nebo aplikaci s vloženým serverem Tomcat nebo Jetty).
- Tomcat: Integrovaný server Tomcat může spustit aplikaci nasazenou jako balíček archivu webových aplikací (WAR).
- JBoss Enterprise Application Platform (EAP): Integrovaný server JBoss EAP může spustit aplikaci nasazenou jako balíček WAR nebo enterprise archive (EAR). Podporováno pro aplikace pro Linux v sadě cenových úrovní, které zahrnují Free, Premium v3 a Isolated v2.gti.
Poznámka:
JBoss EAP ve službě App Service teď podporuje fakturaci byOL (Bring Your Own License), což zákazníkům se stávajícími předplatnými Red Hat umožňuje použít tyto licence přímo na nasazení EAP JBoss ve službě Azure App Service. Další informace.
Ověřit uživatele (Easy Auth)
Nastavte ověřování aplikace v Azure portálu s možností Ověřování a autorizace. Odtud můžete povolit ověřování pomocí Microsoft Entra ID nebo sociálního přihlášení, jako je Facebook, Google nebo GitHub. Konfigurace portálu Azure funguje pouze při konfiguraci jednoho poskytovatele autentizace. Další informace najdete v tématu Konfigurace aplikace App Service pro použití přihlašování Microsoft Entra a v souvisejících článcích pro jiné poskytovatele identity. Pokud potřebujete povolit více poskytovatelů přihlašování, postupujte podle pokynů v tématu Přizpůsobení přihlášení a odhlášení.
Vývojáři Spring Boot mohou použít Microsoft Entra Spring Boot Starter k zabezpečení aplikací pomocí známých poznámek a rozhraní API Spring Security. Ujistěte se, že zvýšíte maximální velikost hlavičky ve vašem souboru application.properties. Navrhujeme hodnotu 16384.
Vaše aplikace Tomcat může přímo ze servlety přistupovat k nárokům uživatele tím, že přetypuje objekt Principal na objekt Map. Objekt Map mapuje každý typ požadavku na kolekci požadavků pro daný typ. V následujícím příkladu request kódu je instance HttpServletRequest.
Map<String, Collection<String>> map = (Map<String, Collection<String>>) request.getUserPrincipal();
Nyní můžete zkontrolovat objekt Map pro jakékoli konkrétní nároky. Například následující úryvek kódu prochází všechny typy nároků a vypisuje obsah každé kolekce.
for (Object key : map.keySet()) {
Object value = map.get(key);
if (value != null && value instanceof Collection {
Collection claims = (Collection) value;
for (Object claim : claims) {
System.out.println(claims);
}
}
}
K odhlášení uživatelů použijte cestu /.auth/ext/logout. Chcete-li provést další akce, podívejte se na dokumentaci k Přizpůsobení přihlašování a odhlašování. Existuje také oficiální dokumentace k rozhraní HttpServletRequest a jeho metodám. Následující metody servletu jsou také konfigurovány na základě vašeho nastavení App Service.
public boolean isSecure()
public String getRemoteAddr()
public String getRemoteHost()
public String getScheme()
public int getServerPort()
Chcete-li tuto funkci deaktivovat, vytvořte nastavení aplikace pojmenované WEBSITE_AUTH_SKIP_PRINCIPAL s hodnotou 1. Chcete-li zakázat všechny filtrovací moduly servletů přidané službou App Service, vytvořte nastavení pojmenované WEBSITE_SKIP_FILTERS s hodnotou 1.
Pro JBoss EAP se podívejte na kartu Tomcat.
Nakonfigurujte TLS/SSL
Chcete-li nahrát existující certifikát TLS/SSL a navázat jej na název domény vaší aplikace, postupujte podle pokynů v Zařiďte zabezpečení vlastní DNS názvy pomocí vazby TLS/SSL v Azure App Service. Aplikaci můžete také nakonfigurovat tak, aby vynucovala protokol TLS/SSL.
Použití referencí KeyVault
Azure KeyVault poskytuje centralizovanou správu tajemství s přístupovými politikami a historií auditů. Tajné informace (jako hesla nebo řetězce připojení) můžete ukládat v KeyVault a k těmto tajným informacím přistupovat ve své aplikaci prostřednictvím proměnných prostředí.
Nejprve postupujte podle pokynů pro udělení přístupu vaší aplikace k trezoru klíčů a vytvoření odkazu KeyVault na váš tajný klíč v nastavení aplikace. Můžete ověřit, že odkaz vede k tajemství, tím že vytisknete hodnotu proměnné prostředí při dálkovém přístupu k terminálu App Service.
Pro konfigurační soubory Springu si přečtěte tuto dokumentaci o externalizovaných konfiguracích.
Pro pro vložení těchto tajemství do konfiguračního souboru Spring použijte syntaxi pro vložení proměnných prostředí (${MY_ENV_VAR}).
K injektování těchto tajemství do konfiguračního souboru Tomcatu použijte syntaxi injektování proměnných prostředí (${MY_ENV_VAR}).
Použijte úložiště klíčů Java v Linuxu
Ve výchozím nastavení jsou všechny veřejné nebo soukromé certifikáty nahrané do App Service Linux načteny do příslušných úložišť Java klíčů při startu kontejneru. Po nahrání vašeho certifikátu budete muset restartovat svou službu App Service, aby byl načten do úložiště klíčů Java. Veřejné certifikáty jsou načteny do úložiště klíčů na $JRE_HOME/lib/security/cacerts, a soukromé certifikáty jsou uloženy v $JRE_HOME/lib/security/client.jks.
Mohou být nutné další konfigurace pro šifrování vaší JDBC připojení pomocí certifikátů v úložišti klíčů Java. Viz dokumentaci k vámi vybranému JDBC ovladači.
Inicializujte úložiště klíčů Java v Linuxu
Aby bylo možné inicializovat objekt import java.security.KeyStore, je třeba načíst soubor úložiště klíčů s heslem. Výchozí heslo pro oba úložiště klíčů je changeit.
KeyStore keyStore = KeyStore.getInstance("jks");
keyStore.load(
new FileInputStream(System.getenv("JRE_HOME")+"/lib/security/cacerts"),
"changeit".toCharArray());
KeyStore keyStore = KeyStore.getInstance("pkcs12");
keyStore.load(
new FileInputStream(System.getenv("JRE_HOME")+"/lib/security/client.jks"),
"changeit".toCharArray());
Ručně načíst úložiště klíčů v Linuxu
Certifikáty můžete do úložiště klíčů nahrát ručně. Vytvořte nastavení aplikace SKIP_JAVA_KEYSTORE_LOAD s hodnotou 1, aby byla funkce App Service zablokována automatické načítání certifikátů do úložiště klíčů. Všechny veřejné certifikáty nahrané do App Service prostřednictvím portálu Azure jsou uloženy pod /var/ssl/certs/. Soukromé certifikáty jsou uloženy pod /var/ssl/private/.
Můžete interagovat nebo ladit nástroj Java Key Tool otevřením SSH připojení k vaší App Service a spuštěním příkazu . Podívejte se na dokumentaci Key Tool pro seznam příkazů. Pro více informací o KeyStore API se podívejte do oficiální dokumentace.
Související obsah
Navštivte centrum Azure pro vývojáře v Javě, kde najdete rychlé starty Azure, návody a referenční dokumentaci k Javě.