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
1
beá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.jks
tö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_LOAD
hogy 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.