TORIPIYO DIARY

recent events, IoT, programming, security topics

GCPの監査ログの概要を理解する

GCPの利用

最近、会社のセキュリティ設定監査のためにGCP環境をよく触っている。GCPはあまり使ってこなかったけど、プロジェクト(AWSで言えばルートアカウントみたいなもの)の切り替えがスムーズだったり、デフォルトでデータが暗号化して保存されるようになっている場合(セキュリティ的に助かる)が多いなど、AWSよりも快適と思うところもある。(IAMのポリシー設定は慣れていないだけなのかもしれないけど、AWSの方が良く感じる)

パブリッククラウドのセキュリティ設定の監査をしていて、外せないのは、監査ログを取得するように設定されているかどうかということ。AWSの場合は、CloudTrailを利用すれば監査ログが取得できるようになる。GCPの場合は、Cloud Audit Logsというサービスを利用して監査ログを取得する。

Cloud Audit Logs と Cloud Logging

Cloud Audit Logsは、Cloud Loggingのログの一種。GCPでは、Cloud Loggingを利用して、GKEで動いているコンテナアプリのログなど色々なログを取得できる。(最初、Cloud LoggingとCloud Audit Logsの関係性がよくわからなくて少し混乱した。AWSのように、監査ログは CloudTrail と完全に独立しているわけではない。)

Cloud Audit Logs の4種類のログ

Cloud Audit Logsは、GCPの監査ログであり、以下の4種類に分類される。

  • Admin Activity audit logs
  • Data Access audit logs
    • リソースの設定やメタデータ参照するAPI呼び出しや、ユーザによって提供されたデータの作成、参照・修正をするAPI呼び出しを記録
  • System Event audit logs
    • Google Cloudによるリソース設定の修正操作を記録、Googleのシステムによって生成される(ユーザによる操作ではない)
  • Policy Denied audit logs

4種類もあるので、これも最初は混乱した。例えば、GCS(Cloud Storage)のオブジェクトへの参照ログを確認するには、どのログを見れば良いのか、わからなかったからだ。(今なら、Data Access audit logsを見れば良いと分かるけど)

これら4種類のログはサービスによっては4種類全て取得されるわけではない。こちらに、各サービスはどのタイプのログを記録できるのかが一覧で掲載されている。

例えば、Cloud Storageでは、Admin Activity audit logs と Data Access audit logs は取得できるが、System Event audit logs と Policy Denied audit logs は取得できない。ほとんどのサービスで、 System Event audit logs と Policy Denied audit logs は取得できないらしい。

また、4種類のログのデフォルトの保管期間は異なる。Admin Activity audit logs と System Event audit logs の保管期間は400日だけど、Data Access audit logs と Policy Denied audit logs の保管期間は30日なので監査上問題の起こりそうな場合はデフォルトの設定から変更する必要がある。

Data Access audit logs の3種類のログ

Data Access audit logsは、さらに3種類のログに分類される。(慣れたら分かるのかもしれないけれど、AWSに比べると本当細かく分類されている。。)

  • ADMIN_READ
  • DATA_READ
    • ユーザによって提供されたデータ参照を記録
  • DATA_WRITE
    • ユーザによって提供されたデータ書き込みを記録

GCS(Cloud Storage)なら、各操作のログは以下のように分類される。

  • Admin Activity audit logs

    • バケットの作成・削除、IAMポリシーの変更、オブジェクトのACL設定の変更 など
  • Data Access Audit logs

    • ADMIN_READ
    • DATA_READ
      • オブジェクトデータの参照、オブジェクトメタデータの参照、オブジェクトの一覧表示、オブジェクトのコピー など
    • DATA_WRITE
      • オブジェクトデータの作成・削除、ACL設定されていないオブジェクトのメタデータの更新、オブジェクトのコピー など

一部の操作(例:オブジェクトのコピー など)では、複数の分類に含まれることもある。例えば、コピー操作であれば、参照と書き込みの両方が実行されるから両方に含まれる。

このように、具体例を見れば確かにその分類に入りそうな操作が記録されてると分かる。ただし、GCPAWSと比べるとログの分類が細かいのでやっぱり慣れは少し必要だと思う。