GCPの監査ログを有効にしてますか?実はデフォルトで無効になってますよ!
背景
GCSのオブジェクトにアクセスログとか、KMSのアクセスログとか、特にセキュリティに関するサービスのログはなるべく詳しくほしいですよね。
GCPには監査ログという機能があるのですが、ログを出力しすぎて料金かかっちゃうかもしれないからと、Googleが気を使って、 監査ログのうちいくつかは、デフォルトで無効
にしてくれてるんです!
遠慮せずに有効にしてくれればいいのにと思いますが、とりあえず機能を用意してくれるだけでも大変ありがたいので、ぜひ監査ログを有効にしましょう。
結論
- GCPコンソールの
Audio Logs
のページにアクセスし、DEFAULT AUDIT LOGGING
から、全部にチェックをつけて有効にすればOK - 使い方によっては料金が結構かかるかもしれないので、必ずBudgetsの設定をした上で自己責任で行ってください
- (監査ログ関係なくGCP使うならBudgetは必ず設定した方がいいですが)
- とりあえずみんな全ての監査ログを有効にしておくべき(と僕は思います)
解説
監査ログってなに?
- 英語では Audit Logs
- 公式ドキュメント
- ざっくりいうと、監査ログはGCPに関係する操作やアクセスなどのログです
-
Logs Explorer(Cloud Logging)
からみることができます - デフォルトで有効なログや、絶対無効にできないログ、また、デフォルトで無効なログがあります
監査ログの種類
監査ログには4種類あります
- 管理アクティビティ監査ログ
- リソースの構成またはメタデータを変更するAPI呼び出しやその他の管理アクションに関するログ
- たとえば、VMインスタンスを作成したときや、IAM権限を変更したときなど
- 無効にすることはできない
- 料金は無料
- リソースの構成またはメタデータを変更するAPI呼び出しやその他の管理アクションに関するログ
- データアクセス監査ログ
- リソースの構成やメタデータを読み取るAPI呼び出しログなど
- たとえば、GCSバケット内にアクセスしたときなど
- 一般公開リソースや、Google Cloud へのログインなしでアクセスできるリソースに対するデータアクセス オペレーションは、記録されません
- このログを表示するには、
roles/logging.privateLogViewer
またはroles/owner
のロールが必要 - デフォルトで無効
- データアクセス監査ログは、非常に大きくなる可能性があるため
- ログ使用料金はかかる
- リソースの構成やメタデータを読み取るAPI呼び出しログなど
- システム イベント監査ログ
- リソースの構成を変更するGoogleCloud管理アクションのGoogleシステムによって生成されたログ
- 直接的なユーザーのアクションのログではない
- このログを表示するには、
roles/logging.viewer
またはroles/viewer
のロールが必要 - 無効にすることはできない
- 料金は無料
- ポリシー拒否監査ログ
- セキュリティ ポリシー違反のためGoogleCloudサービスがユーザーまたはサービスアカウントへのアクセスを拒否したときのログ
- このログを表示するには、
roles/logging.viewer
またはroles/viewer
のロールが必要 - デフォルトで有効
- ログ使用料金はかかる
- CloudLoggingへの取り込み対象から除外するこもできる
つまり、データアクセス監査ログを有効にしたい!
上で紹介した4種類のうち、デフォルトで無効なのはデータアクセス監査ログだけです
ですが、このログはGCSバケットにあるオブジェクトへのアクセスログを出力してくれるので、ぜひデータアクセス監査ログは出力したいところです。
しかし、お金が絡んでくることなので、無闇に有効にするのもよくないかもしれませんよね。
また、データアクセス監査ログの中にも種類がありまして、ADMIN_WRITE
だけデフォルトで有効になって、無効にすることはできません。
- ADMIN_READ
- ADMIN_WRITE
- DATA_READ
- DATA_WRITE
サービスごとにデータアクセス監査ログを有効にできるの?
できます。
たとえば、GCSとKMSだけ有効にしようということもできますし、プロジェクト丸ごと有効にしようっていうのもできます。
データアクセス監査ログを有効にできる要素としては以下のようなものがあります
- 組織
- フォルダ
- プロジェクト
- 請求先アカウント
- サービス
公式ドキュメント
データアクセス監査ログを有効にする方法
まずは
- GCPコンソールの
Audio Logs
のページにアクセスします
たとえば、プロジェクト全体でデータアクセス監査ログを有効にするには
-
DEFAULT AUDIT LOGGING
から、全部にチェックをつけて有効にすればOK
サービスごとにデータアクセス監査ログを有効にしたい場合は
-
DEFAULT AUDIT LOGGING
から、全部にチェックをつけない(デフォルトでそうなってます) - データアクセス監査ログを有効にしたいサービスを選択して、チェックをつける
terraformでデータアクセス監査ログを有効にできるの?
できないと思います。
僕にはterraformのドキュメントからみつかれらなかったのですが、もしかしたらできるかもしれません。
もしできることを知ってる方がいたら教えて欲しいです!
データアクセス監査ログをCloudLoggingで実際見てみる
-
roles/logging.privateLogViewer
またはroles/owner
のロールを持ったユーザーでCloudLoggingのページへアクセスします
たとえば、GCSバケット内にあるオブジェクトへのアクセスログを表示してみます
- 1,
リソース
から、GCSバケット
を選択します - 2,
ログ名
から、Cloud Audit
のdata_access
を選択します - 3,
ログをストリーム
を選択します
すると、ログがあれば以下のようなログが見れると思います
他にもログをみる方法はあるので、詳しくは公式ドキュメント
まとめ
- 監査ログはとりあえずみんな有効にした方がいい(と僕は思います)
- Budgetは設定は忘れずに
Discussion
記事参考になりました。ありがとうございます!
Terraform ですと、現在
google_organization_iam_audit_config
で設定できそうでした。Terraformで設定できるようになってたんですね!情報ありがとうございますー!!