Sdílet prostřednictvím


Konfigurace zabezpečení pro aplikaci Tomcat, JBoss nebo Java SE ve službě Aplikace Azure Service

Tento článek ukazuje, jak nakonfigurovat nastavení zabezpečení specifické pro Javu ve službě App Service. Aplikace v Javě spuštěné ve službě App Service mají stejnou sadu osvědčených postupů zabezpečení jako jiné aplikace.

Aplikace Azure Služba spouští webové aplikace Java v plně spravované službě ve třech variantách:

  • Java SE – Může spustit aplikaci nasazenou jako balíček JAR, který obsahuje vložený server (například Spring Boot, Dropwizard, Quarkus nebo jeden s vloženým serverem Tomcat nebo Jetty).
  • Tomcat – Integrovaný server Tomcat může spustit aplikaci nasazenou jako balíček WAR.
  • JBoss EAP – podporuje se pouze pro aplikace s Linuxem v cenových úrovních Premium v3 a Izolované verze 2. Integrovaný server JBoss EAP může spustit aplikaci nasazenou jako balíček WAR nebo EAR.

Poznámka:

Pro aplikace Spring doporučujeme používat Azure Spring Apps. Službu Aplikace Azure však můžete použít jako cíl. Rady najdete v pokynech k cíli úloh v Javě.

Ověřování uživatelů (Easy Auth)

Na webu Azure Portal nastavte ověřování aplikací s možností Ověřování a autorizace . Odtud můžete povolit ověřování pomocí MICROSOFT Entra ID nebo sociálních přihlášení, jako je Facebook, Google nebo GitHub. Konfigurace webu Azure Portal funguje jenom při konfiguraci jednoho zprostředkovatele ověřování. Další informace najdete v tématu Konfigurace aplikace App Service tak, aby používala přihlášení Microsoft Entra a související články pro jiné zprostředkovatele identity. Pokud potřebujete povolit více poskytovatelů přihlašování, postupujte podle pokynů v části Přizpůsobení přihlášení a odhlášení.

Vývojáři Spring Boot můžou pomocí úvodní sady Microsoft Entra Spring Boot zabezpečit aplikace pomocí známých poznámek a rozhraní API Spring Security. Nezapomeňte v souboru application.properties zvětšit maximální velikost záhlaví. Doporučujeme hodnotu 16384.

Aplikace Tomcat má přístup k deklarací identity uživatele přímo ze servletu přetypováním objektu Principal na objekt Map. Objekt Map mapuje každý typ deklarace identity na kolekci deklarací identity pro tento 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();

Teď můžete objekt zkontrolovat Map pro jakoukoli konkrétní deklaraci identity. Například následující fragment kódu iteruje všechny typy deklarací identity a vytiskne 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);
            }
        }
    }

Pokud se chcete odhlásit uživatelům, použijte /.auth/ext/logout cestu. Pokud chcete provést další akce, projděte si dokumentaci k přizpůsobení přihlášení a odhlášení. K dispozici je také oficiální dokumentace k rozhraní Tomcat HttpServletRequest a jeho metod. Následující servletové metody jsou také hydratovány na základě vaší konfigurace služby App Service:

public boolean isSecure()
public String getRemoteAddr()
public String getRemoteHost()
public String getScheme()
public int getServerPort()

Chcete-li tuto funkci zakázat, vytvořte nastavení aplikace s názvem WEBSITE_AUTH_SKIP_PRINCIPAL hodnota 1. Pokud chcete zakázat všechny filtry servletu přidané službou App Service, vytvořte nastavení s názvem WEBSITE_SKIP_FILTERS hodnota 1.

V případě JBoss EAP se podívejte na kartu Tomcat.

Konfigurace protokolu TLS/SSL

Pokud chcete nahrát existující certifikát TLS/SSL a svázat ho s názvem domény vaší aplikace, postupujte podle pokynů v části Zabezpečení vlastního názvu DNS pomocí vazby TLS/SSL ve službě Aplikace Azure Service. Aplikaci můžete také nakonfigurovat tak, aby vynucuje protokol TLS/SSL.

Použití odkazů služby KeyVault

Azure KeyVault poskytuje centralizovanou správu tajných kódů pomocí zásad přístupu a historie auditu. Tajné kódy (například hesla nebo připojovací řetězec) můžete ukládat ve službě KeyVault a přistupovat k těmto tajným kódům ve vaší aplikaci prostřednictvím proměnných prostředí.

Nejprve postupujte podle pokynů pro udělení přístupu aplikace k trezoru klíčů a vytvořte odkaz na keyVault na tajný klíč v nastavení aplikace. Odkaz se dá ověřit tak, že při vzdáleném přístupu k terminálu služby App Service vytisknete proměnnou prostředí.

Informace o konfiguračních souborech Spring najdete v této dokumentaci k externím konfiguracím.

Pokud chcete tyto tajné kódy vložit do konfiguračního souboru Spring, použijte syntaxi injektáže proměnných prostředí (${MY_ENV_VAR}).

Pokud chcete tyto tajné kódy vložit do konfiguračního souboru Tomcat, použijte syntaxi injektáže proměnných prostředí (${MY_ENV_VAR}).

Použití úložiště klíčů Java v Linuxu

Ve výchozím nastavení se všechny veřejné nebo privátní certifikáty nahrané do Služby App Service Linux načtou do příslušných úložišť klíčů Java při spuštění kontejneru. Po nahrání certifikátu budete muset restartovat službu App Service, aby se načetla do úložiště klíčů Java. Veřejné certifikáty jsou načteny do úložiště klíčů v $JRE_HOME/lib/security/cacertsa soukromé certifikáty jsou uloženy v $JRE_HOME/lib/security/client.jks.

Pro šifrování připojení JDBC s certifikáty v úložišti klíčů Java může být potřeba další konfigurace. Projděte si dokumentaci ke zvolenému ovladači JDBC.

Inicializace úložiště klíčů Java v Linuxu

Chcete-li inicializovat import java.security.KeyStore objekt, načtěte soubor úložiště klíčů s heslem. Výchozí heslo pro obě ú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čtení úložiště klíčů v Linuxu

Certifikáty můžete do úložiště klíčů načíst ručně. Vytvořte nastavení aplikace s SKIP_JAVA_KEYSTORE_LOADhodnotou 1 zákazu automatického načítání certifikátů do úložiště klíčů službou App Service. Všechny veřejné certifikáty nahrané do služby App Service prostřednictvím webu Azure Portal se ukládají v části /var/ssl/certs/. Soukromé certifikáty jsou uloženy v rámci /var/ssl/private/.

Nástroj Java Key Tool můžete interagovat nebo ladit otevřením připojení SSH ke službě App Service a spuštěním příkazu keytool. Seznam příkazů najdete v dokumentaci k nástroji Key Tool. Další informace o rozhraní API úložiště klíčů najdete v oficiální dokumentaci.

Další kroky

Navštivte centrum pro vývojáře v Azure pro Javu a najděte referenční dokumentaci k Azure pro rychlý start, kurzy a referenční dokumentaci k Javě.