監査ロギング

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

概要

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

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

Cloud Audit Logs では、Cloud プロジェクト、フォルダ、組織ごとに以下の監査ログが保存されます。

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

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

明示的に有効になっている場合にのみ、Dataproc Metastore はデータアクセス監査ログを書き込みます。例外は BigQuery のデータアクセス監査ログで、これは無効にすることができません。データアクセス監査ログには、リソースの構成やメタデータを読み取る API 呼び出しや、ユーザー提供のリソースデータの作成、変更、読み取りを行うユーザー主導の API 呼び出しが含まれます。

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

Dataproc Metastore では、ポリシー拒否監査ログは記録されません。

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

Dataproc Metastore の各監査ログタイプに対応する API オペレーションの概要は、次のとおりです。

監査ログのカテゴリ Dataproc Metastore オペレーション
管理アクティビティ
  • metastore.services.create
  • metastore.services.update
  • metastore.services.delete
  • metastore.services.setIamPolicy
  • metastore.imports.update
  • metastore.databases.update
  • metastore.databases.delete
  • metastore.databases.setIamPolicy
  • metastore.tables.update
  • metastore.tables.delete
  • metastore.tables.setIamPolicy
  • metastore.operations.delete
データアクセス(ADMIN_READ
  • metastore.services.get
  • metastore.services.list
  • metastore.services.getIamPolicy
  • metastore.imports.get
  • metastore.imports.list
  • metastore.databases.get
  • metastore.databases.list
  • metastore.databases.getIamPolicy
  • metastore.tables.get
  • metastore.tables.list
  • metastore.operations.get
  • metastore.operations.list
    データアクセス(DATA_READ
    • metastore.services.export
      データアクセス(DATA_WRITE
      • metastore.imports.create
      • metastore.databases.create
      • metastore.tables.create

        監査ログ形式

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

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

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

        • サービス固有の監査情報(省略可)。サービス固有のオブジェクトです。古い統合では、このオブジェクトは AuditLog オブジェクトの serviceData フィールドに保持されます。新しい統合では、metadata フィールドを使用します。

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

        ログ名

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

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

        サービス名

        Dataproc Metastore の監査ログでは、サービス名 metastore.googleapis.com が使用されます。

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

        リソースタイプ

        Dataproc Metastore の監査ログでは、すべての監査ログに対してリソースタイプ audited_resource が使用されます。

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

        監査ロギングの有効化

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

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

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

        監査ログに関する権限

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

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

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

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

        ログの表示

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

        監査ログ名は次のようになります。名前には、Cloud プロジェクト、フォルダ、または組織の識別子の変数が含まれています。

           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
        
           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
        

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

        Console

        Cloud Console のログ エクスプローラを使用して、Cloud プロジェクトの監査ログエントリを取得できます。

        1. Cloud Console で、[ロギング] > [ログ エクスプローラ] ページに移動します。

          [ログ エクスプローラ] ページに移動

        2. [ログ エクスプローラ] ページで、既存の Cloud プロジェクトを選択します。

        3. [クエリビルダー] ペインで、次の操作を行います。

          • [リソース] で、監査ログを表示する対象の Google Cloud リソースタイプを選択します。

          • [ログ名] で、表示する監査ログタイプを選択します。

            • 管理アクティビティ監査ログの場合は、[activity] を選択します。
            • データアクセス監査ログの場合は、[data_access] を選択します。
            • システム イベント監査ログの場合は、[system_event] を選択します。
            • ポリシー拒否監査ログの場合は、[policy] を選択します。

          これらのオプションが表示されない場合、Cloud プロジェクトにそのタイプの監査ログが存在しないことを意味します。

          新しいログ エクスプローラを使用したクエリの詳細については、ログクエリの作成をご覧ください。

        gcloud

        gcloud コマンドライン ツールは、Cloud Logging API へのコマンドライン インターフェースを提供します。それぞれのログ名の中で有効な PROJECT_IDFOLDER_ID または ORGANIZATION_ID を指定します。

        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
        

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

        API

        クエリを作成する場合は、変数を有効な値に置き換え、適切なプロジェクトレベル、フォルダレベル、または監査ログ名に表示されている組織レベルの監査ログ名もしくは ID を代わりに使用します。たとえば、クエリに PROJECT_ID が含まれている場合、指定するプロジェクト識別子は、現在選択された Cloud プロジェクトを参照している必要があります。

        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. [実行] をクリックします。

        クエリの詳細については、Logging のクエリ言語をご覧ください。

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

        監査ログのエクスポート

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

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

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

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

        料金

        管理アクティビティ監査ログシステム イベント監査ログは無料です。

        データアクセス監査ログポリシー拒否監査ログは課金対象です。

        Cloud Logging の料金については、Google Cloud のオペレーション スイートの料金: Cloud Logging をご覧ください。