로깅 서비스에는 추가 기능을 사용할 수 있도록 해주는 여러 가지의 특수 기능이 있습니다. 이러한 기능에는 보안 로깅 사용, 명령줄 로깅 및 원격 로깅이 포함됩니다.
로깅 기능에 추가 보안 수단을 적용합니다(선택 사항). 보안 로깅을 통해 보안 로그의 인증되지 않은 변경이나 손상을 감지할 수 있습니다. 이 기능을 사용하기 위해 특별한 코딩이 필요하지는 않습니다. 보안 로깅은 시스템 관리자가 구성한 미리 등록된 인증서를 사용하여 수행됩니다. 이러한 MAC(Manifest Analysis and Certification)는 모든 로그 레코드에 대해 생성 및 저장됩니다. 특수 '서명' 로그 레코드가 정기적으로 삽입되어 해당 지점에 기록된 로그의 내용에 대한 서명을 나타냅니다. 두 레코드의 조합으로 로그가 손상되지 않았음을 확인할 수 있습니다. 보안 로깅을 활성화하는 방법은 JSS(Java Security Server) 공급자를 사용하는 방법과 JCE(Java Cryptography Extension) 공급자를 사용하는 방법이 있습니다.
이름이 Logger인 인증서를 만들어 Access Manager를 실행 중인 배포 컨테이너에 설치합니다.
Application Server에 대한 자세한 지침은 Sun Java System Application Server Enterprise Edition 8.2 Administration Guide의 Working with Certificates and SSL을 참조하십시오.
Web Server에 대한 자세한 지침은 Sun Java System Web Server 7.0 Administrator’s Guide의 Managing Certificates를 참조하십시오.
Access Manager 콘솔을 사용하여 로깅 서비스 구성에서 보안 로깅을 활성화하고 변경 내용을 저장합니다. 관리자는 로깅 서비스의 다른 속성에 대한 기본값도 수정할 수 있습니다.
로깅 디렉토리가 기본 디렉토리(/var/opt/SUMWam/logs)에서 변경된 경우 권한이 0700으로 설정되었는지 확인하십시오. 로깅 서비스는 디렉토리가 없으면 만들지만 권한이 0755로 설정된 디렉토리를 생성하게 됩니다.
또한 기본값에서 다른 디렉토리를 지정하는 경우 웹 컨테이너의 server.policy 파일에 있는 다음 매개 변수를 새 디렉토리로 변경해야 합니다.
permission java.io.FilePermission “/var/opt/SUNWam/logs/*”,”delete,write”
AccessManager-base/SUNWam/config 디렉토리에 인증서 데이터베이스 비밀번호를 포함한 파일을 만들고 이름을 .wtpass로 지정합니다.
파일 이름 및 이 파일에 대한 경로는 AMConfig.properties 파일에서 구성할 수 있습니다. 자세한 내용은 Access Manager Administration Reference에 있는 AMConfig.properties 파일 참조 장의 "Certificate Database"를 참조하십시오.
보안을 위해 배포 컨테이너 사용자가 이 파일에 대한 읽기 권한을 가진 유일한 관리자임을 확인합니다.
서버를 다시 시작합니다.
보안 로깅 시작 시에 /var/opt/SUNWam/debug/amLog 파일에 잘못된 확인 오류가 기록될 수 있으므로 보안 로그 디렉토리를 지워야 합니다.
보안 로그에 허용되지 않은 변경 또는 손상이 있는지 알아보려면 확인 프로세스에서 /var/opt/SUNWam/debug/amLog에 기록한 오류 메시지를 확인합니다. 손상을 수동으로 확인하려면 VerifyArchive 유틸리티를 실행합니다. 자세한 내용은 Access Manager Administration Reference의 VerifyArchive 명령줄 장을 참조하십시오.
Java keytool 명령으로 Logger라는 인증서를 만들고 JKS 키 저장소에 설치합니다. 예를 들면 다음과 같습니다.
JAVA-HOME/jre/lib/security/Logger.jks
Application Server에 대한 자세한 지침은 Sun Java System Application Server Enterprise Edition 8.2 Administration Guide의 Working with Certificates and SSL을 참조하십시오.
Web Server에 대한 자세한 지침은 Sun Java System Web Server 7.0 Administrator’s Guide의 Managing Certificates를 참조하십시오.
Access Manager 콘솔을 사용하여 로깅 서비스 구성에서 보안 로깅을 활성화하고 변경 내용을 저장합니다. 관리자는 로깅 서비스의 다른 속성에 대한 기본값도 수정할 수 있습니다.
로깅 디렉토리가 기본 디렉토리(/var/opt/SUMWam/logs)에서 변경된 경우 권한이 0700으로 설정되었는지 확인하십시오. 로깅 서비스는 디렉토리가 없으면 만들지만 권한이 0755로 설정된 디렉토리를 생성하게 됩니다.
또한 기본값에서 다른 디렉토리를 지정하는 경우 웹 컨테이너의 server.policy 파일에 있는 다음 매개 변수를 새 디렉토리로 변경해야 합니다.
permission java.io.FilePermission “/var/opt/SUNWam/logs/*”,”delete,write”
AccessManager-base/SUNWam/config 디렉토리에 JKS 키 저장소 비밀번호가 포함된 파일을 만들고 이름을 .wtpass로 지정합니다.
파일 이름 및 이 파일에 대한 경로는 AMConfig.properties 파일에서 구성할 수 있습니다. 자세한 내용은 Access Manager Administration Reference의 AMConfig.properties 파일 참조 장에 있는 "Certificate Database"를 참조하십시오.
보안을 위해 배포 컨테이너 사용자가 이 파일에 대한 읽기 권한을 가진 유일한 관리자임을 확인합니다.
AccessManager-base/config/xml 디렉토리에 있는 amLogging.xml 파일에서 다음 항목을 편집합니다:
sun-am-logging-secure-log-helper <AttributeSchema name="iplanet-am-logging-secure-log-helper" type="single" syntax="string" i18nKey=""> <DefaultValues> <Value>com.sun.identity.log.secure.impl.SecureLogHelperJCEImpl</Value> </DefaultValues> </AttributeSchema> sun-am-logging-secure-certificate-store <AttributeSchema name="iplanet-am-logging-secure-certificate-store" type="single" syntax="string" i18nKey=""> <DefaultValues> <Value>/dir-to-signing-cert-store/Logger.jks</Value> </DefaultValues> </AttributeSchema> |
기존 서비스 스키마인 iPlanetAMLoggingService를 삭제합니다. 예를 들면 다음과 같습니다.
./amadmin -u amadmin -w netscape -r iPlanetAMLoggingService
amadmin 명령줄 도구를 사용하여 편집된 amLogging.xml 파일을 Access Manager로 로드합니다. 예를 들면 다음과 같습니다.
./amadmin -u amadmin -w netscape -s /etc/opt/SUNWam/config/xml/amLogging.xml
서버를 다시 시작합니다.
보안 로그에 허용되지 않은 변경 또는 손상이 있는지 알아보려면 확인 프로세스에서 /var/opt/SUNWam/debug/amLog에 기록한 오류 메시지를 확인합니다. 손상을 수동으로 확인하려면 VerifyArchive 유틸리티를 실행합니다. 자세한 내용은 Access Manager Administration Reference의 VerifyArchive 명령줄 장을 참조하십시오.
amadmin 명령줄 도구를 사용해 Directory Server에서 Identity 객체(예: 조직, 사용자 및 역할)를 생성, 수정 및 삭제할 수 있습니다. 이 도구는 또한 서비스 템플리트를 로드, 생성 및 등록할 수 있습니다. 로깅 서비스는 -t 옵션을 호출하여 이러한 작업을 기록할 수 있습니다. AMConfig.properties의 com.iplanet.am.logstatus 등록 정보가 활성(ACTIVE) 상태이면 로그 레코드가 생성됩니다. 이 등록 정보는 기본적으로 사용 가능합니다. 명령줄 로그에는 amAdmin 접두어가 붙습니다. 자세한 내용은 Access Manager Administration Reference의 "The amadmin Command Line Tool"을 참조하십시오.
AMConfig.properties 파일에는 로깅 출력에 영향을 주는 다음과 같은 등록 정보가 있습니다.
이 등록 정보는 로깅을 활성 또는 비활성화합니다. 기본값은 ACTIVE입니다.
service는 서비스의 일반 로그 파일 이름입니다. 예를 들어 amSAML.access의 로깅 수준을 지정하려면 iplanet-am-logging.amSAML.access.level 등록 정보를 사용합니다.level은 java.util.logging.Level 값 중 하나이며 로그 파일에 기록되는 세부 정보의 수준을 나타냅니다. 수준은 OFF, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST 및 ALL이 있습니다. 대부분의 서비스는 INFO 이하의 정보 수준으로 로그를 기록합니다.
Access Manager는 원격 로깅을 지원합니다. 따라서 클라이언트 응용 프로그램이 Access Manager 서버가 설치된 호스트를 사용하여 원격 시스템에 배포된 Access Manager 인스턴스에 로그 레코드를 만들 수 있습니다. 원격 로깅은 다음 중 하나의 시나리오에 의해 시작됩니다.
Access Manager 인스턴스의 이름 지정 서비스에 있는 로깅 URL이 원격 인스턴스를 가리키고 이 둘 사이에 신뢰 관계가 구성되어 있는 경우 원격 Access Manager 인스턴스에 로그가 기록됩니다.
Access Manager SDK가 원격 Access Manager 인스턴스에 대해 설치되어 있고 클라이언트(또는 단순 Java 클래스)가 로깅 API를 사용하는 SDK 서버에서 실행 중이면 원격 Access Manager 시스템에 로그가 기록됩니다.
Access Manager 에이전트가 로깅 API를 사용하는 경우.
Application Server 또는 Web Server의 관리 콘솔에 로그인하고 다음 JVM 옵션을 추가합니다.
java.util.logging.manager=com.sun.identity.log.LogManager
java.util.logging.config.file=/ AccessManager-base /SUNwam/lib/LogConfig.properties
Application Server 관리 콘솔에 대한 자세한 내용은 Sun Java System Application Server Enterprise Edition 8.2 Administration Guide를 참조하십시오.
Web Server 관리 콘솔에 대한 자세한 내용은 Sun Java System Web Server 7.0 Administrator’s Guide를 참조하십시오.
사용 중인 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
사용 중인 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
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
이 값은 로그 버퍼링 및 버퍼 클리너 스레드의 사용 가능 여부를 정의합니다. 기본적으로 이 기능은 비활성화되어 있습니다.
타이머 기반 버퍼링이 활성화(iplanet-am-logging-time-buffering-status=ON)된 경우 로그 레코드의 수가 iplanet-am-logging-remote-buffer-size에 지정된 값에 도달하거나 타이머가 iplanet-am-logging-buffer-time-in-seconds에 지정된 시간 제한 값이 만료되면 로그 레코드의 버퍼가 로깅 서비스를 제공하는 AM 서버로 플러시됩니다. 버퍼 크기에 도달하기 전에 타이머가 만료되면 버퍼에 들어있는 레코드가 전송됩니다. 원격 로깅의 타이머 기반 버퍼링을 비활성화하면 버퍼 크기에 따라 버퍼를 플러시하는 시기가 결정됩니다. 예를 들어 버퍼 크기가 10이고 응용 프로그램에서 7개 레코드만 보내는 경우 버퍼는 플러시되지 않으며 로그 레코드도 기록되지 않습니다. 응용 프로그램이 종료되면 버퍼의 레코드가 플러시됩니다.
로그 파일이 비어 있으면 보안 로깅에 "확인 실패" 메시지가 표시될 수 있습니다.이는 생성된 파일의 수가 아카이브 크기와 같기 때문이며, 이 경우 보안 로깅은 이 세트부터 아카이브한 다음 다시 시작합니다. 대부분의 인스턴스에서는 이 오류를 무시해도 됩니다. 레코드 수가 아카이브 크기와 같으면 오류가 표시되지 않습니다.
클라이언트 SDK가 있는 프로그램을 사용하는 경우 AMConfig.properties 파일의 다음 등록 정보를 적절히 설정해야 합니다.
com.iplanet.am.naming.url
com.sun.identityagents.app.username
com.iplanet.am.service.password
com.iplanet.am.server.protocol
com.iplanet.am.server.host
com.iplanet.am.server.port
/opt/SUNWam/war 디렉토리에 있는 클라이언트 SDK 샘플(README.clientsdk)을 참조하십시오. 이 샘플에서는 /opt/SUNWam/war/clientsdk-samples 디렉토리에 대해 AMConfig.properties 및 make 파일을 생성하는 방법에 대해 설명하며,이러한 파일은 샘플의 'makefiles' 컴파일 및 실행 항목에서 사용됩니다.