Cloud KMS の監査ロギングの情報

このページでは、Cloud 監査ログの一部として Cloud Key Management Service によって作成される監査ログについて説明します。

概要

Google Cloud サービスは、「誰がいつどこで何をしたか」の確認に役立つ監査ログを記録します。各 Cloud プロジェクトで記録されるのは、そのプロジェクト内に直接存在するリソースの監査ログのみです。その他のエンティティ(フォルダ、組織、請求先アカウントなど)については、そのエンティティ自体の監査ログが記録されます。

Cloud 監査ログの概要については、Cloud 監査ログをご覧ください。Cloud 監査ログの詳細については、監査ログについてをご覧ください。

Cloud 監査ログでは、Google Cloud のプロジェクト、フォルダ、組織ごとに次の 3 つの監査ログが保存されます。

  • 管理アクティビティ監査ログ
  • データアクセス監査ログ
  • システム イベント監査ログ

Cloud KMS は管理アクティビティ監査ログを書き込みます。これはリソースの構成やメタデータを変更するオペレーションを記録します。管理アクティビティの監査ログは無効にできません。

Cloud KMS では、明示的に有効にした場合に限り、データアクセス監査ログが書き込まれます。データアクセス監査ログには、リソースの構成やメタデータを読み取る API 呼び出しや、ユーザー指定のリソースデータの作成、変更、読み取りのためのユーザーによる API 呼び出しが記録されます。データアクセス監査ログは、一般公開されているリソース(すべてのユーザーまたは認証されたすべてのユーザーが利用可能)や、Google Cloud にログインせずにアクセスできるリソースに対するデータアクセス オペレーションを記録しません。

Cloud KMS では、システム イベント監査ログは記録されません。

監査対象のオペレーション

次の表は、Cloud KSM の各監査ログタイプに対応する API オペレーションをまとめたものです。

監査ログのカテゴリ Cloud KMS のオペレーション
管理アクティビティ ログ cloudkms.projects.locations.keyRings.create
cloudkms.projects.locations.keyRings.setIamPolicy
cloudkms.projects.locations.keyRings.cryptoKeys.create
cloudkms.projects.locations.keyRings.cryptoKeys.patch
cloudkms.projects.locations.keyRings.cryptoKeys.setIamPolicy
cloudkms.projects.locations.keyRings.cryptoKeys.updatePrimaryVersion
cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.create
cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.destroy
cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.patch
cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.restore
cloudkms.projects.locations.keyRings.importJobs.create
cloudkms.projects.locations.keyRings.importJobs.setIamPolicy
データアクセス ログ(ADMIN_READ) cloudkms.projects.locations.get
cloudkms.projects.locations.list
cloudkms.projects.locations.keyRings.get
cloudkms.projects.locations.keyRings.getIamPolicy
cloudkms.projects.locations.keyRings.list
cloudkms.projects.locations.keyRings.testIamPermissions
cloudkms.projects.locations.keyRings.cryptoKeys.get
cloudkms.projects.locations.keyRings.cryptoKeys.list
cloudkms.projects.locations.keyRings.cryptoKeys.getIamPolicy
cloudkms.projects.locations.keyRings.cryptoKeys.testIamPermissions
cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.get
cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.list
cloudkms.projects.locations.keyRings.importJobs.get
cloudkms.projects.locations.keyRings.importJobs.getIamPolicy
cloudkms.projects.locations.keyRings.importJobs.list

cloudkms.projects.locations.keyRings.importJobs.testIamPermissions
データアクセス ログ(DATA_READ) cloudkms.projects.locations.keyRings.cryptoKeys.decrypt
cloudkms.projects.locations.keyRings.cryptoKeys.encrypt
cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.asymmetricDecrypt
cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.asymmetricSign
cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.getPublicKey
データアクセス ログ(DATA_WRITE) なし

監査ログ形式

