1.4. Elytron를 통한 보안 감사
Elytron를 사용하여 트리거 이벤트에 대한 보안 감사를 완료할 수 있습니다. 보안 감사는 권한 부여 또는 인증 시도에 대한 응답으로 로그에 쓰는 등 이벤트를 트리거하는 것을 나타냅니다.
이벤트에서 수행되는 보안 감사 유형은 보안 영역 구성에 따라 다릅니다.
1.4.1. Elytron 감사 로깅 링크 복사링크가 클립보드에 복사되었습니다!
elytron 하위 시스템으로 감사 로깅을 활성화한 후에는 애플리케이션 서버 내에서 Elytron 인증 및 권한 부여 이벤트를 기록할 수 있습니다. Elytron는 사람이 읽을 수 있는 텍스트 형식의 개별 이벤트를 저장하기 위해 에 감사 로그 항목을 저장합니다.
JSON
Elytron 감사 로깅은 JBoss EAP 관리 인터페이스의 감사 로깅과 같은 다른 유형의 감사 로깅과 다릅니다.
Elytron는 기본적으로 감사 로깅을 비활성화합니다. Elytron에 대해 다음 로그 처리기를 구성하여 감사 로깅을 활성화할 수 있습니다. 보안 도메인에 로그 처리기를 추가할 수 있습니다.
- 파일 감사 로깅
- 정기적으로 파일 감사 로깅
- 크기 회전 파일 감사 로깅
-
syslog감사 로깅 - 사용자 정의 감사 로깅
aggregate-security-event-listener 리소스 를 사용하여 로거와 같은 추가 대상에 보안 이벤트를 보낼 수 있습니다. aggregate-security-event-listener 리소스 는 집계 리스너 정의에 지정된 모든 리스너에 모든 이벤트를 제공합니다.
audit 모듈을 사용하여 레거시 보안 도메인의 이벤트를 모니터링할 수 있습니다. 관리 콘솔을 사용하여 레거시 보안 도메인의 보안 감사 설정을 구성할 수 있습니다.
1.4.2. 파일 감사 로깅 활성화 링크 복사링크가 클립보드에 복사되었습니다!
elytron 하위 시스템을 사용하여 독립 실행형 서버 또는 관리형 도메인에서 서버에 대한 파일 감사 로깅을 활성화할 수 있습니다.
파일 감사 로깅은 감사 로그 메시지를 파일 시스템 내의 단일 파일에 저장합니다. 기본적으로 Elytron는 local-audit 를 파일 감사 로거로 지정합니다. 관리형 도메인의 EAP_HOME/standalone/log/audit.log 에 Elytron 감사 로그를 작성할 수 있도록 local- 를 활성화해야 합니다.
audit
절차
파일 감사 로그를 생성합니다.
elytron하위 시스템을 사용하여 파일 감사 로그를 생성하는 예:/subsystem=elytron/file-audit-log=<audit_log_name>:add(path="<path_to_log_file>", relative-to="<base_for_path_to_log_file>", format=<format_type>, synchronized=<whether_to_log_immediately>)파일 감사 로그를 보안 도메인에 추가합니다.
보안 도메인에 파일 감사 로그를 추가하는 명령의 예
/subsystem=elytron/security-domain=<security_domain_name>:write-attribute(name=security-event-listener , value=<audit_log_name>)
추가 리소스
- 파일 감사 로거 특성에 대한 자세한 내용은 File audit logger 특성을 참조하십시오.
1.4.3. 정기적인 순환 파일 감사 로깅 활성화 링크 복사링크가 클립보드에 복사되었습니다!
elytron 하위 시스템을 사용하여 독립 실행형 서버 또는 도메인 도메인의 서버에 대한 주기적 회전 파일 감사 로깅을 활성화할 수 있습니다.
파일 감사 로깅을 정기적으로 순환하면 구성된 일정에 따라 감사 로그 파일이 자동으로 순환됩니다. 주기적인 회전 파일 감사 로깅은 기본 파일 감사 로거와 유사하지만 주기적인 회전 파일 감사 로깅에는 접미사 가 추가로 포함됩니다.
suffix 속성의 값은 java.time.format.DateTimeFormatter 형식(예: .yyy -MM-dd )을 사용하여 지정된 날짜입니다. Elytron는 접미사와 함께 제공되는 값에서 회전 기간을 자동으로 계산합니다. elytron 하위 시스템은 로그 파일 이름 끝에 접미사를 추가합니다.
절차
주기적인 회전 파일 감사 로그를 생성합니다.
elytron하위 시스템에서 주기적인 회전 파일 감사 로그를 생성하는 예/subsystem=elytron/periodic-rotating-file-audit-log=<periodic_audit_log_name>:add(path="<periodic_audit_log_filename>", relative-to="<path_to_audit_log_directory>", format=<record_format>, synchronized=<whether_to_log_immediately>,suffix="<suffix_in_DateTimeFormatter_format>")주기적인 회전 파일 감사 로거를 보안 도메인에 추가합니다.
보안 도메인에 정기적인 회전 파일 감사 로거 추가 예
/subsystem=elytron/security-domain=<security_domain_name>:write-attribute(name=security-event-listener, value=<periodic_audit_log_name>)
1.4.4. 크기 회전 파일 감사 로깅 활성화 링크 복사링크가 클립보드에 복사되었습니다!
elytron 하위 시스템을 사용하여 독립 실행형 서버 또는 관리형 도메인에서 서버에 대한 크기 회전 파일 감사 로깅을 활성화할 수 있습니다.
크기 회전 파일 감사 로깅은 로그 파일이 구성된 파일 크기에 도달하면 감사 로그 파일을 자동으로 순환합니다. 크기 회전 파일 감사 로깅은 기본 파일 감사 로거와 유사하지만 크기 회전 파일 감사 로깅에는 추가 속성이 포함되어 있습니다.
로그 파일 크기가 rotate-size 특성에 정의된 제한을 초과하면 Elytron는 현재 파일의 끝에 .1 접미사를 추가하고 Elytron은 새 로그 파일을 생성합니다. Elytron는 기존 로그 파일에 대해 접미사를 하나씩 늘립니다. 예를 들어 Elytron renames audit_log.1 의 이름을 audit_log.2 로 변경합니다. Elytron는 로그 파일 양이 max-backup-index 로 정의된 최대 로그 파일 수에 도달할 때까지 증분을 계속합니다. 로그 파일이 max-backup-index 값을 초과하면 Elytron에서 해당 파일을 제거합니다(예: audit_log.99 ).
절차
크기 회전 파일 감사 로그를 만듭니다.
elytron하위 시스템을 사용하여 크기 회전 파일 감사 로그를 생성하는 예:/subsystem=elytron/size-rotating-file-audit-log=<audit_log_name>:add(path="<path_to_log_file>",relative-to="<base_for_path_to_log_file>",format=<record_format>,synchronized=<whether_to_log_immediately>,rotate-size="<max_file_size_before_rotation>",max-backup-index=<max_number_of_backup_files>)크기 회전 감사 로거를 보안 도메인에 추가합니다.
elytron하위 시스템을 사용하여 크기 회전 파일 감사 로그를 활성화하는 예:/subsystem=elytron/security-domain=<domain_size_logger>:write-attribute(name=security-event-listener, value=<audit_log_name>)
1.4.5. syslog 감사 로깅 활성화 링크 복사링크가 클립보드에 복사되었습니다!
elytron 하위 시스템을 사용하여 독립 실행형 서버 또는 관리형 도메인에서 서버에 대한 syslog 감사 로깅을 활성화할 수 있습니다. syslog 감사 로깅을 사용하면 로깅 결과를 syslog 서버로 전송하여 로컬 파일에 로깅하는 것보다 더 많은 보안 옵션을 제공합니다.
핸들러는 syslog 서버의 호스트 이름 및 syslog syslog 서버가 수신 대기하는 포트와 같이 syslog 서버에 연결하는 데 사용되는 매개변수를 지정합니다. 여러 syslog 핸들러를 정의하고 동시에 활성화할 수 있습니다.
지원되는 로그 형식에는 RFC5424 및 RFC3164 가 포함됩니다. 지원되는 전송 프로토콜에는 UDP, TCP, SSL이 포함된 TCP가 포함됩니다.
첫 번째 인스턴스에 대한 syslog 를 정의할 때 로거는 다음 예에 표시된 대로 메시지를 포함하는 INFORMATIONAL 우선 순위 이벤트를 syslog 서버로 보냅니다.
"Elytron audit logging enabled with RFC format: <format>"
<format> 은 감사 로깅 핸들러에 대해 구성된 RFC 포맷을 참조하며, 기본값은 RFC5424 입니다.
절차
syslog처리기를 추가합니다.elytron하위 시스템을 사용하여syslog핸들러 추가의 예:/subsystem=elytron/syslog-audit-log=<syslog_audit_log_name>:add(host-name=<record_host_name>, port=<syslog_server_port_number>, server-address=<syslog_server_address>, format=<record_format>, transport=<transport_layer_protocol>)TLS를 통해
syslog서버에 로그를 보낼 수도 있습니다.TLS를 통해 로그를 전송하는
syslog구성의 예/subsystem=elytron/syslog-audit-log=<syslog_audit_log_name>:add(transport=SSL_TCP,server-address=<syslog_server_address>,port=<syslog_server_port_number>,host-name=<record_host_name>,ssl-context=<client_ssl_context>)syslog감사 로거를 보안 도메인에 추가합니다.보안 도메인에
syslog감사 로거 추가 예/subsystem=elytron/security-domain=<security_domain_name>:write-attribute(name=security-event-listener, value=<syslog_audit_log_name>)
1.4.6. Elytron에서 사용자 정의 보안 이벤트 리스너 사용 링크 복사링크가 클립보드에 복사되었습니다!
Elytron를 사용하여 사용자 지정 이벤트 리스너를 정의할 수 있습니다. 사용자 지정 이벤트 리스너는 들어오는 보안 이벤트 처리를 관리합니다. 이벤트 리스너를 사용자 정의 감사 로깅 목적으로 사용하거나 이벤트 리스너를 사용하여 내부 ID 스토리지에 대해 사용자를 인증할 수 있습니다.
모듈 관리 CLI 명령을 사용하여 모듈을 추가하고 제거하는 작업은 기술 프리뷰 기능으로만 제공됩니다. 모듈 명령은 관리형 도메인에서 사용하거나 원격 관리 CLI로 연결할 때 적합하지 않습니다. 프로덕션 환경에서 모듈을 수동으로 추가하거나 제거해야 합니다.
기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있으며 프로덕션에 사용하지 않는 것이 좋습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
기술 프리뷰 기능에 대한 지원 범위에 대한 자세한 내용은 Red Hat 고객 포털의 기술 프리뷰 기능 지원 범위를 참조하십시오.
절차
java.util.function.Consumer<org.wildfly.security.auth.server.event.SecurityEvent>인터페이스를 구현하는 클래스를 생성합니다. 예를 들어 다음은 사용자가 인증에 성공하거나 실패할 때마다 메시지를 출력합니다.지정된 인터페이스를 사용하는 Java 클래스를 생성하는 예:
public class MySecurityEventListener implements Consumer<SecurityEvent> { public void accept(SecurityEvent securityEvent) { if (securityEvent instanceof SecurityAuthenticationSuccessfulEvent) { System.err.printf("Authenticated user \"%s\"\n", securityEvent.getSecurityIdentity().getPrincipal()); } else if (securityEvent instanceof SecurityAuthenticationFailedEvent) { System.err.printf("Failed authentication as user \"%s\"\n", ((SecurityAuthenticationFailedEvent)securityEvent).getPrincipal()); } } }예제의 Java 클래스는 사용자가 인증을 성공하거나 실패할 때마다 메시지를 출력합니다.
사용자 지정 이벤트 리스너를 JBoss EAP에 모듈로 제공하는 JAR 추가
다음은 Elytron에 모듈로 사용자 지정 이벤트 리스너를 추가하는 관리 CLI 명령의 예입니다.
모듈명령을 사용하여 사용자 지정 이벤트 리스너를 Elytron에 모듈로 추가하는 예:/subsystem=elytron/custom-security-event-listener=<listener_name>:add(module=<module_name>, class-name=<class_name>)보안 도메인의 사용자 지정 이벤트 리스너를 참조합니다.
ApplicationDomain에서 사용자 지정 이벤트 리스너를 참조하는 예:/subsystem=elytron/security-domain=<domain_name>:write-attribute(name=security-event-listener, value=<listener_name>)서버를 다시 시작합니다.
$ reload이벤트 리스너는 지정된 보안 도메인에서 보안 이벤트를 수신합니다.