Sun Java System Access Manager 7 2005Q4 관리 설명서

13장 로깅 서비스

Sun Java™ System Access Manager 7 2005Q4는 사용자 작업, 트래픽 패턴 및 인증 위반과 같은 정보를 기록하기 위한 로깅 서비스를 제공합니다. 또한 관리자는 디버그 파일을 사용하여 설치 문제를 해결할 수 있습니다.

로그 파일

로그 파일은 모니터링하는 각 서비스에 대한 여러 가지 이벤트를 기록합니다. 관리자는 이 파일을 정기적으로 확인해야 합니다. 로그 파일의 기본 디렉토리는 SPARC 시스템의 경우 /var/opt/SUNWam/logs이며 Linux 시스템의 경우 /var/opt/sun/identity입니다. 로그 파일 디렉토리는 Access Manager 콘솔을 사용하여 로깅 서비스에서 구성할 수 있습니다.

Sun Java System Access Manager 7 2005Q4 Technical OverviewHow the Logging Feature Works에 있는 How the Logging Feature Works를 참조하십시오.

로깅 서비스에 대한 속성 정의는 Access Manager 콘솔에 있는 도움말 버튼을 눌러 온라인 도움말을 참조하십시오.

Access Manager 서비스 로그

서비스 로그 파일에는 액세스 로그 파일과 오류 로그 파일의 두 가지유형이 있습니다. 액세스 로그 파일에는 작업 시도와 성공적인 결과에 대한 기록이 포함됩니다. 오류 로그 파일은 Access Manager 서비스 내에서 발생한 오류를 기록합니다. 플랫 로그 파일에는 .error 또는 .access 확장자가 붙습니다. 데이터베이스 열 이름은 Oracle 데이터베이스의 경우 _ERROR 또는 _ACCESS로 끝나고 MySQL 데이터베이스는 _error 또는 _access로 끝납니다. 예를 들어 콘솔 이벤트를 기록하는 플랫 파일의 이름은 amConsole.access로, 같은 이벤트를 기록하는 데이터베이스 열의 이름은 AMCONSOLE_ACCESS로 지정됩니다. 다음 절에서는 로깅 서비스에서 기록하는 로그 파일에 대해 설명합니다.

세션 로그

로깅 서비스는 세션 서비스에 대해 다음 이벤트를 기록합니다.

세션 로그에는 amSSO 접두어가 붙습니다.

콘솔 로그

Access Manager 콘솔 로그는 조직, 조직 구성 단위, 사용자, 역할, 정책 및 그룹 등을 포함한 Identity 관련 객체, 정책 및 서비스의 생성, 삭제 및 수정을 기록합니다. 또한 비밀번호를 포함한 사용자 속성 수정, 역할 및 그룹에서의 사용자 추가 및 제거를 기록합니다. 이외에도 콘솔 로그는 위임 및 데이터 저장소 작업을 기록합니다. 콘솔 로그에는 amConsole 접두어가 붙습니다.

인증 로그

인증 구성 요소는 사용자 로그인과 로그아웃을 기록합니다. 인증 로그에는 amAuthentication 접두어가 붙습니다.

연합 로그

연합 구성 요소는 인증 도메인 생성 및 호스트 공급자 생성을 포함하나 이에 제한되지 않은 연합 관련 이벤트를 기록합니다. 연합 로그에는 amFederation 접두어가 붙습니다.

정책 로그

정책 구성 요소는 정책 관리(정책 생성, 삭제 및 수정) 및 정책 평가를 포함하나 이에 제한되지 않은 정책 관련 이벤트를 기록합니다. 정책 로그에는 amPolicy 접두어가 붙습니다.

에이전트 로그

정책 에이전트 로그는 사용자에게 허용 또는 거부된 로그 자원에 관한 로깅 예외 기록을 담당합니다. 에이전트 로그에는 amAgent 접두어가 붙습니다. amAgent 로그는 에이전트 서버에만 있습니다. 에이전트 이벤트는 Access Manager 서버에서 인증 로그에 기록됩니다. 이 기능에 대한 자세한 내용은 대상 정책 에이전트에 대한 설명서를 참조하십시오.

SAML 로그

