Help us understand the problem. What is going on with this article?

OpenAMのAuditログ

More than 3 years have passed since last update.

今日やること

今日はOpenAMで取得可能なログについての話です。

このAdvent Calendarの1日目
OpenAMでできることというところで、以下のように書きました。

Audit Logging(監査ログ)
AuthenticationとかAuthorizationとかFederationのログがしっかり残せる

OpenAMはIAMとして、アプリの認証とか認可を代わりにやってあげるようなことをしているので、自ずとこういったログの集積も可能なわけってことです。

Audit Log(監査ログ)

ここでのAudit Logの定義は、システムのセキュリティやトラブルシューティング、いろんな約束事(笑)の遵守などに役立つに情報のことを指します。例えば、然るべき役職の人が、然るべき認証を経て、然るべき認可を受けて、然るべきシステムにアクセスしているか?といった情報です。

こういったログはどういった場面で必要とされるかは、あまり経験がないのでわからないです。しかし、先述のセキュリティと絡めたケースを考えると、「セキュリティ侵害が発生した時に役立ちそう!」ってのはわかりやすいです。

「システム監査時に有効そう!」ってのは監査というものを受けたことがないので、よくわからないです。きっと、ログの解析までして、業務の有効性とか財務報告の信頼性を確保したりとかするんですかね。内部統制的なお話ですかね~。

OpenAMの監査ログ

OpenAMは以下の4つトピックに基づいて、ログを統合します。

トピック 実際のファイル名 説明
アクセス access.csv アクセスごとに、誰が、何を、いつ、どうしたか?みたいなのを出力
アクティビティ activity.csv ユーザーが作成、更新、削除したセッションの情報を出力
認証 authentication.csv ユーザーが認証された時間と認証の方法を出力
設定 configuration.csv 誰が、いつOpenAMの設定を変更したかを出力

アクティビティはOAuth2.0やOpenID Connect関連のトークン(ID TokenやAccess Token)のイベントは記録されない的な注意書きがAdministration Guideに書いてありましたが、のちのリリースで対応されるみたいです。

デフォルトの監査ログの置き場所

OpenAMのデフォルトの設定では**OpenAMの設定情報が格納されているディレクトリ以下に保存されているみたいです。(本記事では/home/openam/openam/openam/logとなります)

[vagrant@iam ~]$ sudo -u openam ls -l /home/openam/openam/openam/log
total 3880
-rw-r--r-- 1 openam openam 3667621 Dec 13 23:44 access.csv
-rw-r--r-- 1 openam openam   69570 Dec 15 19:42 activity.csv
-rw-r--r-- 1 openam openam  177533 Dec 13 23:44 authentication.csv
-rw-r--r-- 1 openam openam   33669 Dec 13 23:32 config.csv

このログの出力場所の設定は、OpenAMの設定から変更できます。
CONFIGURE => GLOBAL SERVICESをクリックし、

001.JPG

Audit Loggingをクリックします。

002.JPG

Secondary Configuration => Global CSV Handlerをクリックします。

003.JPG

(深いですね...)CSV Configurationというタブの中に、Log Directoryという設定項目がありますので、ここで変更可能です。

004.JPG

ログローテーションとかもできる

先ほどのGlobal CSV Handlerでは、CSV形式のファイル出力に関する設定ができるようになっています。

  • Global Handler Configuration
    • 出力するトピックを指定します
    • デフォルトではaccessactivityauthenticationconfigと設定されています
  • Audit Event Handler Factory
    • ここはいじらいない
    • Audit Event Handlerのクラスパスが設定されています
  • CSV Configuration
    • CSVファイルの出力先ディレクトリを指定します
  • File Rotation
    • ファイルローテーションのポリシーを指定します
    • デフォルトでは100000000Byteに達したらローテーションされます
  • File Retention
    • ローテーションしたファイルをどのぐらい(何世代)保持するかを指定します
    • デフォルトでは、無制限に保持となっています
  • Buffering
    • ロギングをバッファリングしてから行うかを指定します
  • Tamper Evident Configuration
    • イベントごとにHMAC Digestを生成し、エントリに挿入するかどうかを指定します
    • 改ざん防止的な設定かな?

Audit Logの中身

ちょっと、整形するのは心が折れた...

  • Authentication
