集約シンク

このページでは、Google Cloud 組織のすべての Google Cloud プロジェクト、フォルダ、請求先アカウントからログエントリを転送できる集約シンクを作成する方法について説明します。たとえば、組織の Cloud プロジェクトから 1 つの宛先に監査ログエントリを集約して転送できます。

概念

集約シンク機能がないと、シンクは、シンクが作成されたリソース(Google Cloud プロジェクト、組織、フォルダ、請求先アカウント)のみからの転送ログエントリに制限されます。

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

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

エクスポート先の作成

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

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

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

集約シンクの作成

Google Cloud フォルダ、請求先アカウント、組織で集約シンクを作成するには、Cloud Logging API または gcloud コマンドライン ツールを使用します。

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 に設定する。

    • filter プロパティを設定します。Logging は、すべてのプロジェクトのすべてのログエントリをフィルタと照合します。

      便利なフィルタの例については、集約シンクのフィルタの作成をご覧ください。

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

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

  4. API レスポンスから返された writer_identity フィールドから、サービス アカウント名を取得します。

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

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

    リソースに対する権限をサービス アカウントに付与する方法については、次のリンク先で、シンクのエクスポート先を確認してください。

    Cloud Storage バケット Pub/Sub トピック BigQuery テーブル Cloud Logging バケット

コマンドライン

ログシンクを作成するには、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(デフォルト)に設定すると、シンクはホストリソースからのログのみを転送します。

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

    • 有用なフィルタの例については、シンクの作成gcloud コマンドライン ツールの例をご覧ください。

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

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

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

    リソースに対する権限をサービス アカウントに付与する方法については、次のリンク先で、シンクのエクスポート先を確認してください。

集約シンクのフィルタを作成する

シンクと同様、集約シンクにも個々のログエントリを選択するシンクが含まれています。シンクの詳細については、Logging のクエリ言語をご覧ください。

以下に、集約シンク機能を使用するときに役立つフィルタの比較例を示します。一部の例で次の表記を使用しています。

  • : は部分文字列演算子です。= 演算子を代わりに使用しないでください。
  • ... はさらにフィルタ比較が続くことを表します。
  • 変数は色付きのテキストで示されます。これらは有効な値に置き換えてください。

ログソースを選択する

特定の Cloud プロジェクト、フォルダ、組織からログを転送するには、次に挙げる比較演算子の使用例のいずれかを使用します。

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

モニタリング対象リソースを選択する

Cloud プロジェクトの特定のモニタリング対象リソースだけからログを転送するには、複数の比較演算子を使用してリソースを厳密に指定します。

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 関数をご覧ください。

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

料金

ログの転送には課金されませんが、転送先の料金が適用されることがあります。詳しくは、該当するプロダクトの料金のページをご覧ください。