Megosztás a következőn keresztül:


Tomcat-, JBoss- vagy Java SE-alkalmazások biztonságának konfigurálása Azure-alkalmazás Szolgáltatásban

Ez a cikk bemutatja, hogyan konfigurálhat Java-specifikus biztonsági beállításokat az App Service-ben. Az App Service-ben futó Java-alkalmazások biztonsági ajánlott eljárásai megegyeznek a többi alkalmazással.

Azure-alkalmazás szolgáltatás Java-webalkalmazásokat futtat egy teljes körűen felügyelt szolgáltatáson három változatban:

  • Java SE – Futtathat egy JAR-csomagként üzembe helyezett alkalmazást, amely beágyazott kiszolgálót (például Spring Bootot, Dropwizardot, Quarkust vagy beágyazott Tomcat- vagy Jetty-kiszolgálót) tartalmaz.
  • Tomcat – A beépített Tomcat-kiszolgáló futtathat egy WAR-csomagként üzembe helyezett alkalmazást.
  • JBoss EAP – Csak a Prémium v3 és az Izolált v2 tarifacsomagokban támogatott Linux-alkalmazások. A beépített JBoss EAP-kiszolgáló futtathat egy WAR- vagy EAR-csomagként üzembe helyezett alkalmazást.

Feljegyzés

Spring-alkalmazások esetén az Azure Spring Apps használatát javasoljuk. Azonban továbbra is használhatja a Azure-alkalmazás szolgáltatást célként. Tanácsért tekintse meg a Java számítási feladatok célhelyének útmutatását .

Felhasználók hitelesítése (egyszerű hitelesítés)

Alkalmazáshitelesítés beállítása az Azure Portalon a Hitelesítés és engedélyezés beállítással. Innen engedélyezheti a hitelesítést Microsoft Entra-azonosítóval vagy olyan közösségi bejelentkezésekkel, mint a Facebook, a Google vagy a GitHub. Az Azure Portal konfigurációja csak egyetlen hitelesítési szolgáltató konfigurálásakor működik. További információ: Az App Service-alkalmazás konfigurálása a Microsoft Entra-bejelentkezés használatára, valamint a kapcsolódó cikkek más identitásszolgáltatók számára. Ha több bejelentkezési szolgáltatót is engedélyeznie kell, kövesse a bejelentkezések és kijelentkezések testreszabása című témakör utasításait.

A Spring Boot fejlesztői a Microsoft Entra Spring Boot starter használatával biztonságossá tehetik az alkalmazásokat jól ismert Spring Security-széljegyzetek és API-k használatával. Ügyeljen arra, hogy növelje az application.properties fájl maximális fejlécméretét. Azt javasoljuk, hogy értéke 16384.

A Tomcat-alkalmazás közvetlenül a servletből érheti el a felhasználó jogcímeit, ha a Principal objektumot egy Térkép objektumra adhatja. Az Map objektum minden jogcímtípust az adott típusú jogcímek gyűjteményéhez rendel. Az alábbi példakód request egy példánya HttpServletRequest.

Map<String, Collection<String>> map = (Map<String, Collection<String>>) request.getUserPrincipal();

Most már bármilyen jogcímet megvizsgálhat az Map objektumban. A következő kódrészlet például végigfut az összes jogcímtípuson, és kinyomtatja az egyes gyűjtemények tartalmát.

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);
            }
        }
    }

A felhasználók kijelentkezéséhez használja az /.auth/ext/logout elérési utat. Egyéb műveletek végrehajtásához tekintse meg a bejelentkezések és kijelentkezések testreszabásáról szóló dokumentációt. A Tomcat HttpServletRequest felületéről és módszereiről hivatalos dokumentáció is található. A következő servlet-metódusok is hidratálva vannak az App Service konfigurációja alapján:

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

A funkció letiltásához hozzon létre egy olyan alkalmazásbeállítást WEBSITE_AUTH_SKIP_PRINCIPAL , amelynek értéke a 1. Ha le szeretné tiltani az App Service által hozzáadott összes servlet-szűrőt, hozzon létre egy értéket tartalmazó WEBSITE_SKIP_FILTERS 1beállítást.