Cloud Logging でログビューア、Cloud Logging API、gcloud コマンドライン ツールを使用して表示できる監査ログエントリには、次のオブジェクトがあります。

  • ログエントリ自体。LogEntry 型のオブジェクトです。よく使用されるフィールドは次のとおりです。

    • logName: プロジェクト ID と監査ログタイプが格納されます。
    • resource: 監査対象オペレーションのターゲットが格納されます。
    • timeStamp: 監査対象オペレーションの時間が格納されます。
    • protoPayload: 監査情報が格納されます。
  • 監査ロギングデータ。ログエントリの protoPayload フィールドに保持される AuditLog オブジェクトです。

  • サービス固有の監査情報(省略可)。AuditLog オブジェクトの serviceData フィールドに保持されるサービス固有のオブジェクトです。詳細は、サービス固有の監査データをご覧ください。

このようなオブジェクトのその他のフィールドと、それを解釈する方法については、監査ログについてをご覧ください。

ログ名

Cloud 監査ログのリソース名は、監査ログを所有するプロジェクトまたは他のエンティティを表します。この名前を見ると、ログに管理アクティビティ、データアクセス、システム イベントの監査ロギングデータが含まれているかどうかがわかります。たとえば、次のログ名はプロジェクトの管理アクティビティ監査ログと組織のデータアクセス監査ログを表しています。

    projects/[PROJECT_ID]/logs/cloudaudit.googleapis.com%2Factivity
    organizations/[ORGANIZATION_ID]/logs/cloudaudit.googleapis.com%2Fdata_access
    

サービス名

Cloud KMS の監査ログでは、サービス名 cloudkms.googleapis.com を使用します。

ロギング サービスの詳細については、サービスとリソースのマッピングをご覧ください。

リソースタイプ

Cloud KMS の監査ログは、すべての監査ログにリソースタイプ audited_resource を使用します。

一覧については、モニタリング対象リソースタイプをご覧ください。

監査ログの有効化

管理アクティビティ監査ログは常に有効になっています。無効にすることはできません。

データアクセス監査ログはデフォルトで無効になっており、明示的に有効にしない限り書き込まれません(例外は BigQuery のデータアクセス監査ログで、これは無効にすることができません)。

データアクセス監査ログの一部または全部を有効にする方法については、データアクセス ログの構成をご覧ください。

データアクセス監査ログを構成すると、Cloud Logging のログの料金に影響が及ぶ場合があります。このページの料金を確認してください。

監査ログに関する権限

監査ログを表示またはエクスポートできるかは、Cloud Identity and Access Management の権限と役割によって決まります。ログは、プロジェクト内またはその他のエンティティ(組織、フォルダ、請求先アカウントなど)内に存在します。詳しくは、役割についてをご覧ください。

管理アクティビティ監査ログを表示するには、その監査ログが存在するプロジェクト内で次のいずれかの Cloud IAM 役割を持っている必要があります。

  • プロジェクト オーナープロジェクト編集者、またはプロジェクト閲覧者
  • Logging のログ閲覧者の役割。
  • カスタムの Cloud IAM 役割logging.logEntries.list Cloud IAM 権限が付与されていること)。

データアクセス監査ログを表示するには、監査ログを含むプロジェクト内でユーザーが次のいずれかの役割を持っている必要があります。

組織などのプロジェクト以外のエンティティからの監査ログを使用する場合は、プロジェクトの役割を適切な組織の役割に変更します。

ログの表示

監査ログを検索して表示するには、監査ログ情報を表示する対象の Google Cloud プロジェクト、フォルダ、または組織の ID を把握している必要があります。さらに、resource.type などの他のインデックス付き LogEntry フィールドも指定できます。詳しくは、ログエントリの迅速な検索をご覧ください。

監査ログ名は次のとおりです。

       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

       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

       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
    

以下の例では、プロジェクト レベルのクエリを使用しています。組織レベルまたはフォルダレベルの監査ログを表示する場合は、監査ログ名のリストに記載されている適切なフォルダレベルまたは組織レベルの監査ログ名もしくは ID を代わりに使用します。

監査ログエントリを表示する方法はいくつかあります。