SAML 구성 요소는 명제 및 아티팩트 생성 또는 제거, 응답 및 요청 정보, SOAP 오류를 포함하나 이에 제한되지 않은 SAML 관련 이벤트를 기록합니다. 세션 로그에는 amSAML 접두어가 붙습니다.

amAdmin 로그

명령줄 로그는 명령줄 도구를 사용한 작업 중에 발생한 이벤트 오류를 기록합니다. 이러한 이벤트에는 서비스 스키마 로드, 정책 생성 및 사용자 삭제 등이 포함됩니다(이에 제한되지 않음). 명령줄 로그에는 amAdmin 접두어가 붙습니다.

로깅 기능

로깅 서비스에는 추가 기능을 사용할 수 있도록 해주는 여러 가지의 특수 기능이 있습니다. 이러한 기능에는 보안 로깅 사용, 명령줄 로깅 및 원격 로깅이 포함됩니다.

보안 로깅

로깅 기능에 추가 보안 수단을 적용합니다(선택 사항). 보안 로깅은 보안 로그의 인증되지 않은 변경이나 손상을 감지할 수 있게 합니다. 이 기능을 사용하기 위해 특별한 코딩이 필요하지는 않습니다. 보안 로깅은 시스템 관리자가 구성한 미리 등록된 인증서를 사용하여 수행됩니다. 이러한 MAC(Manifest Analysis and Certification)는 모든 로그 레코드에 대해 생성 및 저장됩니다. 특수 '서명' 로그 레코드가 정기적으로 삽입되어 해당 지점에 기록된 로그의 내용에 대한 서명을 나타냅니다. 두 레코드의 조합으로 로그가 손상되지 않았음을 확인할 수 있습니다.

Procedure보안 로깅을 사용 가능하게 하려면