A JBoss EAP-hoz lásd a Tomcat lapot.

TLS/SSL konfigurálása

Meglévő TLS/SSL-tanúsítvány feltöltéséhez és az alkalmazás tartománynevére való kötéséhez kövesse az egyéni DNS-név biztonságossá tételét TLS/SSL-kötéssel a Azure-alkalmazás szolgáltatásban. Az alkalmazást a TLS/SSL kényszerítésére is konfigurálhatja.

KeyVault-hivatkozások használata

Az Azure KeyVault központi titkos kulcskezelést biztosít hozzáférési szabályzatokkal és naplózási előzményekkel. Titkos kulcsokat (például jelszavakat vagy kapcsolati sztring) tárolhat a KeyVaultban, és környezeti változókon keresztül hozzáférhet ezekhez a titkos kulcsokhoz az alkalmazásban.

Először kövesse azokat az utasításokat , amikor hozzáférést ad az alkalmazásnak egy kulcstartóhoz , és egy KeyVault-hivatkozást készít a titkos kulcsra egy alkalmazásbeállításban. Ellenőrizheti, hogy a hivatkozás feloldja-e a titkos kulcsot a környezeti változó nyomtatásával, miközben távolról hozzáfér az App Service terminálhoz.

A Spring-konfigurációs fájlok esetében tekintse meg ezt a külső konfigurációkkal kapcsolatos dokumentációt.

Ha ezeket a titkos kulcsokat be szeretné szúrni a Spring-konfigurációs fájlba, használja a környezeti változóinjektálási szintaxist (${MY_ENV_VAR}).

Ha ezeket a titkos kulcsokat be szeretné szúrni a Tomcat konfigurációs fájlba, használja a környezeti változóinjektálási szintaxist (${MY_ENV_VAR}).

A Java-kulcstároló használata Linuxon

Alapértelmezés szerint az App Service Linuxra feltöltött nyilvános vagy magántanúsítványok betöltődnek a megfelelő Java-kulcstárolókba a tároló indításakor. A tanúsítvány feltöltése után újra kell indítania az App Service-t ahhoz, hogy betöltse a Java-kulcstárolóba. A nyilvános tanúsítványokat a rendszer betölti a kulcstárolóba a következő helyen $JRE_HOME/lib/security/cacerts: , és a magántanúsítványok tárolása a következő helyen $JRE_HOME/lib/security/client.jkstörténik: .

További konfigurációra lehet szükség a JDBC-kapcsolatnak a Java-kulcstárolóban lévő tanúsítványokkal való titkosításához. Tekintse meg a kiválasztott JDBC-illesztőprogram dokumentációját.

A Java-kulcstároló inicializálása Linuxon

Az import java.security.KeyStore objektum inicializálásához töltse be a kulcstárfájlt a jelszóval. Mindkét kulcstároló alapértelmezett jelszava a következő 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());

A kulcstároló manuális betöltése Linuxon

A tanúsítványokat manuálisan is betöltheti a kulcstárolóba. Hozzon létre egy alkalmazásbeállítást, amelynek az az értéke, SKIP_JAVA_KEYSTORE_LOADhogy az App Service automatikusan betöltse 1 a tanúsítványokat a kulcstárolóba. Az App Service-be az Azure Portalon keresztül feltöltött összes nyilvános tanúsítvány a következő helyen /var/ssl/certs/található: . A magántanúsítványok tárolása a következő helyen /var/ssl/private/történik: .

A Java-kulcseszközt úgy használhatja, hogy megnyit egy SSH-kapcsolatot az App Service-hez, és futtatja a parancsot keytool. A parancsok listáját a Kulcseszköz dokumentációjában találja. A KeyStore API-val kapcsolatos további információkért tekintse meg a hivatalos dokumentációt.

Következő lépések

Látogasson el az Azure for Java Fejlesztői központba az Azure rövid útmutatóihoz, oktatóanyagaihoz és Java-referenciadokumentációihoz.