3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Oracle Cloud (OCI) Audit を利用したアクティビティの監視

Last updated at Posted at 2021-06-12

はじめに

システムを安全に運用していくためには、オンプレミスと同様、パブリック・クラウドにおいても リソースの操作の監視、管理は重要です。AWSでは CloudTrail、Azureでは Activity Log が提供されているように、Oracle Cloud Infrastructure (OCI) でも アクティビティ監視のためのサービスとして、Audit (監査) があります。

Audit (監査) は 昔からあるサービスではありますが、アップデートされている部分もあるので、改めて本記事では「OCI でのアクティビティ監視ってどうやるの?」と思われている方に向けて 解説していきたいと思います。

Audit (監査) とは

まずはじめに、概要のお話です。Audit (監査) は、元々は独立したサービスでしたが、2020年秋頃に Logging というサービスが提供された際に、Logging のなかの1機能のような立ち位置になりました。この際、ログの保持期間のデフォルト値が変わるなど、細かな変更はありましたが、基本的な機能は変わっていません。

  • 概要
    • OCI上の 全てのAPIコールを自動的に記録するサービス
    • デフォルト有効化されており、無償 で利用が可能
    • 記録された情報 (監査ログ) は 365日分 保持される(*1)
    • 全てのサービスでサポートされているが、オブジェクト・ストレージ・サービスのうち、"オブジェクト" に関連したイベントは対象外(*2)

(*1) 期間は変更不可。保存要件に満たない場合、ユーザ側でオブジェクト・ストレージに保存するなどの対応が必要です
(*2) オブジェクト関連のログが必要な場合、Logging でサービス・ログを有効化することを検討してください

ログで確認できる内容

監査ログは JSON 形式のドキュメントで保存されます。各項目の詳細については、OCI ドキュメント:"監査ログ・イベントの内容" に記載の通りです。
様々な項目がありますが、ここでは 一部だけピックアップして紹介します。

  • source : イベントを生成したリソース名
    例."instancePool-01", "testBucket" など
  • time : イベントの発生した時刻
    例."2021-06-11T10:20:29.641Z" など
  • data.eventName : このイベントを生成した API 操作名
    例."GetInstance", "GetBucket" など
  • data.message : 操作によって起きた内容の説明
    例."GetInstancePool succeeded", "Bucket details retrieved." など
  • data.identity.ipAddress : リクエストの送信元 IPアドレス
    例."10.0.30.xx", "129.2xx.xx.xx" など
  • data.identity.principalId : リクエストを行ったプリンシパルのOCID
    例."ocid1.user.oc1..aaaaag~" など
  • data.identity.principalName : プリンシパルIDに紐づくユーザ名またはサービス名
    例."autoscaling", "dev-user1" など
  • data.request.action : リクエストのHTTPメソッド
    例."GET", "DELETE", "POST" など
  • data.request.headers : HTTPヘッダーのフィールドとその値

ここで挙げたように、ログからは 誰が何のサービスが)どのリソースに対して、どのような操作を、いつ行い何が発生したのか、など、基本的な内容が確認できることが分かります。(当たり前ですね…!)

GUIで監査ログを確認する

監査サービスは、OCI コンソール・メニュー監視および管理監査 からアクセスできます。
image-20210611130044563.png
このページでは、監査ログの検索、その結果の閲覧、エクスポートが行えます。また、下記項目を用いてフィルタリングが可能です。
なお、監査ログは、操作が行われたコンパートメントに紐づくため、対象の操作がどのコンパートメントで行われたのかを理解し、適切なコンパートメントを選択する必要があります。

  • ユーザー:操作を行ったプリンシパル名
    例."autoscaling", "dev-user1" など
  • リソース:イベントを生成したリソース名
    例."instancePool-01", "testBucket" など
  • リクエスト・アクション・タイプ:リクエストのHTTPメソッド
    例."GET", "DELETE", "POST" など
  • イベント・タイプ:発生したイベントの種類
    例."com.oraclecloud.objectstorage.getbucket" など
  • カスタム・フィルタ:監査ログに含まれる様々な項目を用いたフィルタ
    項目名の入力を開始すると、項目の候補や演算子が自動的に表示され、入力を補助してくれます。
  • 時間によるフィルタ:検索対象期間の指定
    「過去5分間」「過去15分間」「今日」などの選択肢があります。「カスタム」を選択することで自由な期間を指定できますが、最大14日というレンジの中で指定する必要があります
    image.png

