Identity Cloud Serviceの監査ログをOracle Management Cloudで分析する

Oracle Cloud infrastructureでIAMのローカルユーザーでなく、同期済みユーザーを使用している場合のログオン情報はIDCS(identity Cloud Service)のレポートで参照することができます。

- IDCSのレポート画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/0f85232d-fe1e-a30c-5d17-5f266fe0b226.png)

ここではIDCSからREST APIでJSON形式の監査ログを取り出し、OMC側にインポートすることで、以下のような既存のGUIでは表示されない情報や詳細な分析画面を作成する手順を紹介します。

- OMCでIDCSの監査ログを取り込んだダッシュボード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/6bedc3f6-d8c6-a93e-19d4-a2e202f089cf.png)

## IDCSにREST APIのアクセス可能な設定を追加する

- IDCSのコンソールからアプリケーションのアイコンをクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/d29750c7-a476-e0c8-21f4-62c896553af0.png)

- 機密アプリケーションの追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/c69c2234-0228-f795-0f21-7916049e8226.png)

- 名前をつけて次へクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/29fa4647-cccb-742e-9bc8-3f75d0423e9f.png)


- クライアント資格証明をチェックし、"Identity Cloud Service管理者へのクライアント・アクセス権を付与します"の項目で、Identity Domain Administratorを追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/e12d37fb-1852-f246-dce9-d163d397f3fa.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/0c856ba8-4eda-7166-977a-4c173c8dd743.png)

- 次をクリックし、終了で作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/693d1f54-498b-afcf-8859-203103d0ec3e.png)

- 以下の画面がポップアップされるのでクライアントIDとクライアント・シークレットをメモする。作成後、右上のアクティブ化を忘れずに実行する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/b55483c0-2120-5973-0db6-023404d4ba23.png)

## REST APIでIDCSから監査ログを取得する

```
#IDCSからアクセストークンを取得する
curl -k -X POST -u "クライアントID:クライアント・シークレット" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" https://IDCSアドレス/oauth2/v1/token -d "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__"

#実行例
クライアント・シークレット
curl -k -X POST -u "d05c80cfe7154be1ad7193ee92330123:0000000-0000-0000-0000-000000000000" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" https://idcs-baa6d43cf10d4f9128b9fa2a7b3a11dff.identity.oraclecloud.com/oauth2/v1/token -d "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__"

#コマンドが成功するとアクセストークンが返ってくる
{"access_token":"アクセストークン(約4KB)","token_type":"Bearer","expires_in":3600}

#IDCSから監査ログを抽出する
curl -k -X GET -H "Content-Type:application/json" -H "Authorization: Bearer アクセストークン" "https://IDCSアドレス/admin/v1/AuditEvents?count=1000&sortBy=timestamp&sortOrder=descending&filter=eventId%20sw%20%22sso%22timestamp%20ge%20%開始時間%22and%20timestamp%20le%20%22終了時間%22&attributeSets=all"

#実行例
curl -k -X GET -H "Content-Type:application/json" -H "Authorization: Bearer アクセストークン " "https://idcs-baa6d43cf10d4f978b9fa2a7b3a11dee.identity.oraclecloud.com/admin/v1/AuditEvents?count=1000&sortBy=timestamp&sortOrder=descending&filter=eventId%20sw%20%22sso%22timestamp%20ge%20%222020-02-02T15:00:00.000Z%22and%20timestamp%20le%20%222020-02-03T15:00:00.0Z%22&attributeSets=all" > idcsaudit.json

※count(ログ件数)は最大1000まで。fileterは対象の監査ログの条件を指定することができる。URLエンコードでの記述が必要。日時はUTC。

```
詳しくは、IDCSの[REST APIのドキュメント](https://docs.oracle.com/cd/E83857_01/paas/identity-cloud/rest-api/index.html)を参照

## OMCにIDCSの監査ログをアップロード

IDCSのカスタム・パーサーをダウンロードする
https://github.com/western24/omc4oci/raw/master/IDCS_custom_logsource.zip

- OMCへカスタム・パーサーをアップロードする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/af46e705-9355-a61e-c35c-9470bb26911f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/52378a92-4c34-6860-1bc0-10eeb2a6dc30.png)

- OMCに監査ログをアップロードする
idcsaudit.jsonファイルを以下のリンクを参考に手動でアップロードする
https://qiita.com/western24/items/1d00475d0f0b8c2bb0f9
※ログソースの関連付けでは、IDCS Custom Audit Logを選択する (IDCS Audit API Logsではない)

## OMCによる分析

- ログイン・ログアウトの推移。EventIDでグループ化し、以下を指定する
    - sso.session.create.success (ログイン)
    - sso.session.delete.success (ログオフ)
    - sso.authentication.failure (ログイン失敗)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/f583ddfb-eda2-6a91-01f3-8d23ad37e424.png)

- ログイン失敗ユーザ。X軸 actorName、EventIDはsso.authentication.failureを指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/1732f40b-5b40-90b0-68d6-da67ba8cd31e.png)

- クライアントIP。Host Address(Client)をグループ化基準にする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/e78bcd93-ff48-065e-7412-4890c222da01.png)

OMCは、IPアドレスから逆引きで国や都市の情報を引っ張ってくることができます。グループ化基準にClient Host CountryやClient Host Cityでどのロケーションからアクセスしてきたのかまでの特定が可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/562423/dcaad0b4-9519-c786-e5dc-a72836f88596.png)

OCIのIAMのローカルユーザーでログインした場合は、OCIのAudit側に出力されるので、OCIの監査ログと組み合わせて一つのダッシュボードとしてまとめるのも良いかもしれません。

[Oracle Cloud Infrastructureの監査ログをOracle Management Cloudで分析する](https://qiita.com/western24/items/ab2d84c2882a0baac5b4)


Oracle Management Cloud関連の情報は[こちら](https://qiita.com/western24/items/1e44bfcaa77f3251a263)