GCPの監査ログを有効にしてますか?実はデフォルトで無効になってますよ!

公開:2021/02/18
更新:2021/02/18
3 min読了の目安(約3200字TECH技術記事

背景

GCSのオブジェクトにアクセスログとか、KMSのアクセスログとか、特にセキュリティに関するサービスのログはなるべく詳しくほしいですよね。
GCPには監査ログという機能があるのですが、ログを出力しすぎて料金かかっちゃうかもしれないからと、Googleが気を使って、 監査ログのうちいくつかは、デフォルトで無効にしてくれてるんです!
遠慮せずに有効にしてくれればいいのにと思いますが、とりあえず機能を用意してくれるだけでも大変ありがたいので、ぜひ監査ログを有効にしましょう。

結論

  • GCPコンソールの Audio Logs のページにアクセスし、DEFAULT AUDIT LOGGINGから、全部にチェックをつけて有効にすればOK
  • 使い方によっては料金が結構かかるかもしれないので、必ずBudgetsのした上で自己責任で行ってください
    • (監査ログ関係なくGCP使うならBudgetは必ず設定した方がいいですが)
  • とりあえずみんな全ての監査ログを有効にしておくべき(と僕は思います)

解説

監査ログってなに?

監査ログの種類

監査ログには4種類あります

  • 管理アクティビティ監査ログ
    • リソースの構成またはメタデータを変更するAPI呼び出しやその他の管理アクションに関するログ
      • たとえば、VMインスタンスを作成したときや、IAM権限を変更したときなど
    • 無効にすることはできない
    • 料金は無料
  • データアクセス監査ログ
    • リソースの構成やメタデータを読み取るAPI呼び出しログなど
      • たとえば、GCSバケット内にアクセスしたときなど
    • 一般公開リソースや、Google Cloud へのログインなしでアクセスできるリソースに対するデータアクセス オペレーションは、記録されません
    • このログを表示するには、roles/logging.privateLogViewerまたはroles/ownerのロールが必要
    • デフォルトで無効
      • データアクセス監査ログは、非常に大きくなる可能性があるため
    • ログ使用料金はかかる
  • システム イベント監査ログ
    • リソースの構成を変更する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で実際見てみる

たとえば、GCSバケット内にあるオブジェクトへのアクセスログを表示してみます

  • 1, リソースから、GCSバケットを選択します
  • 2, ログ名から、Cloud Auditdata_accessを選択します
  • 3, ログをストリームを選択します

すると、ログがあれば以下のようなログが見れると思います

他にもログをみる方法はあるので、詳しくは公式ドキュメント

まとめ

  • 監査ログはとりあえずみんな有効にした方がいい(と僕は思います)
  • Budgetは設定は忘れずに