14장. 이벤트 추적을 위한 감사 구성
Red Hat Single Sign-On에는 감사 기능이 포함되어 있습니다. 모든 로그인 및 관리자 작업을 기록하고 관리 콘솔에서 해당 작업을 검토할 수 있습니다. Red Hat Single Sign-On에는 이벤트를 수신하고 작업을 트리거할 수 있는 Listener SPI도 포함되어 있습니다. 기본 제공 리스너의 예로는 로그 파일 및 이벤트가 발생하는 경우 이메일을 보냅니다.
14.1. 로그인 이벤트
사용자에게 영향을 미치는 모든 이벤트를 기록하고 볼 수 있습니다. Red Hat Single Sign-On은 성공적인 사용자 로그인, 잘못된 암호를 입력하는 사용자 또는 사용자 계정 업데이트와 같은 작업에 대한 로그인 이벤트를 트리거합니다. 기본적으로 Red Hat Single Sign-On은 관리 콘솔에 이벤트를 저장하거나 표시하지 않습니다. 오류 이벤트만 Admin Console 및 서버의 로그 파일에 기록됩니다.
이벤트 저장을 시작하려면 스토리지를 활성화합니다.
절차
- 메뉴에서 이벤트를 클릭합니다.
구성 탭을 클릭합니다.
이벤트 설정
Save Events 를 ON 으로 전환합니다.
이벤트 저장
- 저장 유형 필드에 저장할 이벤트를 지정합니다.
이벤트 지우기 버튼을 클릭하여 모든 이벤트를 삭제할 수 있습니다.
Expiration 필드에 이벤트를 저장할 시간을 지정합니다. 로그인 이벤트 스토리지를 활성화하고 설정을 활성화하면 저장 버튼을 클릭합니다.
로그인 이벤트 탭을 클릭하여 이벤트를 확인합니다.
로그인 이벤트
필터 버튼을 사용하여 이벤트를 필터링할 수 있습니다.
로그인 이벤트 필터
이 예제에서는 로그인
이벤트만 필터링합니다. 업데이트를 클릭하여 필터를 실행합니다.
14.1.1. 이벤트 유형
로그인 이벤트:
이벤트 | 설명 |
---|---|
login | 사용자가 로그인합니다. |
등록하기 | 사용자가 등록합니다. |
logout | 사용자가 로그아웃합니다. |
토큰 코드 | 애플리케이션 또는 클라이언트: 토큰에 대한 코드를 교환합니다. |
토큰 새로 고침 | 애플리케이션 또는 클라이언트가 토큰을 새로 고칩니다. |
계정 이벤트:
이벤트 | 설명 |
---|---|
소셜 링크 | 사용자 계정은 소셜 미디어 공급자에 연결됩니다. |
social Link 삭제 | 소셜 미디어 계정에서 사용자 계정 서버로의 링크입니다. |
이메일 업데이트 | 계정의 이메일 주소가 변경됩니다. |
프로필 업데이트 | 계정 변경에 대한 프로필입니다. |
암호 재설정 보내기 | Red Hat Single Sign-On은 암호 재설정 이메일을 보냅니다. |
암호 업데이트 | 계정의 암호가 변경됩니다. |
TOTP 업데이트 | 계정에 대한 시간 기반 TOTP(한시 암호) 설정이 변경됩니다. |
TOTP 제거 | Red Hat Single Sign-On은 계정에서 TOTP를 제거합니다. |
확인 이메일 보내기 | Red Hat Single Sign-On은 이메일 확인 이메일을 보냅니다. |
이메일 확인 | Red Hat Single Sign-On은 계정의 이메일 주소를 확인합니다. |
각 이벤트에는 해당 오류 이벤트가 있습니다.
14.1.2. 이벤트 리스너
이벤트 리스너는 이벤트를 수신하고 해당 이벤트를 기반으로 작업을 수행합니다. Red Hat Single Sign-On에는 두 개의 기본 제공 리스너인 Logging Event Listener 및 Email Event Listener가 포함되어 있습니다.
14.1.2.1. 로깅 이벤트 리스너
로깅 이벤트 리스너가 활성화되면 이 리스너는 오류 이벤트가 발생할 때 로그 파일에 씁니다.
로깅 이벤트 Listener의 예제 로그 메시지:
11:36:09,965 WARN [org.keycloak.events] (default task-51) type=LOGIN_ERROR, realmId=master, clientId=myapp, userId=19aeb848-96fc-44f6-b0a3-59a17570d374, ipAddress=127.0.0.1, error=invalid_user_credentials, auth_method=openid-connect, auth_type=code, redirect_uri=http://localhost:8180/myapp, code_id=b669da14-cdbb-41d0-b055-0810a0334607, username=admin
11:36:09,965 WARN [org.keycloak.events] (default task-51) type=LOGIN_ERROR, realmId=master,
clientId=myapp,
userId=19aeb848-96fc-44f6-b0a3-59a17570d374, ipAddress=127.0.0.1,
error=invalid_user_credentials, auth_method=openid-connect, auth_type=code,
redirect_uri=http://localhost:8180/myapp,
code_id=b669da14-cdbb-41d0-b055-0810a0334607, username=admin
로깅 이벤트 리스너를 사용하여 손상된 봇 공격으로부터 보호할 수 있습니다.
-
LOGIN_ERROR
이벤트에 대한 로그 파일을 구문 분석합니다. - 실패한 로그인 이벤트의 IP 주소를 추출합니다.
- IP 주소를 침입 방지 소프트웨어 프레임워크 도구로 보냅니다.
로깅 이벤트 Listener는 org.keycloak.events
로그 카테고리에 이벤트를 기록합니다. Red Hat Single Sign-On에는 기본적으로 서버 로그에 디버그 로그 이벤트가 포함되어 있지 않습니다.
서버 로그에 디버그 로그 이벤트를 포함하려면 다음을 수행합니다.
-
standalone.xml
파일을 편집합니다. - 로깅 이벤트 리스너에서 사용하는 로그 수준을 변경합니다.
또는 org.keycloak.events
에 대한 로그 수준을 구성할 수 있습니다.
예를 들어 로그 수준을 변경하려면 다음을 추가합니다.
<subsystem xmlns="urn:jboss:domain:logging:..."> ... <logger category="org.keycloak.events"> <level name="DEBUG"/> </logger> </subsystem>
<subsystem xmlns="urn:jboss:domain:logging:...">
...
<logger category="org.keycloak.events">
<level name="DEBUG"/>
</logger>
</subsystem>
로깅 이벤트 리스너에서 사용하는 로그 수준을 변경하려면 다음을 추가합니다.
<subsystem xmlns="urn:jboss:domain:keycloak-server:..."> ... <spi name="eventsListener"> <provider name="jboss-logging" enabled="true"> <properties> <property name="success-level" value="info"/> <property name="error-level" value="error"/> </properties> </provider> </spi> </subsystem>
<subsystem xmlns="urn:jboss:domain:keycloak-server:...">
...
<spi name="eventsListener">
<provider name="jboss-logging" enabled="true">
<properties>
<property name="success-level" value="info"/>
<property name="error-level" value="error"/>
</properties>
</provider>
</spi>
</subsystem>
로그 수준에 유효한 값은 debug
,info
,warn
,error
, fatal
입니다.
14.1.2.2. Email Event Listener
이벤트가 발생하고 다음 이벤트를 지원하는 경우 Email Event Listener는 사용자 계정으로 이메일을 보냅니다.
- 로그인 오류.
- 암호 업데이트.
- 시간 기반 TOTP(한시 암호)를 업데이트합니다.
- 시간 기반 TOTP(한시 암호)를 제거합니다.
절차
Email Listener를 활성화하려면 다음을 수행합니다.
- 메뉴에서 이벤트를 클릭합니다.
- 구성 탭을 클릭합니다.
- 이벤트 청취자 필드를 클릭합니다.
-
이메일
선택 .
배포에 포함된 standalone.xml
,standalone-ha.xml
또는 domain.xml
구성 파일을 편집하여 이벤트를 제외할 수 있습니다. 예를 들면 다음과 같습니다.
<spi name="eventsListener"> <provider name="email" enabled="true"> <properties> <property name="exclude-events" value="["UPDATE_TOTP","REMOVE_TOTP"]"/> </properties> </provider> </spi>
<spi name="eventsListener">
<provider name="email" enabled="true">
<properties>
<property name="exclude-events" value="["UPDATE_TOTP","REMOVE_TOTP"]"/>
</properties>
</provider>
</spi>
standalone.xml
,standalone-ha.xml
또는 domain.xml
구성 파일을 편집하여 데이터베이스에서 이벤트 세부 정보의 최대 길이를 설정할 수 있습니다. 이 설정은 필드(예: redirect_uri)가 긴 경우 유용합니다. 예를 들면 다음과 같습니다.
<spi name="eventsStore"> <provider name="jpa" enabled="true"> <properties> <property name="max-detail-length" value="1000"/> </properties> </provider> </spi>
<spi name="eventsStore">
<provider name="jpa" enabled="true">
<properties>
<property name="max-detail-length" value="1000"/>
</properties>
</provider>
</spi>
standalone.xml
,standalone-ha.xml
, domain.xml
파일의 위치에 대한 자세한 내용은 서버 설치 및 구성 가이드를 참조하십시오.