단계
  1. 이름이 Logger인 인증서를 만들어 Access Manager를 실행 중인 배포 컨테이너에 설치합니다. 자세한 내용은 배포 컨테이너에 대한 설명서를 참조하십시오.

  2. Access Manager 콘솔을 사용하여 로깅 서비스 구성에서 보안 로깅을 활성화하고 변경 내용을 저장합니다. 관리자는 로깅 서비스의 다른 속성에 대한 기본값도 수정할 수 있습니다.

    로깅 디렉토리가 기본 디렉토리(/var/opt/SUMWam/logs)에서 변경된 경우 권한이 0700으로 설정되었는지 확인하십시오. 로깅 서비스는 디렉토리가 없으면 만들지만 권한이 0755로 설정된 디렉토리를 생성하게 됩니다.

    또한 기본값에서 다른 디렉토리를 지정하는 경우 웹 컨테이너의 server.policy 파일에 있는 다음 매개 변수를 새 디렉토리로 변경해야 합니다.

    permission java.io.FilePermission “/var/opt/SUNWam/logs/*”,”delete,write”

  3. AccessManager-base/SUNWam/config 디렉토리에 인증서 데이터베이스 비밀번호를 포함한 파일을 만들고 이름을 .wtpass로 지정합니다.


    주 –

    파일 이름 및 이 파일에 대한 경로는 AMConfig.properties 파일에서 구성할 수 있습니다. 자세한 내용은 부록 A, AMConfig.properties 파일의 "인증서 데이터베이스"를 참조하십시오.

    보안을 위해 배포 컨테이너 사용자가 이 파일에 대한 읽기 권한을 가진 유일한 관리자임을 확인합니다.


  4. 서버를 다시 시작합니다.

    보안 로깅 시작 시에 /var/opt/SUNWam/debug/amLog 파일에 잘못된 확인 오류가 기록될 수 있으므로 보안 로그 디렉토리를 지워야 합니다.

    보안 로그의 허용되지 않은 변경 및 손상을 검색하려면 확인 프로세스에 의해 /var/opt/SUNWam/debug/amLog에 잘못 기록된 오류 메시지를 검색합니다. 손상을 수동으로 확인하려면 VerifyArchive 유틸리티를 실행합니다. 자세한 내용은 19 장, VerifyArchive 명령줄 도구을 참조하십시오.

명령줄 로깅

amadmin 명령줄 도구를 사용해 Directory Server에서 Identity 객체(예: 조직, 사용자 및 역할)를 생성, 수정 및 삭제할 수 있습니다. 이 도구는 또한 서비스 템플리트를 로드, 생성 및 등록할 수 있습니다. 로깅 서비스는 -t 옵션을 호출하여 이러한 작업을 기록할 수 있습니다. AMConfig.propertiescom.iplanet.am.logstatus 등록 정보가 활성(ACTIVE)이면 로그 레코드가 생성됩니다. 이 등록 정보는 기본적으로 사용 가능합니다. 명령줄 로그에는 amAdmin 접두어가 붙습니다. 자세한 내용은 14 장, amadmin 명령줄 도구를 참조하십시오.

로깅 등록 정보

AMConfig.properties 파일에는 로깅 출력에 영향을 주는 다음과 같은 등록 정보가 있습니다.

com.iplanet.am.logstatus=ACTIVE

이 등록 정보는 로깅을 활성 또는 비활성화합니다. 기본값은 ACTIVE입니다.

iplanet-am-logging.service.level= level

service는 서비스의 일반 디버그 파일 이름입니다. leveljava.util.logging.Level 값 중 하나이며 로그에 자세히 기록된 수준을 나타냅니다. 수준은 SEVERE, WARNING, INFO, CONFIG, FINE, FINER 및 FINEST가 있습니다. 대부분의 서비스는 INFO 이하의 정보 수준으로 로그를 기록합니다.

원격 로깅

Access Manager는 원격 로깅을 지원합니다. 따라서 클라이언트 응용 프로그램은 Access Manager SDK가 설치된 호스트를 사용하여 원격 시스템에 배포된 Access Manager 인스턴스에 로그 레코드를 생성할 수 있습니다. 원격 로깅은 다음 중 하나의 시나리오에 의해 시작됩니다.

  1. Access Manager 인스턴스의 이름 지정 서비스에 있는 로깅 URL이 원격 인스턴스를 가리키고 이 둘 사이에 신뢰 관계가 구성되어 있는 경우 원격 Access Manager 인스턴스에 로그가 기록됩니다.

  2. Access Manager SDK가 원격 Access Manager 인스턴스에 대해 설치되어 있고 클라이언트(또는 단순 Java 클래스)가 로깅 API를 사용하는 SDK 서버에서 실행 중이면 원격 Access Manager 시스템에 로그가 기록됩니다.

  3. Access Manager 에이전트가 로깅 API를 사용하는 경우.

Procedure원격 로깅을 사용 가능하게 하려면

단계
  1. Sun Java System Web Server를 사용하는 경우 server.xml 구성 파일에서 다음 환경 변수를 설정해야 합니다.

    • java.util.logging.manager=com.sun.identity.log.LogManager

    • java.util.logging.config.file=/ AccessManager-base /SUNwam/lib/LogConfig.properties

    • 사용 중인 Java™ 2 Platform, Standard Edition이 1.4 이상이면 명령줄에서 다음을 호출하여 수행합니다.

      java -cp /AccessManager-base /SUNWam/lib/am_logging.jar:/ AccessManager-base /SUNWam/lib/xercesImpl.jar:/ AccessManager-base /SUNWam/lib/xmlParserAPIs.jar:/ AccessManager-base /SUNWam/lib/jaas.jar:/ AccessManager-base /SUNWam/lib/xmlParserAPIs.jar:/ AccessManager-base /SUNWam/lib/servlet.jar:/ AccessManager-base /SUNWam/locale:/ AccessManager-base/SUNWam/lib/am_services.jar:/ AccessManager-base/SUNWam/lib/am_sdk.jar:/ AccessManager-base/SUNWam/lib/jss311.jar:/ AccessManager-base/SUNWam/lib:.

      -Djava.util.logging.manager=com.sun.identity.log.LogManager

      -Djava.util.logging.config.file=/ AccessManager-base /SUNwam/lib/LogConfig.properties <logTestClass>

    • 사용 중인 Java 2 Platform, Standard Edition이 1.4 이전 버전이면 명령줄에서 다음을 호출하여 수행합니다.

      java -Xbootclasspath/a:/AccessManager-base /SUNWam/lib/jdk_logging.jar -cp / AccessManager-base /SUNWam/lib/am_logging.jar:/ AccessManager-base /SUNWam/lib/xercesImpl.jar:/ AccessManager-base /SUNWam/lib/xmlParserAPIs.jar:/ AccessManager-base /SUNWam/lib/jaas.jar:/ AccessManager-base /SUNWam/lib/xmlParserAPIs.jar:/ AccessManager-base /SUNWam/lib/servlet.jar:/ AccessManager-base /SUNWam/locale:/ AccessManager-base/SUNWam/lib/am_services.jar:/ AccessManager-base/SUNWam/lib/am_sdk.jar:/ AccessManager-base/SUNWam/lib/jss311.jar:/ AccessManager-base/SUNWam/lib:.

      -Djava.util.logging.manager=com.sun.identity.log.LogManager

      -Djava.util.logging.config.file=/ AccessManager-base /SUNwam/lib/LogConfig.properties <logTestClass>

  2. AccessManager-base/SUNWam/lib에 있는 LogConfig.properties에 다음 매개 변수가 구성되어 있는지 확인합니다.

    • iplanet-am-logging-remote-handler=com.sun.identity.

      log.handlers.RemoteHandler

    • iplanet-am-logging-remote-formatter=com.sun.

      identity.log.handlers.RemoteFormatter

    • iplanet-am-logging-remote-buffer-size=1

      원격 로깅은 로그 레코드 수를 기반으로 버퍼링을 지원합니다. 이 값은 레코드의 수에 따라 로그 버퍼 크기를 정의합니다. 버퍼가 꽉 차면 버퍼링된 레코드는 모두 서버로 플러시됩니다.

    • iplanet-am-logging-buffer-time-in-seconds=3600

      이 값은 로그 버퍼 클리너 스레드를 호출하는 시간 제한 기간을 정의합니다.

    • iplanet-am-logging-time-buffering-status=OFF

      이 값은 로그 버퍼링 및 버퍼 클리너 스레드의 사용 가능 여부를 정의합니다. 기본적으로 이 기능은 비활성화되어 있습니다.


    주 –

    로그 파일이 비어 있으면 보안 로깅에 "확인 실패" 메시지가 표시될 수 있습니다. 이는 생성된 파일의 수가 아카이브 크기와 같기 때문이며, 이 경우 보안 로깅은 이 세트부터 아카이브한 다음 다시 시작합니다. 대부분의 인스턴스에서는 이 오류를 무시해도 됩니다. 레코드 수가 아카이브 크기와 같으면 오류가 표시되지 않습니다.


오류 및 액세스 로그

Access Manager 로그 파일에는액세스 로그 파일 및 오류 로그 파일의 두 가지 유형이 있습니다.

액세스 로그 파일은 Access Manager 배포와 관련된 일반 감사 정보를 기록합니다. 로그에는 인증 성공과 같은 이벤트에 대한 단일 레코드가 포함될 수 있습니다. 로그에는 동일한 이벤트에 대해 여러 레코드가 포함될 수 있습니다. 예를 들어 관리자가 콘솔을 사용하여 속성 값을 변경하면 로깅 서비스에서 하나의 레코드에 변경 시도를 기록합니다. 또한 로깅 서비스는 두 번째 레코드에 변경의 실행 결과를 기록합니다.

오류 로그 파일은 응용 프로그램 내에서 발생한 오류를 기록합니다. 작업 오류는 오류 로그에 기록되고, 작업 시도는 액세스 로그 파일에 기록됩니다.

플랫 로그 파일에는 .error 또는 .access 확장자가 추가됩니다. _ERROR 또는 _ACCESS로 끝나는 데이터베이스 열 이름. 예를 들어 플랫 파일 로깅 콘솔 이벤트의 이름은 amConsole.access이고 동일한 이벤트를 기록하는 데이터베이스 열의 이름은 AMCONSOLE_ACCESS 또는 amConsole_access입니다.

다음 표에서는 각 Access Manager 구성 요소에서 생성되는 로그 파일에 대한 간략한 설명을 제공합니다.

표 13–1 Access Manager 구성 요소 로그

구성 요소 

로그 파일 이름 접두어 

기록된 정보 

세션 

amSSO

로그인 시간, 로그아웃 시간, 시간 초과 제한과 같은 세션 관리 속성 값. 

관리 콘솔 

amConsole 

Identity 관련 객체, 영역, 정책의 생성, 삭제, 수정과 같이 관리 콘솔을 통해 수행된 사용자 작업.  

인증 

amAuthentication

사용자 로그인 및 로그아웃. 

아이디 연합 

amFederation

인증 도메인 생성 및 호스트 공급자 생성 등의 연합 관련 이벤트. 연합 로그에는amFederation 접두어가 붙습니다.

인증(정책) 

amPolicy

정책 생성, 삭제 또는 수정 및 정책 평가와 같은 정책 관련 이벤트. 

정책 에이전트 

amAgent

사용자가 액세스했거나 사용자에 대한 액세스가 거부된 자원 관련 예외. amAgent 로그는 정책 에이전트가 설치된 서버에 상주합니다. 에이전트 이벤트는 Access Manager 시스템에서 인증 로그에 기록됩니다.

SAML 

amSAML

명제, 아티팩트 생성 또는 삭제, 응답 및 요청 세부 정보, SOAP 오류와 같은 SAML 관련 이벤트. 

명령줄 

amAdmin

명령줄 도구를 사용한 작업 도중 발생한 이벤트 오류. 예: 서비스 스키마 로딩, 정책 생성 및 사용자 삭제.  

Access Manager 로그 파일 목록 및 설명은 부록 C, 로그 파일 참조를 참조하십시오.

디버그 파일

디버그 파일은 로깅 서비스의 기능이 아닙니다. 디버그 파일은 로깅 API와는 독립적인 다른 API를 사용하여 작성됩니다. 디버그 파일은 /var/opt/SUNWam/debug에 저장됩니다. 이 위치는 디버그 정보의 수준과 함께 AccessManager-base/SUNWam/lib/ 디렉토리에 있는 AMConfig.properties 파일에서 구성할 수 있습니다. 디버그 등록 정보에 대한 자세한 내용은 부록 A, AMConfig.properties 파일를 참조하십시오.

디버그 수준

디버그 파일에 기록할 수 있는 정보의 수준에는 여러 가지가 있습니다. 디버그 수준은 AMConfig.properties에 있는 com.iplanet.services.debug.level 등록 정보를 사용하여 설정합니다.

  1. Off—디버그 정보를 기록하지 않습니다.

  2. Error—이 수준은 프로덕션에 사용됩니다. 프로덕션 중에는 디버그 파일에 오류가 있으면 안됩니다.

  3. Warning—현재 이 수준은 사용하지 않는 것이 좋습니다.

  4. Message—이 수준은 코드 추적을 사용하여 가능한 문제를 경고합니다. 대부분의 Access Manager 모듈은 이 수준을 사용하여 디버그 메시지를 보냅니다.


    주 –

    Warning 및 Message 수준은 프로덕션에서는 사용하면 안됩니다. 이 두 수준은 많은 디버그 메시지와 함께 심각한 성능 저하를 일으킵니다.


디버그 출력 파일

디버그 파일은 모듈에서 기록해야 생성됩니다. 따라서 기본 error 모드에서는 디버그 파일에 생성되지 않습니다. 기본 로그인 시에 디버그 수준이 message로 설정되어 생성되는 디버그 파일은 다음과 같습니다.

가장 자주 사용되는 파일은 amSDK, amProfile 및 인증과 관련된 모든 파일입니다. 캡처된 정보에는 날짜, 시간 및 메시지 유형(Error, Warning, Message)이 포함됩니다.

디버그 파일 사용

디버그 수준은 기본적으로 error로 설정됩니다. 디버그 파일은 관리자가 다음과 같은 작업을 수행하는 경우 유용합니다.

디버그 파일은 향후 제공될 수 있는 모든 문제 해결 설명서와 함께 사용되어야 합니다. 예를 들어 SSL이 실패하는 경우, 디버그를 message로 활성화하고 amJSS 디버그 파일을 확인하여 특정 인증서 오류를 찾을 수 있습니다.

여러 Access Manager 인스턴스 및 디버그 파일

Access Manager에는 다양한 서버 인스턴스를 구성하는 데 사용할 수 있는 ammultiserverinstall 스크립트가 포함되어 있습니다. 여러 서버 인스턴스가 다른 디버그 디렉토리를 사용하도록 구성된 경우 각 개별 인스턴스는 디버그 디렉토리에 대해 읽기와 쓰기 권한을 모두 가지고 있어야 합니다.