Cloud Console

Cloud Console のログビューアを使用して、Google Cloud プロジェクトの監査ログエントリを取得できます。次の手順に従います。

  1. Cloud Console で Google Cloud のオペレーション スイートの [Logging] > [ログ](ログビューア)ページに移動します。

    ログビューア ページに移動

  2. ページの上部で既存の Google Cloud プロジェクトを選択するか、新しいプロジェクトを作成します。

  3. 最初のプルダウン メニューで、監査ログを表示するリソースタイプを選択します。

  4. 2 番目のプルダウン メニューで、表示するログの種類を選択します。管理アクティビティの監査ログの場合は activity、データアクセス監査ログの場合は data_access、システム イベントログの場合は system_events です。

    これらのオプションのいずれかが表示されない場合、そのタイプの監査ログはプロジェクトで使用できません。

既存の検索対象を監査ログだけに絞り込む場合は、次のようにします。

  1. 検索フィルタ ボックスで、プルダウン矢印(▾)をクリックして、[高度なフィルタに変換] を選択します。

  2. 表示されるテキスト ボックスで、resource.type の行の下に次のクエリを追加します。指定する project-id は現在選択されている Google Cloud プロジェクトを参照している必要があります。そうでなければ、クエリは機能しません。

            logName : "projects/project-id/logs/cloudaudit.googleapis.com"
        

    プロジェクトに関するすべての監査ログを表示する場合は、上記のコードのみをクエリに含めます。クエリの詳細については、高度なログクエリをご覧ください。

API

Logging API を使用して監査ログエントリを確認する手順は次のとおりです。

  1. entries.list メソッドのドキュメント内の [Try this API] セクションに移動します。

  2. [Try this API] フォームのリクエストの本文に、次のコードを入力します。この事前入力されたフォームをクリックするとリクエストの本文が自動的に入力されますが、それぞれのログ名に有効な project-id を指定する必要があります。

              {
                "resourceNames": [
                  "projects/project-id"
                ],
                "pageSize": 5,
                "filter": "logName : projects/project-id/logs/cloudaudit.googleapis.com"
              }
        
  3. [実行] をクリックします。

クエリの詳細については、高度なログクエリをご覧ください。

gcloud

Cloud SDK には、コマンドのグループである gcloud logging があり、Cloud Logging API にコマンドライン インターフェースを提供します。ログエントリを読み取るには、次のコマンドを実行します。それぞれのログ名の中で有効な project-id を指定します。

        gcloud logging read "logName : projects/project-id/logs/cloudaudit.googleapis.com"

gcloud コマンドライン ツールの使用の詳細については、ログエントリの読み取りをご覧ください。

監査ログエントリのサンプルと、その中に記載されている最も重要な情報を見つける方法については、監査ログについてをご覧ください。

監査ログのエクスポート

監査ログは、他の種類のログをエクスポートする場合と同じ方法でエクスポートできます。ログをエクスポートする方法の詳細については、ログのエクスポートをご覧ください。監査ログのエクスポートに関する応用例の一部を以下に示します。

  • 監査ログを長期間保持する、またはより強力な検索機能を使用するには、監査ログのコピーを Cloud Storage、BigQuery、または Pub/Sub にエクスポートします。Pub/Sub を使用すると、他のアプリケーション、他のリポジトリ、サードパーティ製品にエクスポートできます。

  • 組織全体の監査ログを管理するには、組織内の一部またはすべてのプロジェクトからログをエクスポートできる集約シンクを作成します。

  • 有効にしたデータアクセス監査ログが原因でプロジェクトのログ割り当て量を超過した場合は、データアクセス監査ログをエクスポートして Logging から除外できます。詳しくは、ログの除外をご覧ください。

料金

Cloud Logging の無効にできない監査ログ(すべての管理アクティビティ監査ログを含む)は無料です。明示的にリクエストしたデータアクセス監査ログについては課金されます。

監査ログの料金の詳細については、Google Cloud のオペレーション スイート料金をご覧ください。