集約エクスポート

Google Cloud 組織のすべてのプロジェクト、フォルダ、請求先アカウントからログエントリをエクスポートできる集約エクスポート シンクを作成できます。たとえば、組織のプロジェクトから 1 か所に集中して、監査ログエントリを集約、エクスポートできます。

コンセプト

集約エクスポート機能がないと、エクスポート シンクは厳密にシンクが作成されたリソース(Google Cloud プロジェクト、組織、フォルダ、請求先アカウント)からしかエクスポートできません。

集約エクスポート機能を使用するには、Google Cloud の組織またはフォルダにシンクを作成し、シンクの includeChildren パラメータを True に設定します。これにより、そのシンクは組織またはフォルダに加えて、それに含まれているすべてのフォルダ、請求先アカウント、プロジェクトから(再帰的に)ログエントリをエクスポートできるようになります。シンクのクエリを使用して、プロジェクト、リソースタイプ、名前のついたログからログエントリを指定できます。

エクスポート シンクとその作成方法については、API でのログのエクスポートコマンドライン ツールを使用したシンクの作成をご覧ください。

エクスポート先の作成

gcloud コマンドライン ツール、Cloud Console、Google Cloud API でログシンクのエクスポート先を作成してから、シンクを作成してください。

エクスポート シンクのサポートされるエクスポート先は、次のとおりです。

ログシンクのサービス アカウントにエクスポート先への書き込み権限があれば、どの組織のどの Google Cloud プロジェクトにもエクスポート先を作成できます。

集約エクスポート シンクの作成

Stackdriver Logging APIgcloud コマンドライン ツールを使用して、Google Cloud フォルダ、請求先アカウント、組織に集約エクスポート シンクを作成できます。

Logging API

ログシンクを作成するには、Logging API の organizations.sinks.createfolders.sinks.createbillingAccounts.sinks.create のいずれかを使用します。次のように、メソッドの引数を準備します。

  1. parent パラメータを、シンクを作成する Google Cloud 組織、フォルダ、請求先アカウントに設定します。親は次のいずれかにする必要があります。

    • organizations/[ORGANIZATION_ID]
    • folders/[FOLDER_ID]
    • billingAccounts/[BILLING_ACCOUNT_ID]
  2. メソッドのリクエスト本文の LogSink オブジェクトで、次の設定を行います。

    • includeChildrenTrue に設定する。

    • すべてのプロジェクトのログエントリがクエリと照合されることを考慮して query プロパティを設定します。

      便利なクエリの例については、集計エクスポートでのクエリの使用をご覧ください。

    • 残りの LogSink フィールドを他のシンクの場合と同様に設定します。詳細については、シンクを作成するをご覧ください。

  3. organizations.sinks.create または folders.sinks.create を呼び出してシンクを作成します。

  4. API レスポンスから、シンクの作成に使用されたサービス アカウント名を取得します。

  5. そのサービス アカウントにエクスポート先への書き込み権限を付与します。

    エクスポート先を変更する権限がない場合は、その変更を行うことができるユーザーにサービス アカウント名を送信します。

    リソースに対する権限をサービス アカウントに付与する方法については、サービス アカウントへの役割の付与をご覧ください。

gcloud

ログシンクを作成するには、logging sinks create コマンドを使用します。

  1. シンク名、エクスポート先、ログクエリと、フォルダ、請求先アカウント、または組織の ID を指定します。

    たとえば、次のようにフォルダレベルで集約エクスポートを設定します。

    gcloud logging sinks create [SINK_NAME] \
    storage.googleapis.com/[BUCKET_NAME] --include-children \
    --folder=[FOLDER_ID] --log-filter="logName:activity"

    注:

    • シンクを組織レベルで作成するには、--folder=[FOLDER_ID]--organization=[ORGANIZATION_ID] に置き換えます。請求先アカウントの場合は、--billing-account=[BILLING_ACCOUNT_ID] に置き換えます。

    • シンクが組織内のすべてのプロジェクトをインクルードするには、--organization フラグが create に渡された場合でも --include-children フラグを設定する必要があります。false(デフォルト)に設定すると、シンクはホストリソースからのログのみをエクスポートします。

    • シンクを作成するには、親に対するログ構成書き込みの Cloud IAM 役割が必要です。Logging の Cloud IAM 役割については、アクセス制御ガイドをご覧ください。

    • 便利なクエリの例については、集計エクスポートでのクエリの使用をご覧ください。

  2. コマンド出力から、シンクの作成に使用されたサービス アカウント名を取得します。

  3. そのサービス アカウントにエクスポート先への書き込み権限を付与します。

    エクスポート先を変更する権限がない場合は、その変更を行うことができるユーザーにサービス アカウント名を送信します。

    リソースに対する権限をサービス アカウントに付与する方法については、サービス アカウントへの役割の付与をご覧ください。

集約エクスポートでのクエリの使用

他のエクスポート シンクと同様、集計エクスポート シンクには、個々のログエントリを選択するクエリが含まれます。クエリの詳細については、高度なログクエリをご覧ください。

以下に、集計エクスポート機能を使用するときに役立つクエリ比較の例を示します。一部の例で次の表記を使用しています。

  • : は部分文字列演算子です。= 演算子に置き換えないでください。
  • ... は追加のクエリ比較を示します。
  • 変数はかっこ [])で示されます。これを有効な値に置き換えます。

監査ログの選択

監査ログをエクスポートするには、次の比較例のいずれかを選択します。

log_name:"/logs/cloudaudit.googleapis.com"
log_name:"/logs/cloudaudit.googleapis.com%2Factivity" AND...
log_name:"/logs/cloudaudit.googleapis.com%2Fdata_access" AND...
log_name:"/logs/cloudaudit.googleapis.com%2Fsystem_event" AND...

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

エクスポート ソースの選択

特定のプロジェクト、フォルダ、または組織からのログをエクスポートするには、次の比較例のいずれかを使用します。

logName:"projects/[PROJECT_ID]/logs/" AND ... 
logName:("projects/[PROJECT_A_ID]/logs/" OR "projects/[PROJECT_B_ID]/logs/") AND ... 
logName:"folders/[FOLDER_ID]/logs/" AND ... 
logName:"organizations/[ORGANIZATION_ID]/logs/" AND ... 

リソースの選択

プロジェクトの特定のリソースのログだけをエクスポートするには、複数の比較を使用してリソースを厳密に指定します。

logName:"projects/[PROJECT_ID]/logs" AND
resource.type=[RESOURCE_TYPE] AND
resource.labels.instance_id=[INSTANCE_ID]

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

ログエントリのサンプリング

ログエントリのランダムなサンプルをエクスポートするには、sample 組み込み関数を追加します。たとえば、現在のクエリと一致するログエントリの 10% だけをエクスポートするには、次の記述を追加します。

sample(insertId, 0.10) AND ...

詳細については、sample 関数をご覧ください。

Stackdriver Logging クエリについては、高度なログクエリを参照してください。