Contenu connexe
Similaire à 20130606 alfresco study16audit (20)
20130606 alfresco study16audit
- 2. 2013.06.06 2013©
Auditing
2
Audit, 監査証跡, アクセスログ機能...
●言い方は違うがだいたい同じことと思えばよいです。
●記録対象として指定されたユーザの操作をログとして記録する機能
今日のゴール
●AlfrescoのAudit機能の仕組みを理解する
●Audit定義ファイルを書けるようになる
Alfresco version
●Alfresco Community Edition 4.2c
- 3. 2013.06.06 2013©
いきなりですが
3
アクセスログはファイルに出力されません!
●Alfrescoリポジトリ内に保管
●REST APIを用いて取得
取得結果のログの例
$curl -u admin:admin "http://localhost:8080/alfresco/service/api/audit/query/
AuditExampleLogin1"
{
"count":2,
"entries":
[
{
"id":2,
"application":"AuditExampleLogin1",
"user":"admin",
"time":"2013-06-04T13:33:36.492+09:00",
"values":
null
},
{
"id":4,
"application":"AuditExampleLogin1",
"user":"admin",
"time":"2013-06-04T13:58:28.705+09:00",
"values":
null
}
]
}
- 5. 2013.06.06 2013©
アクセスログの仕組み
5
アクセスログ記録可能なメソッドの例
public interface NodeService
{
...
@Auditable(parameters = {"parentRef", "assocTypeQName", "assocQName",
"nodeTypeQName"})
public ChildAssociationRef createNode(
NodeRef parentRef,
QName assocTypeQName,
QName assocQName,
QName nodeTypeQName)
throws InvalidNodeRefException, InvalidTypeException;
...
@Auditable(parameters = {"nodeRef"})
public Set<QName> getAspects(NodeRef nodeRef) throws InvalidNodeRefException;
...
@Auditable(parameters = {"nodeRef"})
public void deleteNode(NodeRef nodeRef) throws InvalidNodeRefException;
●各種Serviceクラスのインタフェースファイルにannotationとして記述
されている
- 6. 2013.06.06 2013©
Audit設定ファイル
6
<?xml version='1.0' encoding='UTF-8'?>
<Audit
xmlns="http://www.alfresco.org/repo/audit/model/3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.alfresco.org/repo/audit/model/3.2 alfresco-audit-3.2.xsd"
>
<DataExtractors>
<DataExtractor name="simpleValue" registeredName="auditModel.extractor.simpleValue"/>
</DataExtractors>
<DataGenerators>
<DataGenerator name="personFullName" registeredName="auditModel.generator.personFullName"/>
</DataGenerators>
<PathMappings>
<PathMap source="/alfresco-api/post/AuthenticationService/authenticate" target="/auditexamplelogin1/login"/>
<PathMap source="/alfresco-api/post/AuthenticationService/authenticate/no-error" target="/auditexamplelogin2/login"/>
</PathMappings>
<Application name="AuditExampleLogin1" key="auditexamplelogin1">
<AuditPath key="login">
<AuditPath key="no-error">
<RecordValue key="user" dataExtractor="simpleValue" dataSource="/auditexamplelogin1/login/args/userName"/>
</AuditPath>
<AuditPath key="error">
<RecordValue key="user" dataExtractor="simpleValue" dataSource="/auditexamplelogin1/login/args/userName"/>
</AuditPath>
</AuditPath>
</Application>
<Application name="AuditExampleLogin2" key="auditexamplelogin2">
<AuditPath key="login">
<GenerateValue key="user" dataGenerator="personFullName"/>
</AuditPath>
</Application>
</Audit>
設定ファイルの例
- 7. 2013.06.06 2013©
Audit設定ファイル
7
<DataExtractors>
<DataExtractor name="simpleValue" registeredName="auditModel.extractor.simpleValue"/>
</DataExtractors>
DataExtractor
●入力データもとに何らかのデータを出力する、データ加工コンポーネント
書式
定義済DataExtractorの一覧
see: alfresco/WEB-INF/classes/alfresco/audit-services-context.xml
registeredName 機能
auditModel.extractor.simpleValue 入力データをそのまま出力
auditModel.extractor.nullValue nullを出力
auditModel.extractor.nodeName ノードの名前(cm:name)を出力
auditModel.extractor.nodeType ノードのタイプを出力
- 8. 2013.06.06 2013©
Audit設定ファイル
8
<DataGenerators>
<DataGenerator name="personFullName" registeredName="auditModel.generator.personFullName"/>
</DataGenerators>
DataGenerator
●データを生成し出力するコンポーネント
書式
定義済DataExtractorの一覧
see: alfresco/WEB-INF/classes/alfresco/audit-services-context.xml
registeredName 機能
auditModel.generator.time 現在日時のDateオブジェクトを出力
auditModel.generator.user ユーザIDを出力
auditModel.generator.personFullName ユーザのフルネームを出力
- 10. 2013.06.06 2013©
Audit設定ファイル
10
<Application name="AuditExampleLogin1" key="auditexamplelogin1">
<AuditPath key="login">
<AuditPath key="no-error">
<RecordValue key="user" dataExtractor="simpleValue" dataSource="/
auditexamplelogin1/login/args/userName"/>
</AuditPath>
<AuditPath key="error">
<RecordValue key="user" dataExtractor="simpleValue" dataSource="/
auditexamplelogin1/login/args/userName"/>
</AuditPath>
</AuditPath>
</Application>
<Application name="AuditExampleLogin2" key="auditexamplelogin2">
<AuditPath key="login">
<GenerateValue key="user" dataGenerator="personFullName"/>
</AuditPath>
</Application>
Application
●アクセスログの集計単位
書式
●key = マッピングされたパスの要素
- 12. 2013.06.06 2013©
Audit設定ファイル
12
削除ノードを記録するログ
<?xml version='1.0' encoding='UTF-8'?>
<Audit
xmlns="http://www.alfresco.org/repo/audit/model/3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.alfresco.org/repo/audit/model/3.2 alfresco-audit-3.2.xsd"
>
<DataExtractors>
<DataExtractor name="simpleValue" registeredName="auditModel.extractor.simpleValue"/>
</DataExtractors>
<DataGenerators>
<DataGenerator name="personFullName" registeredName="auditModel.generator.personFullName"/>
</DataGenerators>
<PathMappings>
<PathMap source="/alfresco-api/post/NodeService/deleteNode/no-error" target="/deletedcontent/deleteNode" />
</PathMappings>
<Application name="DeletedContent" key="deletedcontent">
<AuditPath key="deleteNode">
<RecordValue key="node" dataExtractor="simpleValue" dataSource="/deletedcontent/deleteNode/args/nodeRef" />
<GenerateValue key="user" dataGenerator="personFullName" />
</AuditPath>
</Application>
</Audit>
- 13. 2013.06.06 2013©
ログの検索
13
クエリパラメータ
●クエリのパラメータ
$curl -u admin:admin "http://localhost:8080/alfresco/service/
api/audit/query/AuditExampleLogin1?verbose=true"
$curl -u admin:admin "http://localhost:8080/alfresco/service/
api/audit/query/AuditExampleLogin1?verbose=true&value=admin"
$curl -u admin:admin "http://localhost:8080/alfresco/service/
api/audit/query/AuditExampleLogin1?
verbose=true&value=admin&limit=8&toId=9"