検索した結果は、以下のように表示されます。また、検索結果を ログ・データのエクスポート(JSON) ボタンから エクスポートすることも可能です。
ただし、検索結果は 500件が上限 となっていますので、それ以上のデータを取得したい場合は、CUIの利用をオススメします。
image.png

CUIで監査ログを確認する

前述の通り、GUIでの検索は 表示上限が500件といった制約があります。CUIを利用することで、それ以上のログを取得することが可能です。
なお、CUIにおいても検索期間のレンジが最大14日間であるという制約は変わらないため、より長期間でログを取得したい場合は、後述の「監査ログを出力する」を確認してください。

CUIには、Auditのコマンドを利用する方法 と、Logging のコマンドを利用する方法2種類 があります。これは、Audit (監査) サービスが 2020年秋頃に Logging のなかの1機能のような立ち位置になったことに起因します。特に制約がなければ、今後は Logging コマンドの利用するのが良いと思います。

例:"audit"コマンド(全件取得)
oci audit event list --compartment-id <compartment-id> --end-time yyyy-MM-ddT00:00:00Z --start-time yyyy-MM-ddT00:00:00Z --all
例:"logging"コマンド(1000件取得)
oci logging-search search-logs --search-query "search \"<compartment-id>/_Audit\" | sort by datetime desc" --time-end 2021-03-16 --time-start 2021-02-15 --limit 1000

上記のとおり、Logging のコマンドでは search-logs というパラメータで、"問合せ構文" というステートメントを指定して ログの問合せを行います。
「問合せ構文なんて知らんがな」という方は、GUIの検索機能でフィルタ項目などを設定した後、検索に変換 というボタンをクリックしましょう。フィルタで設定した内容を構文に変換 してくれます

image.png
image.png

監査ログを出力する

GUIやCUIを通じた監査ログの取得は、14日間という制約があるため、長期間のログを取得するには不便です。
まとまった期間のデータを扱いたい場合は、SR(Service Request) で一括取得する方法(要 5〜10営業日)の他に、サービス・コネクタ・ハブで取得/蓄積していく方法 が挙げられます。

サービス・コネクタ・ハブは ざっくり言うと サービス間のデータ連携ができるサービスです。利用する際の 大まかな流れは、下記記事にて詳細に記載してくださっていますので、まずはこちらをご参照ください。

基本的には上記記事の通りですが、監査ログのログ・グループ名は、決め打ちで「_Audt」となっています。ソースを指定する際は、取得したいコンパートメントと そこに紐づく「_Audit」グループを選択しましょう。
また、下記の画面イメージでは連携先にオブジェクト・ストレージを選択していますが、他にファンクション、ログ・アナリティクスなども選択可能です。

image.png

その他、ターゲットに連携する際は、ログ・フィルタ・タスクを指定してフィルタリングをかけたり、ファンクションを実行する、といったことも可能です。

image.png

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

アドホックな検索であれば、これまでに述べた方法でも問題ないかと思います。しかし、定常的な監査業務や、より俯瞰的、視覚的な分析をしたいと言う場合には、Oracle Management Cloud など、別サービスと連携させることもオススメです。

少し前の記事になりますが、Oracle Cloud Infrastructureの監査ログをOracle Management Cloudで分析する という記事にて、詳しく記載してくださっているので、是非ご参照ください。

おわりに

システムの運用・監視という観点では他にも ネットワーク監視、OS監視、アプリケーション監視といった観点が挙げられますが、本記事では、"操作履歴の監視(監査)" にフォーカスして機能を紹介しました。

もちろん、その他の監視項目に対しても、様々な有用なサービスが提供されていますので、興味があれば是非調べて活用していただけると幸いです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?