3.5. 보안
elytron 하위 시스템의 JAAS 영역
JBoss EAP 8.0에서는 레거시 보안 하위 시스템이 제거되었습니다. elytron 하위 시스템에서 사용자 지정 로그인 모듈을 계속 사용하려면 새로운 JAAS(Java Authentication and Authorization Service) 보안 영역인 jaas-realm 을 사용합니다.
JAAS-realm 은 JAAS 호환 로그인 모듈만 지원합니다. JAAS에 대한 자세한 내용은 JAAS(Java Authentication and Authorization Service) 참조 가이드를 참조하십시오.
JAAS-realm 은 extendedetBox API를 확장하거나 의존하는 사용자 정의 로그인 모듈을 지원하지 않습니다.
elytron 하위 시스템은 jaas-realm 을 제공하지만 하위 시스템에서 제공하는 다른 기존 보안 영역을 사용하는 것이 좋습니다. 여기에는 jdbc-realm,ldap-realm,token-realm 등이 포함됩니다. aggregate-realm,distributed-realm 또는 failover-realm 을 구성하여 다양한 보안 영역을 결합할 수도 있습니다. 이 중 어느 것도 목적에 적합하지 않은 경우 사용자 정의 보안 영역을 구현하고 사용자 정의 로그인 모듈 대신 사용합니다.
다음은 사용자 정의 보안 영역을 구현하는 대신 jaas-realm 을 사용해야 하는 경우입니다.
-
기존 보안에서
elytron하위 시스템으로 마이그레이션 중이며 이미 사용자 지정 로그인 모듈이 구현되어 있습니다. - 다른 애플리케이션 서버에서 JBoss EAP로 마이그레이션 중이고 이미 로그인 모듈이 구현되어 있습니다.
-
여러 로그인 모듈을 해당 로그인 모듈에 제공되는 다양한 플래그 및 옵션과 결합해야 합니다.
elytron하위 시스템에서 제공된 보안 영역에 대해 이러한 플래그와 옵션을 구성할 수 없습니다.
자세한 내용은 여러 ID 저장소를 사용하여 애플리케이션 보안 및 관리 인터페이스에서 JAAS 영역 생성 을 참조하십시오.
Elytron 및 Elytron 클라이언트에서 여러 인증서 취소 목록 구성
여러 CA(인증 기관)를 사용할 때 elytron 하위 시스템 및 WildFly Elytron 클라이언트에서 여러 인증서 취소 목록(CRL)을 구성할 수 있습니다. trust-manager 의 certificate-revocation-lists 속성에 사용할 CRL 목록을 지정할 수 있습니다.
자세한 내용은 JBoss EAP의 SSL/TLS 구성 가이드의 Elytron에서 인증서 해지 검사 구성을 참조하십시오.
Keycloak SAML 어댑터 기능 팩
Keycloak SAML 어댑터의 아카이브 배포는 더 이상 JBoss EAP에서 제공되지 않습니다. 대신 Keycloak SAML 어댑터 기능 팩을 사용하여 keycloak-saml 하위 시스템 및 관련 구성을 설치할 수 있습니다.
Keycloak SAML 어댑터 기능 팩은 사용 사례에 따라 설치할 수 있는 다음 계층을 제공합니다.
-
keycloak-saml -
keycloak-client-saml -
keycloak-client-saml-ejb
자세한 내용은 JBoss EAP에서 SSO(Single Sign-On) 사용 가이드를 참조하십시오.
기본 OpenID Connect 클라이언트
JBoss EAP는 이제 elytron-oidc-client 하위 시스템에서 OpenID Connect(OIDC)에 대한 기본 지원을 제공합니다. 따라서 이 릴리스에서는 Red Hat build of Keycloak Client Adapter가 제공되지 않습니다. elytron-oidc-client 하위 시스템은 Relying Party(RP) 역할을 합니다. elytron-oidc-client 하위 시스템은 전달자 전용 인증을 지원하며 멀티 테넌시 지원도 제공합니다. 예를 들어 다중 테넌시 지원을 사용하여 여러 Red Hat build of Keycloak 영역에서 애플리케이션에 대한 사용자를 인증할 수 있습니다.
JBoss EAP 네이티브 OIDC 클라이언트는 RP 시작 로그 아웃을 지원하지 않습니다.
elytron-oidc-client 하위 시스템을 사용하여 JBoss EAP에 배포된 애플리케이션 및 OIDC를 사용하여 JBoss EAP 관리 콘솔을 보호할 수 있습니다.
또한 다음 두 경우 모두 서블릿에서 Jakarta Enterprise Cryostat로 OIDC 공급자에서 가져온 보안 ID를 전파할 수 있습니다.
- 서블릿과 자카르타 Enterprise Cryostat는 동일한 배포에 있습니다.
- 서블릿과 자카르타 Enterprise Cryostat는 다양한 배포에 있습니다.
자세한 내용은 JBoss EAP에서 SSO(Single Sign-On) 사용 가이드를 참조하십시오.
해시된 암호에 대한 새로운 해시-encoding 및 hash-charset 속성
hash-charset 및 hash-encoding 특성을 사용하여 elytron 하위 시스템 보안 영역에 저장된 해시된 암호의 문자 세트 및 문자열 형식을 지정할 수 있습니다. 기본 hash-charset 값은 UTF-8 입니다. hash-encoding 값을 base64 또는 16 x로 설정할 수 있습니다. base64 는 properties-realm 을 제외한 모든 영역의 기본값입니다. 16 x가 기본값입니다.
새 속성은 다음 보안 영역에 포함됩니다.
-
filesystem-realm -
jdbc-realm -
ldap-realm -
properties-realm
자세한 내용은 ID 저장소 가이드를 사용하여 애플리케이션 및 관리 인터페이스 보안을 참조하십시오.
Elytron 파일 기반 감사 로그의 새 인코딩 속성
이제 encoding 특성을 사용하여 Elytron에서 파일 기반 감사 로그에 대한 인코딩 을 지정할 수 있습니다. 기본값은 UTF-8 입니다. 다음 값을 사용할 수 있습니다.
-
UTF-8 -
UTF-16BE -
UTF-16LE -
UTF-16 -
US-ASCII -
ISO-8859-1
자세한 내용은 ID 저장소 가이드를 사용하여 애플리케이션 및 관리 인터페이스에서 Elytron 감사 로깅 을 참조하십시오.
SSLv2Hello
JBoss EAP 8.0 Beta부터 elytron 하위 시스템에서 server-ssl-context 및 client-ssl-context 에 대한 SSLv2Hello 프로토콜을 지정할 수 있습니다.
-
SSLv2Hello의 용도가 연결된 서버가 지원하는 암호화 프로토콜을 결정하는 것이므로 다른 암호화 프로토콜을 구성해야 합니다. -
IBM JDK는 서버 측 연결이 이 프로토콜을 항상 수락하지만 클라이언트에서SSLv2Hello를 지원하지 않습니다.
filesystem-realm업데이트
이제 보안을 강화하기 위해 파일 시스템의 ID와 관련된 일반 암호, 해시된 암호 및 속성을 암호화할 수 있습니다. 이 작업은 다음 두 가지 방법으로 수행할 수 있습니다.
-
add작업에서 시크릿 키를 참조하여 암호화된파일 시스템-realm을 생성합니다. -
WildFly Elytron Tool에서 새
명령을 사용하여 기존 filesystem-realm을 암호화합니다.filesystem-realm-encrypt
이제 파일 시스템 영역 의 무결성 검사를 활성화하여 파일 시스템의 ID가 마지막으로 인증된 쓰기 이후와 변경되지 않았는지 확인할 수 있습니다. add 작업을 사용하여 filesystem-realm 을 생성할 때 키 쌍을 참조하여 이 작업을 수행할 수 있습니다. WildFly Elytron은 키 쌍을 사용하여 ID 파일에 대한 서명을 생성합니다. 무결성 검사는 ID 파일을 읽을 때마다 실행됩니다.
자세한 내용은 ID 저장소 가이드를 사용하여 애플리케이션 보안 및 관리 인터페이스에서 Elytron의 Filesystem 영역을 참조하십시오.
distributed-realm업데이트
새 특성 ignore-unavailable-realms 를 true 로 설정하여 ID 저장소에 대한 연결이 실패하는 경우에도 참조된 보안 영역을 계속 검색하도록 distributed-realm 을 구성할 수 있습니다.
기본적으로 ID 저장소와 일치하기 전에 ID 저장소에 대한 연결이 실패하면 이전과 같이 예외 Cryostat UnavailableException 과 함께 인증이 실패합니다.
ignore-unavailable-realms 를 true 로 설정하면 쿼리된 영역을 사용할 수 없는 경우 SecurityEvent 가 생성됩니다. emit-events 를 false 로 설정하여 이 동작을 구성할 수 있습니다.
자세한 내용은 여러 ID 저장소를 사용하여 애플리케이션 및 관리 인터페이스 보안 가이드의 다음 리소스를 참조하십시오.
Artemis에서 SSLContexts에 대해 제공되는 Elytron 지원
JBoss EAP 8에서는 메시징 하위 시스템에서 SSLContext 변수를 인스턴스화하기 위해 Elytron 지원이 제공됩니다. 이 기능을 사용하면 Elytron이 이 변수를 인스턴스화하므로 여러 위치에 SSLContext 를 구성할 수 없습니다. SSLContext의 커넥터는 클라이언트의 JBoss EAP 서버의 elytron 하위 시스템에 정의되어 있어야 합니다. 즉, 독립 실행형 메시징 클라이언트 애플리케이션에서 정의할 수 없습니다.
새로운 Elytron 클라이언트 Java 보안 공급자
Elytron 클라이언트는 이제 Java 보안 공급자인 org.wildfly.security.auth.client.wildFlytronClientDefaultSSLContextProvider 를 제공합니다. 이 공급자를 사용하여 Java 가상 시스템(JVM) 전체 기본 SSLContext 를 등록할 수 있습니다.
JVM에 공급자를 충분히 우선 순위로 등록할 때 SSLContext.getDefault() 메서드를 사용하는 모든 클라이언트 라이브러리는 Elytron 클라이언트 구성에서 기본값으로 구성된 SSL 컨텍스트의 인스턴스를 가져옵니다. 이렇게 하면 Elytron API와 직접 상호 작용하지 않고 Elytron 클라이언트의 SSL 컨텍스트 구성을 직접 사용할 수 있습니다.
자세한 내용은 JBoss EAP 에서 SSL /TLS 구성 가이드의 JBoss EAP 클라이언트에서 Elytron 클라이언트 기본 SSL context 보안 공급자 사용을 참조하십시오.
Elytron에서 사용자 정의 주체를 얻을 수 있는 기능
JBoss EAP 8.0에서는 이제 Elytron에서 사용자 지정 주체를 얻을 수 있습니다. 이전에는 Elytron에서 주체가 인증을 위해 NamePrincipal 의 인스턴스여야 했습니다. 현재 SecurityDomain 에서 얻은 를 사용하고 SecurityIdentity SecurityIdentity 특성을 사용하여 영역에서 정보를 얻을 수 있었지만 jakarta.security.enterprise.SecurityContext.getCallerPrincipal() 와 같은 일반적이고 표준화된 방법 대신 SecurityDomain 및 SecurityIdentity에 대한 의존이 필요했습니다.
Elytron을 사용할 때 getCallerPrincipal() 메서드에서 사용자 지정 주체를 가져올 수 있습니다. 레거시 보안을 사용하는 애플리케이션 코드가 getCallerPrincipal() 메서드에서 사용자 지정 주체를 가져오는 경우 코드를 변경하지 않고도 애플리케이션을 마이그레이션할 수 있습니다.