このドキュメントでは、Cloud Audit Logs の概要について説明します。
Google Cloud サービスでは、管理アクティビティと Google Cloud リソース内のアクセスを記録する監査ログを書き込みます。監査ログは、Google Cloud リソース内でオンプレミス環境と同じレベルの透明性を確保しながら「いつ誰がどこで何をしたか」という問いに答えるために役立ちます。監査ログを有効にすると、セキュリティ、監査、コンプライアンス エンティティが Google Cloud のデータとシステムをモニタリングして、脆弱性や外部データの不正使用の可能性を確認できます。
監査ログを生成する Google Cloud サービス
監査ログを書き込む Google Cloud サービスの一覧については、監査ログ付きの Google Cloud サービスをご覧ください。最終的には、すべての Google Cloud サービスが監査ログを提供するようになります。
Google Workspace 監査ログの概要については、Google Workspace の監査ログをご覧ください。
必要なロール
監査ログを表示するには、適切な Identity and Access Management(IAM)の権限とロールが必要です。
-
管理者アクティビティ、ポリシー拒否、システム イベントの監査ログへの読み取り専用アクセスに必要な権限を取得するには、プロジェクトに対するログ閲覧者(
roles/logging.viewer
)の IAM ロール付与するように管理者に依頼してください。ログ閲覧者のロール
(roles/logging.viewer)
しか持っていない場合、_Default
バケット内のデータアクセス監査ログを閲覧することはできません。
-
データアクセス ログを含む、
_Required
バケットと_Default
バケットのすべてのログへのアクセス権を取得するために必要な権限を取得するには、プロジェクトに対するプライベート ログ閲覧者(roles/logging.privateLogViewer
)の IAM ロール付与するように管理者に依頼してください。プライベート ログ閲覧者のロール
(roles/logging.privateLogViewer)
には、ログ閲覧者のロール(roles/logging.viewer
)に含まれる権限と、_Default
バケット内のデータアクセス監査ログの読み取りに必要な権限が含まれます。
監査ログデータに適用される IAM の権限とロールの詳細については、IAM を使用したアクセス制御をご覧ください。
監査ログの種類
Cloud Audit Logs では、Google Cloud プロジェクト、フォルダ、組織ごとに以下の監査ログが保存されます。
管理アクティビティ監査ログ
管理アクティビティ監査ログには、リソースの構成またはメタデータを変更する API 呼び出しやその他の管理アクションに関するログエントリが含まれます。これらのログは、たとえば、ユーザーが VM インスタンスを作成したときや Identity and Access Management 権限を変更したときに記録されます。
管理アクティビティ監査ログは常に書き込まれます。構成する、除外する、または無効にすることはできません。Cloud Logging API を無効にしても、管理アクティビティ監査ログは生成されます。
管理アクティビティ監査ログを書き込むサービスのリストと、それらのログを生成するアクティビティの詳細については、監査ログを備えた Google Cloud サービスをご覧ください。
データアクセス監査ログ
データアクセス監査ログには、リソースの構成やメタデータを読み取る API 呼び出しや、ユーザー提供のリソースデータの作成、変更、読み取りを行うユーザー主導の API 呼び出しが含まれます。
Identity and Access Management ポリシー allAuthenticatedUsers
または allUsers
を使用する一般公開されたリソースでは、監査ログは生成されません。Google Cloud、Google Workspace、Cloud Identity、Drive Enterprise アカウントにログインせずにアクセスできるリソースでは、監査ログは生成されません。これにより、エンドユーザー ID と情報が保護されます。
監査ログはデータサイズが非常に大きくなる可能性があるため、BigQuery データアクセス監査ログを除き、データアクセス監査ログはデフォルトで無効になっています。BigQuery 以外の Google Cloud サービスのデータアクセス監査ログを書き込むには、明示的に有効にする必要があります。ログを有効にすると、追加のログ使用量について Google Cloud プロジェクトに対して課金される可能性があります。データアクセス監査ログを有効にして構成する手順については、データアクセス監査ログを有効にするをご覧ください。
データアクセス監査ログを書き込むサービスのリストと、それらのログを生成するアクティビティの詳細については、監査ログを備えた Google Cloud サービスをご覧ください。
データアクセス監査ログは、別の場所に転送しない限り _Default
ログバケットに保存されます。詳細については、このページの監査ログの保存とルーティングをご覧ください。
システム イベント監査ログ
システム イベント監査ログには、リソースの構成を変更する Google Cloud アクションのログエントリが含まれます。システム イベント監査ログは Google Cloud システムによって生成されます。直接的なユーザーのアクションによって生成されることはありません。
システム イベント監査ログは常に書き込まれます。構成したり、除外したり、無効にしたりすることはできません。
システム イベント監査ログを書き込むサービスのリストと、それらのログを生成するアクティビティの詳細については、監査ログを備えた Google Cloud サービスをご覧ください。
ポリシー拒否監査ログ
セキュリティ ポリシー違反が原因で、Google Cloud サービスがユーザーやサービス アカウントへのアクセスを拒否した場合は、ポリシー拒否監査ログが記録されます。
ポリシー拒否監査ログはデフォルトで生成され、Google Cloud プロジェクトにはログ ストレージの料金が発生します。ポリシー拒否監査ログを無効にすることはできませんが、除外フィルタを使用して、ポリシー拒否監査ログの Cloud Logging への保存を防ぐことができます。
ポリシー拒否監査ログを書き込むサービスのリストと、それらのログを生成するアクティビティの詳細については、監査ログを備えた Google Cloud サービスをご覧ください。
監査ログエントリの構造
Cloud Logging では、監査ログエントリはすべて LogEntry
タイプのオブジェクトになります。監査ログエントリと他のログエントリを区別するのは、protoPayload
フィールドです。このフィールドには、監査ロギングデータを格納する AuditLog
オブジェクトが含まれています。
監査ログエントリの読み取りと解釈の方法と、監査ログエントリのサンプルについては、監査ログについてをご覧ください。
ログ名
Cloud Audit Logs のログ名は次のとおりです。
監査ログを所有する Google Cloud プロジェクトまたは他の Google Cloud エンティティを示すリソース識別子。
文字
cloudaudit.googleapis.com
。ログに管理アクティビティ、データアクセス、ポリシー拒否、システム イベントの監査ロギングデータが含まれているかどうかを示す文字列。
リソース識別子の変数を含む監査ログ名は次のとおりです。
projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_access projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fpolicy folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Factivity folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fdata_access folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fsystem_event folders/FOLDER_ID/logs/cloudaudit.googleapis.com%2Fpolicy billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fpolicy organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Factivity organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fdata_access organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fsystem_event organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com%2Fpolicy
監査ログの呼び出し元 ID
監査ログには、ログに記録されたオペレーションを Google Cloud リソースに対して実行した ID が記録されます。呼び出し元の ID は、AuditLog
オブジェクトの AuthenticationInfo
フィールドに保持されます。
成功したアクセスや書き込みオペレーションの呼び出し元のメールアドレスは、監査ロギングによって編集されません。
「権限が拒否されました」というエラーで失敗した読み取り専用オペレーションの場合、Audit Logging で呼び出し元の主要メールアドレスを秘匿化する必要があります(呼び出し元がサービス アカウントである場合を除く)。
特定の Google Cloud サービスには、上記の条件に加えて以下が適用されます。
- 以前の App Engine API: ID は収集されません。
BigQuery: 特定の条件が満たされない限り、発信者の ID と IP アドレスに加えて、一部のリソース名が監査ログから削除されます。
Cloud Storage: Cloud Storage の使用状況ログが有効になっている場合、Cloud Storage は Cloud Storage バケットに使用状況データを書き込みます。これにより、バケットのデータアクセスの監査ログが生成されます。生成されたデータアクセスの監査ログには、呼び出し元の ID が含まれます。
- Firestore:サードパーティの認証に JSON ウェブトークン(JWT)が使用された場合、
thirdPartyPrincipal
フィールドにはトークンのヘッダーとペイロードが含まれます。たとえば、Firebase Authentication で認証されたリクエストの監査ログには、そのリクエストの認証トークンが含まれます。
VPC Service Controls: ポリシー拒否監査ログの場合、次の秘匿化が行われます。
発信者のメールアドレスの一部が秘匿化されて、3 つのピリオド文字
...
に置き換えられます。ドメイン
google.com
に属する一部の呼び出し元メールアドレスが秘匿化されて、google-internal
に置き換えられます。
- 組織のポリシー: 発信者のメールアドレスの一部が秘匿化されて、3 つのピリオド文字
...
に置き換えられます。
監査ログの呼び出し元の IP アドレス
呼び出し元の IP アドレスは、AuditLog
オブジェクトの RequestMetadata.callerIp
フィールドに保持されます。
- インターネットからの呼び出し元の場合、このアドレスはパブリック IPv4 またはパブリック IPv6 アドレスです。
- 内部本番環境ネットワーク内で 1 つの Google Cloud サービスから他の Google Cloud サービスに対して行われた呼び出しの場合、
callerIp
は「private」に秘匿化されます。 - 外部 IP アドレスを持つ Compute Engine VM から呼び出し元を呼び出す場合、
callerIp
は VM の外部アドレスです。 - 外部 IP アドレスのない Compute Engine VM からの呼び出し元の場合、VM がアクセス先のリソースと同じ組織またはプロジェクトにあると、
callerIp
は VM の内部 IPv4 アドレスです。それ以外の場合、callerIp
は「gce-internal-ip」に秘匿化されます。詳細については、VPC ネットワークの概要をご覧ください。
監査ログの表示
すべての監査ログに対してクエリを実行することも、監査ログ名でログをクエリすることもできます。監査ログ名には、監査ロギング情報を表示する Google Cloud プロジェクト、フォルダ、請求先アカウント、または組織のリソース識別子が含まれています。クエリでは、インデックス付きの LogEntry
フィールドを指定できます。ログのクエリの詳細については、ログ エクスプローラでクエリを作成するをご覧ください。
ログ エクスプローラでは、個々のログエントリをフィルタして表示できます。SQL を使用してログエントリのグループを分析する場合は、[ログ分析] ページを使用します。詳しくは以下をご覧ください。
ほとんどの監査ログは、Google Cloud コンソール、Google Cloud CLI、または Logging API を使用して Cloud Logging で表示できます。ただし、課金に関連する監査ログの場合は、Google Cloud CLI または Logging API のみを使用できます。
Console
Google Cloud コンソールでは、ログ エクスプローラを使用して、Google Cloud プロジェクト、フォルダ、または組織の監査ログエントリを取得できます。
-
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] の結果を選択します。
既存の Google Cloud プロジェクト、フォルダ、または組織を選択します。
すべての監査ログを表示するには、次のいずれかのクエリを [クエリエディタ] フィールドに入力し、[クエリを実行] をクリックします。
logName:"cloudaudit.googleapis.com"
protoPayload."@type"="type.googleapis.com/google.cloud.audit.AuditLog"
特定のリソースと監査ログタイプの監査ログを表示するには、[クエリビルダー] ペインで次の操作を行います。
リソースタイプに、表示する監査ログを含む Google Cloud リソースを選択します。
[ログ名] で、表示する監査ログタイプを選択します。
- 管理アクティビティ監査ログの場合は、[activity] を選択します。
- データアクセス監査ログの場合は、[data_access] を選択します。
- システム イベント監査ログの場合は、[system_event] を選択します。
- ポリシー拒否監査ログの場合は、[policy] を選択します。
[クエリを実行] をクリックします。
これらのオプションが表示されない場合、Google Cloud プロジェクト、フォルダ、または組織で利用可能なその種類の監査ログは存在しないことを意味します。
ログ エクスプローラでログを表示する際に問題が発生した場合は、トラブルシューティングの情報をご覧ください。
ログ エクスプローラを使用したクエリの詳細については、ログ エクスプローラでクエリを作成するをご覧ください。
gcloud
Google Cloud CLI は、Logging API へのコマンドライン インターフェースを提供します。ログ名ごとに有効なリソース識別子を指定します。たとえば、クエリに PROJECT_ID が含まれている場合、指定するプロジェクト ID は、現在選択された Google Cloud プロジェクトを参照している必要があります。
Google Cloud プロジェクト レベルの監査ログエントリを読み取るには、次のコマンドを実行します。
gcloud logging read "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" \ --project=PROJECT_ID
フォルダレベルの監査ログエントリを読み取るには、次のコマンドを実行します。
gcloud logging read "logName : folders/FOLDER_ID/logs/cloudaudit.googleapis.com" \ --folder=FOLDER_ID
組織レベルの監査ログエントリを読み取るには、次のコマンドを実行します。
gcloud logging read "logName : organizations/ORGANIZATION_ID/logs/cloudaudit.googleapis.com" \ --organization=ORGANIZATION_ID
Cloud 請求先アカウント レベルの監査ログエントリを読み取るには、次のコマンドを実行します。
gcloud logging read "logName : billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com" \ --billing-account=BILLING_ACCOUNT_ID
1 日以上経過したログを読み取るには、コマンドに --freshness
フラグを追加します。
gcloud CLI の使用方法に関する詳細については、gcloud logging read
をご覧ください。
REST
クエリを作成するときは、ログ名ごとに有効なリソース識別子を指定します。たとえば、クエリに PROJECT_ID が含まれている場合、指定するプロジェクト ID は、現在選択された Google Cloud プロジェクトを参照している必要があります。
たとえば、Logging API を使用してプロジェクト レベルの監査ログエントリを表示する手順は次のとおりです。
entries.list
メソッドのドキュメント内の [Try this API] セクションに移動します。[Try this API] フォームのリクエストの本文に、次のコードを入力します。この事前入力されたフォームをクリックすると、リクエストの本文が自動的に入力されますが、それぞれのログ名に有効な PROJECT_ID を指定する必要があります。
{ "resourceNames": [ "projects/PROJECT_ID" ], "pageSize": 5, "filter": "logName : projects/PROJECT_ID/logs/cloudaudit.googleapis.com" }
[実行] をクリックします。
監査ログの保存とルーティング
Cloud Logging では、ログデータを保存して整理するためのコンテナとしてログバケットを使用します。請求先アカウント、Google Cloud プロジェクト、フォルダ、組織ごとに、Logging によって自動的に _Required
と _Default
という 2 つのログバケットと、対応する名前のシンクが作成されます。
Cloud Logging の _Required
バケットには、管理アクティビティ監査ログとシステム イベント監査ログが保存されます。管理アクティビティまたはシステム イベントの監査ログの保存を防ぐことはできません。また、ログエントリを _Required
バケットに転送するシンクを構成することもできません。
管理アクティビティ監査ログとシステム イベント監査ログは常に、ログが生成されたプロジェクトの _Required
バケットに保存されます。
管理アクティビティ監査ログとシステム イベント監査ログを別のプロジェクトにルーティングすると、それらのログは、宛先プロジェクトの _Default
シンクまたは _Required
シンクをパススルーしません。したがって、これらのログは、宛先プロジェクトの _Default
ログバケットまたは _Required
ログバケットに保存されません。これらのログを保存するには、宛先プロジェクトにログシンクを作成します。詳細については、サポートされている宛先にログをルーティングするをご覧ください。
_Default
バケットは、デフォルトで有効なデータアクセス監査ログとポリシー拒否監査ログを保存します。データアクセス監査ログが _Default
バケットに保存されないようにするには、ログを無効にします。ポリシー拒否監査ログが _Default
バケットに保存されないようにするには、シンクのフィルタを変更してポリシー拒否監査ログを除外します。
監査ログエントリを、Google Cloud プロジェクト レベルでユーザー定義の Cloud Logging バケットにルーティングしたり、シンクを使用して Logging の外部でサポートされている宛先にルーティングしたりすることもできます。ログのルーティング手順については、サポートされている宛先にログをルーティングするをご覧ください。
ログシンクのフィルタを構成するときは、ルーティングする監査ログの種類を指定する必要があります。フィルタリング例については、セキュリティ ロギングのクエリをご覧ください。
Google Cloud の組織、フォルダ、請求先アカウントの監査ログエントリをルーティングする場合は、組織レベルのログをサポートされている宛先に照合してルーティングするをご覧ください。
監査ログの保持期間
Logging でログエントリが保持される期間の詳細については、割り当てと上限: ログの保持期間で保持情報をご覧ください。
アクセス制御
IAM の権限とロールによって、Logging API、ログ エクスプローラ、Google Cloud CLI内の監査ログデータにアクセス可能かどうか判断されます。
必要となる IAM の権限とロールの詳細については、IAM によるアクセス制御をご覧ください。
割り当てと上限
監査ログの最大サイズを含む、ロギングの使用量上限について詳しくは、割り当てと上限をご覧ください。
料金
Cloud Logging では、サポートされている宛先へのログの転送で料金を請求されることはありませんが、宛先での料金が発生する場合があります。_Required
ログバケットを除き、Cloud Logging では、ログバケットへのログのストリーミングと、ログバケットのデフォルト保持期間よりも長いストレージの料金が請求されます。
Cloud Logging では、ログのコピー、ログスコープの定義、またはログ エクスプローラまたは [ログ分析] ページを介して発行されたクエリには課金されません。
詳細については、次のドキュメントをご覧ください。
- Cloud Logging の料金概要
宛先の費用:
- VPC フローログの生成料金は、Cloud Logging から Virtual Private Cloud フローログを送信して除外した後に適用されます。
次のステップ
- 監査ログの読み取りと理解の方法を学習する。
- データアクセス監査ログを有効にする方法を学習する。
- Cloud 監査ログのベスト プラクティスを確認する
- アクセスの透明性について学びます。これは、Google Cloud のスタッフがお客様の Google Cloud コンテンツにアクセスしたときに行ったアクションのログを提供します。