API Gateway の監査ロギング情報

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

概要

Google Cloud サービスにより監査ログが書き込まれ、Google Cloud リソース内で「誰が、いつ、どこで、何をしたか」の確認に役立ちます。

Google Cloud プロジェクトで記録されるのは、その Cloud プロジェクト内に直接存在するリソースの監査ログのみです。フォルダ、組織、請求先アカウントなど、その他の Google Cloud リソースには、そのエンティティ自体の監査ログが記録されます。

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

利用可能な監査ログ

API Gateway では、次の種類の監査ログを使用できます。

  • 管理アクティビティ監査ログ

    メタデータまたは構成情報を書き込む「管理書き込み」オペレーションが含まれます。

    管理アクティビティ監査ログは無効にできません。

  • データアクセス監査ログ

    メタデータまたは構成情報を読み取る「管理読み取り」オペレーションが含まれます。ユーザー提供データの読み取りまたは書き込みを行う「データ読み取り」オペレーションと「データ書き込み」オペレーションも含まれます。

    データアクセス監査ログを受信するには、監査ログを明示的に有効にする必要があります。

監査ログタイプの詳細については、監査ログのタイプをご覧ください。

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

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

監査ログのカテゴリ API Gateway オペレーション
管理アクティビティ

Gateway オペレーション:

  • CreateGateway
  • UpdateGateway
  • DeleteGateway

API オペレーション:

  • CreateApi
  • UpdateApi
  • DeleteApi

APIConfig オペレーション:

  • CreateApiConfig
  • UpdateApiConfig
  • DeleteApiConfig

Identity and Access Management(IAM)オペレーション:

  • SetIamPolicy(Gateways)
  • SetIamPolicy(APIs)
  • SetIamPolicy(APIConfigs)

Operation オペレーション:

  • CancelOperation
  • DeleteOperation
データアクセス ログ(ADMIN_READ

Gateway オペレーション:

  • GetGateway
  • ListGateways

API オペレーション:

  • GetApi
  • ListApis

APIConfig オペレーション:

  • GetApiConfig
  • ListApiConfigs

Identity and Access Management(IAM)オペレーション:

  • GetIamPolicy(Gateways)
  • GetIamPolicy(APIs)
  • GetIamPolicy(APIConfigs)

Operation オペレーション:

  • GetOperation
  • ListOperations

Location オペレーション:

  • GetLocation
  • ListLocations

監査ログ形式

監査ログエントリには、次のオブジェクトが含まれます。

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

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

  • 任意のサービス固有の監査情報。サービス固有のオブジェクトです。前のインテグレーションでは、このオブジェクトは AuditLog オブジェクトの serviceData フィールドに保持されています。後のインテグレーションでは、metadata フィールドを使用します。

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

ログ名

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

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

サービス名

API Gateway の監査ログでは、サービス名「apigateway.googleapis.com」が使用されます。

すべての Cloud Logging API サービス名とそれに対応するモニタリング対象リソースタイプの一覧については、サービスとリソースのマッピングをご覧ください。

リソースタイプ

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

Cloud Logging でモニタリングされるすべてのリソースタイプのリストと記述情報については、モニタリング対象リソースタイプをご覧ください。

監査ロギングの有効化

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

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

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

権限と役割

IAM の権限とロールにより、Google Cloud リソース内の監査ログデータにアクセス可能かどうか判断されます。

ユースケースに適用する Logging 固有の権限とロールを決定する際は、次の点を考慮してください。

  • ログ閲覧者のロール(roles/logging.viewer)は、管理アクティビティ、ポリシー拒否、システム イベントの監査ログに対する読み取り専用権限を付与します。このロールしかない場合は、_Required バケットと _Default バケットにあるデータアクセスの監査ログを閲覧できません。

  • プライベート ログ閲覧者ロール((roles/logging.privateLogViewer)には、roles/logging.viewer に含まれる権限に加え、_Required バケットと _Default バケット内のデータアクセス監査ログの読み取り権限が含まれます。

    これらのプライベート ログがユーザー定義バケットに保存されている場合、それらのバケット内のログを読み取る権限を持つユーザーは、プライベート ログを読み取ることができます。ログバケットの詳細については、転送とストレージの概要をご覧ください。

監査ログデータに適用される IAM の権限とロールの詳細については、IAM を使用したアクセス制御をご覧ください。

ログを表示

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

監査ログ名は次のようになります。これには、Cloud プロジェクト、フォルダ、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

   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Factivity
   billingAccounts/BILLING_ACCOUNT_ID/logs/cloudaudit.googleapis.com%2Fdata_access

   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

Cloud Console、gcloud コマンドライン ツール、または Logging API を使用して、Cloud Logging の監査ログを表示できます。

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 を指定します。

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 ツールの使用方法に関する詳細については、gcloud logging read をご覧ください。

API

クエリを作成するときは、変数を有効な値に置き換えてください。適切なプロジェクト レベル、フォルダレベル、または組織レベルの監査ログ名に置き換えるか、監査ログ名に表示されている ID を使用してください。たとえば、クエリに PROJECT_ID が含まれている場合、指定するプロジェクト 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 プロジェクトからログを転送できる集約シンクを作成します。

  • 有効にしたデータアクセス監査ログが原因で Cloud プロジェクト数がログ割り当てを超過している場合は、データアクセス監査ログを Logging から除外するシンクを作成できます。

ログの転送手順については、シンクを構成して管理するをご覧ください。

料金

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

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

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