"_id","timestamp","eventName","transactionId","userId","trackingIds","result","principal","context","entries","component","realm"
"7bf6332a-cab7-4e8b-8661-bbed75571246-79","2016-12-01T12:04:35.494Z","AM-LOGIN-MODULE-COMPLETED","7bf6332a-cab7-4e8b-8661-bbed75571246-77","id=amadmin,ou=user,dc=openam,dc=forgerock,dc=org","[""502e295c57ad44dd01""]","SUCCESSFUL","[""amadmin""]",,"[{""moduleId"":""DataStore"",""info"":{""authControlFlag"":""REQUIRED"",""moduleClass"":""DataStore"",""ipAddress"":""192.168.33.1"",""authLevel"":""0""}}]","Authentication","/"
  • Activity
"_id","timestamp","eventName","transactionId","userId","trackingIds","runAs","objectId","operation","before","after","changedFields","revision","component","realm"
"7bf6332a-cab7-4e8b-8661-bbed75571246-81","2016-12-01T12:04:35.611Z","AM-SESSION-CREATED","7bf6332a-cab7-4e8b-8661-bbed75571246-77","id=amadmin,ou=user,dc=openam,dc=forgerock,dc=org","[""502e295c57ad44dd01""]","id=dsameuser,ou=user,dc=openam,dc=forgerock,dc=org","502e295c57ad44dd01","CREATE",,,,,"Session","/"
  • Access
"_id","timestamp","eventName","transactionId","userId","trackingIds","server.ip","server.port","client.ip","client.port","request.protocol","request.operation","request.detail","http.request.secure","http.request.method","http.request.path","http.request.queryParameters","http.request.headers","http.request.cookies","http.response.headers","response.status","response.statusCode","response.detail","response.elapsedTime","response.elapsedTimeUnits","component","realm"
"7bf6332a-cab7-4e8b-8661-bbed75571246-67","2016-12-01T12:03:29.914Z","AM-ACCESS-OUTCOME","7bf6332a-cab7-4e8b-8661-bbed75571246-60",,,"iam.example.com","443","192.168.33.1","61462","CREST","READ",,"true","GET","https://iam.example.com:443/openam/json/serverinfo/*","{}","{""accept"":[""application/json, text/javascript, */*; q=0.01""],""Accept-API-Version"":[""protocol=1.0,resource=1.1""],""host"":[""iam.example.com""],""referer"":[""https://iam.example.com/openam/XUI/""],""user-agent"":[""Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36""],""X-Requested-With"":[""XMLHttpRequest""]}","{""JSESSIONID"":""6D3835342673B06D0DE661B71C28833C""}",,"SUCCESSFUL","",,"397","MILLISECONDS","Server Info","/
  • Config
"_id","timestamp","eventName","transactionId","userId","trackingIds","runAs","objectId","operation","before","after","changedFields","revision","component","realm"
"7bf6332a-cab7-4e8b-8661-bbed75571246-50","2016-12-01T12:02:13.942Z","AM-CONFIG-CHANGE","7bf6332a-cab7-4e8b-8661-bbed75571246-0",,,"id=dsameuser,ou=user,dc=openam,dc=forgerock,dc=org","ou=https://iam.example.com:443/openam,ou=com-sun-identity-servers,ou=default,ou=GlobalConfig,ou=1.0,ou=iPlanetAMPlatformService,ou=services,dc=openam,dc=forgerock,dc=org","UPDATE",,,"[""sunKeyValue""]",,,

このtrackingIdsというのは凄く気になりますね。複数のログファイル、また、違うトピックのログファイルにわたって検索できるキーになるんでしょうか?どれどれ...

$ sudo -u openam grep 502e295c57ad44dd01 ./* | awk -F":" '{print $1}' 
./access.csv
./access.csv
./access.csv
./access.csv
./access.csv
./access.csv
./access.csv
./access.csv
./access.csv
./access.csv
./access.csv
./access.csv
./activity.csv
./activity.csv
./activity.csv
./authentication.csv
./authentication.csv

おお~、ログの串刺しが捗りそうですね~!ログ分析とかやったことないけど(´ρ`)

他にもマニュアルを読んでると、Legacy Logなんてのもあるみたいですが、Legacyっていうぐらいですから、消えゆく機能なんでしょうかね~?

本日のまとめとしては

  • OpenAMの監査ログを取得できる
  • 監査ログはアクセス、認証、アクティビティ、設定というトピックからなる
  • CSV形式で出力されて、ローテーションやリテンションのポリシーを設定できる
  • なんだか有能そうな串刺し属性(trackingIds)が出力されている

明日はなにしよう~?

ばい!

nanazero
i'm a strolling system engineer.
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした