はじめに
OCIではOracle Cloud Infrastructure Auditサービスにより、OCIでサポートされている全てのパブリック、アプリケーション・プログラミング・インタフェース(API)エンドポイントへのコールがログ・イベントとして自動的に記録されます。
この記録されたログ・イベントには以下の内容が含まれています。
- APIアクティビティが発生した時間
- アクティビティのソース
- アクティビティのターゲット
- アクションのタイプ
- レスポンスのタイプ
しかし、OCIでは監査ログは365日しか保存できず、長期間のログ保存ポリシーを適用されている企業様などでは要望を満たすことができません。
そこで、監査ログ・イベントの一括エクスポート機能をご紹介したいと思います。
今回紹介する監査ログ・イベントの一括エクスポート機能を使用すると、通常取得されている監査ログ・イベントをオブジェクト・ストレージへ定期的に、自動的に保存してくれるようになります。
設定としては、監査ログ・イベントの一括エクスポートのドキュメントにあるように、My Oracle Supportでチケットを作成するだけです。
1. チケット作成
監査ログ・イベントの一括エクスポートのドキュメントにあるように、下記情報を記載したチケットを作成します。
- チケット名: Export Audit Logs – <your_company_name>
- テナンシOCID
- リージョン
チケット名
をSRの問題のサマリーとし、テナンンシOCIDとリージョンの情報のみを本文に記載しチケットを作成しましたが、本文にチケット名を含めるように返答がありましたので、冗長に感じても全ての情報を本文記載した方が良いと思われます。また、本チケットに限りませんが、OCIのサポート担当者の方は英語圏の方が多いため、なるべく英語で書いた方が、より適切・スピーディーな対応が期待できます。
2. 監査ログ・イベントのエクスポート
5~10営業日程度で、SRが更新され監査ログがオブジェクト・ストレージにエクスポートされてきます。
エクスポートされた監査ログは下記の注意点などがあります。
- ドキュメントに記載されていますが、
oci-logs._audit.<compartment_OCID>
のバケット名でエクスポートされます。 - バケットはルートコンパートメントの直下に作成され、変更などはできないようです。
- エクスポートされた、監査ログ・イベントは無期限の保存ポリシーとなっています。
監査ログ・イベントは バケット → リージョン → 可用性ドメイン 配下に <YYYY-MM-DDTHH:MMZ>.log.gz のフォーマットで保管されます。
また、監査ログ・イベントのオブジェクトが大きい場合などの場合、<YYYY-MM-DDTHH:MMZ>[_<seqNum>].log.gz のように、順序番号が含まれることがあります。
3 監査ログの内容を確認する
エクスポートされた監査ログ・イベントをダウンロードします。
監査ログは1行に1イベントが記述され、CloudEventsのバージョン1のスキーマ形式となっています。
下記は監査ログ・イベントの出力例となります。
1 2 |
{"tenantId":"ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","compartmentId":"ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","compartmentName":"xxxxxxxxxx","eventId":"a4d3ea35-xxxx-xxxx-xxxx-xxxxxxxxxxxx","eventName":"ListVaults","eventSource":"KeyManagementService","eventType":"ServiceApi","eventTime":"2021-06-30T01:55:08.655Z","principalId":"compartmentsservice/XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX","credentialId":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.X","requestAction":"GET","requestId":"XXXXXXXXXXXXXXXX","requestAgent":"Cloud Infra/compartments/platform-compartments","requestHeaders":{"X-OCI-LB-NetworkMetadata":["{\"originalConnection\":{\"sourceIp\":\"xxx.xxx.xxx.xxx\",\"sourcePort\":39203,\"destinationIp\":\"xxx.xxx.xxx.xxx\",\"destinationPort\":443,\"protocol\":\"https\"}}"],"opc-principal":["{\"tenantId\":\"ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"subjectId\":\"compartmentsservice/XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX\",\"claims\":[{\"key\":\"ptype\",\"value\":\"service\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"h_(request-target)\",\"value\":\"get /20180608/vaults?compartmentId=ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"issuer\":\"h\"},{\"key\":\"fprint\",\"value\":\"XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"is_svc\",\"value\":\"true\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"opc-certtype\",\"value\":\"service\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"authorization\",\"value\":\"Signature headers=\\\"date (request-target) x-cross-tenancy-request\\\",keyId=\\\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",algorithm=\\\"rsa-pss-sha256\\\",signature=\\\"*****\\\",version=\\\"1\\\"\",\"issuer\":\"h\"},{\"key\":\"h_date\",\"value\":\"Wed, 30 Jun 2021 01:55:08 UTC\",\"issuer\":\"h\"},{\"key\":\"svc\",\"value\":\"compartmentsservice\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"ttype\",\"value\":\"x509\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"h_x-cross-tenancy-request\",\"value\":\"ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"issuer\":\"h\"}]}"],"Accept":["application/json"],"x-cross-tenancy-request":["ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],"User-Agent":["Cloud Infra/compartments/platform-compartments"],"Connection":["keep-alive"],"Accept-Encoding":["gzip,deflate"],"X-Real-Port":["39203"],"Date":["Wed, 30 Jun 2021 01:55:08 UTC"],"X-Forwarded-For":["xxx.xxx.xxx.xxx"],"opc-request-id":["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],"X-Real-IP":["xxx.xxx.xxx.xxx"],"oci-original-url":["https://kms.ap-tokyo-1.oraclecloud.com/20180608/vaults"]},"requestOrigin":"xxx.xxx.xxx.xxx","requestParameters":{"compartmentId":["ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]},"requestResource":"/20180608/vaults","responseHeaders":{"Cache-Control":["no-cache, no-store, no-transform, must-revalidate"],"opc-limit":["100"],"Vary":["Accept-Encoding"],"Content-Length":["3"],"opc-request-id":["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],"Date":["Wed, 30 Jun 2021 01:55:08 GMT"],"Content-Type":["application/json"]},"responseStatus":"200","responseTime":"2021-06-30T01:55:08.781Z","userName":"compartmentsservice"} {"tenantId":"ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","compartmentId":"ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","compartmentName":"xxxxxxxxxx","eventId":"a4d3ea35-xxxx-xxxx-xxxx-xxxxxxxxxxxx","eventName":"ListVaults","eventSource":"KeyManagementService","eventType":"ServiceApi","eventTime":"2021-06-30T01:55:08.655Z","principalId":"compartmentsservice/XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX","credentialId":"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.X","requestAction":"GET","requestId":"XXXXXXXXXXXXXXXX","requestAgent":"Cloud Infra/compartments/platform-compartments","requestHeaders":{"X-OCI-LB-NetworkMetadata":["{\"originalConnection\":{\"sourceIp\":\"xxx.xxx.xxx.xxx\",\"sourcePort\":39203,\"destinationIp\":\"xxx.xxx.xxx.xxx\",\"destinationPort\":443,\"protocol\":\"https\"}}"],"opc-principal":["{\"tenantId\":\"ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"subjectId\":\"compartmentsservice/XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX\",\"claims\":[{\"key\":\"ptype\",\"value\":\"service\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"h_(request-target)\",\"value\":\"get /20180608/vaults?compartmentId=ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"issuer\":\"h\"},{\"key\":\"fprint\",\"value\":\"XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"is_svc\",\"value\":\"true\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"opc-certtype\",\"value\":\"service\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"authorization\",\"value\":\"Signature headers=\\\"date (request-target) x-cross-tenancy-request\\\",keyId=\\\"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",algorithm=\\\"rsa-pss-sha256\\\",signature=\\\"*****\\\",version=\\\"1\\\"\",\"issuer\":\"h\"},{\"key\":\"h_date\",\"value\":\"Wed, 30 Jun 2021 01:55:08 UTC\",\"issuer\":\"h\"},{\"key\":\"svc\",\"value\":\"compartmentsservice\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"ttype\",\"value\":\"x509\",\"issuer\":\"authService.oracle.com\"},{\"key\":\"h_x-cross-tenancy-request\",\"value\":\"ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\"issuer\":\"h\"}]}"],"Accept":["application/json"],"x-cross-tenancy-request":["ocid1.tenancy.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],"User-Agent":["Cloud Infra/compartments/platform-compartments"],"Connection":["keep-alive"],"Accept-Encoding":["gzip,deflate"],"X-Real-Port":["39203"],"Date":["Wed, 30 Jun 2021 01:55:08 UTC"],"X-Forwarded-For":["xxx.xxx.xxx.xxx"],"opc-request-id":["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],"X-Real-IP":["xxx.xxx.xxx.xxx"],"oci-original-url":["https://kms.ap-tokyo-1.oraclecloud.com/20180608/vaults"]},"requestOrigin":"xxx.xxx.xxx.xxx","requestParameters":{"compartmentId":["ocid1.compartment.oc1..xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]},"requestResource":"/20180608/vaults","responseHeaders":{"Cache-Control":["no-cache, no-store, no-transform, must-revalidate"],"opc-limit":["100"],"Vary":["Accept-Encoding"],"Content-Length":["3"],"opc-request-id":["xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"],"Date":["Wed, 30 Jun 2021 01:55:08 GMT"],"Content-Type":["application/json"]},"responseStatus":"200","responseTime":"2021-06-30T01:55:08.781Z","userName":"compartmentsservice"} |
以降では、監査ログ・イベントの保存ポリシーの設定など、ちょっとしたTipsをご紹介していきたいと思います。
ストレージ層の変更
デフォルトでは各オブジェクトは標準ストレージ層での保存となっており、保存期間にやログサイズによっては費用が嵩んでしまいます。
そこで、自動階層化を有効にし、古い監査ログのオブジェクトを頻度の低いアクセス層に自動的に移動するようにします。
もしくは、ライフサイクル・ルールにより、指定日数を経過したオブジェクトをアーカイブ層に移動するようにします
アーカイブ・ストレージは長期間の保存に適していますが、データの取り出しに時間がかかってしまうなど、それぞれ一長一短がありますので、監査ログの利用方法に適したストレージ層を選択していただければと思います。
保持ルールの作成
一般的に監査ログは、保持期間中は破棄・改変などは行われないようにする必要があります。
そこで、保持ルールを設定し、保持期間中はオブジェクトの変更は行えないようにします。
画面イメージは5年保持の設定となります
オブジェクトの自動削除
デフォルトでは無期限の保存ポリシーとなっていますので、システム監査のルールなどの保持必要期間を満たせば、自動的に削除されるように設定を行います。
画面イメージは5年保持後削除する設定となります
監査ログへのアクセスログの保存
監査ログ・イベント自体の閲覧などをログ保存し、監査ログへのアクセスを記録します。
システム監査時以外に監査ログを閲覧することは少ないと思われるため、不必要なアクセスを確認することができます。
まとめ
以上が監査ログを長期間保存する手法の例となります。
My Oracle Supportでチケットを作成する必要があったり、上記の保持ルールなどはバケット単位で設定しなければならないなど、少し手間ではありますが、エンタープライズな利用を想定する場合では必要な機能ではありますので、是非とも監査機能の活用をご検討いただければと思います。