組織のログを集約して保存する

このドキュメントでは、非インターセプト集約シンクを使用して、Google Cloud 組織に含まれるリソースによって生成されたログを管理する方法について説明します。

子リソースのシンクでどのログをクエリできるか、またはシンクを介してルーティングできるログかを制御するかに応じて、集約シンクをインターセプトする、またはインターセプトしない構成にできます。このチュートリアルでは、組織の監査ログをログバケットにルーティングする集約シンクを作成します。シンクのフィルタは、他の種類のログエントリをルーティングするように構成できます。集約シンクの詳細については、組織レベルとフォルダレベルのログをサポートされている宛先に照合して転送するをご覧ください。

このチュートリアルでは、次の手順を行います。

  1. 集約されたログを保存する Cloud Logging バケットを作成する。

  2. 組織レベルで非インターセプト集約シンクを作成し、新しいログバケットにログを転送する。

  3. 新しいログバケットへの読み取りアクセスを構成する。

  4. [ログ エクスプローラ] ページからのログのクエリと表示。

始める前に

次のことをご確認ください。

  • プリンシパル ロールの付与に必要な権限を取得するには、オーナーroles/owner)の IAM ロールの付与を管理者に依頼してください。

  • VPC Service Controls を使用する場合は、サービス境界に上り(内向き)ルールを追加する必要があります。VPC Service Controls の制限の詳細については、集約シンクと VPC Service Controls の制限をご覧ください。

ログバケットの作成

ログバケットには、他の Google Cloud プロジェクト、フォルダ、組織から転送されたログが保存されます。詳細については、ログバケットを構成するをご覧ください。

ログを集約する Google Cloud プロジェクトでバケットを作成するには、次の手順を行います。

  1. Google Cloud コンソールに移動するか、次のボタンをクリックします。

    Google Cloud コンソールに移動

  2. Cloud Shell ターミナルで gcloud logging buckets create コマンドを実行します。

    次のコマンドを実行する前に、次のように置き換えます。

    • BUCKET_NAME: ログバケットの名前。
    • LOCATION: ログバケットのロケーション。
    • PROJECT_ID: ログバケットを作成するプロジェクトの ID。

    gcloud logging buckets create コマンドを実行します。

     gcloud logging buckets create BUCKET_NAME \
       --location=LOCATION --project=PROJECT_ID
    
  3. ログバケットが作成されたことを確認します。

    gcloud logging buckets list --project=PROJECT_ID
    
  4. 省略可: バケット内のログの保持期間を設定します。この例では、バケットに保存されたログの保持期間を 365 日間延長します。

    gcloud logging buckets update BUCKET_NAME \
      --location=LOCATION --project=PROJECT_ID \
      --retention-days=365
    

集約シンクの作成

ログシンクを作成すると、ログバケットにログを転送できます。シンクには、包含フィルタ、オプションの除外フィルタ、宛先が含まれます。このチュートリアルでは、宛先は新しいログバケットです。シンクの詳細については、サポートされている宛先にログを転送するをご覧ください。

組織レベルでシンクを設定する

集約シンクの作成は、次の手順で行います。

  1. gcloud logging sinks create コマンドを実行します。

    次のコマンドを実行する前に、次のように置き換えます。

    • SINK_NAME: ログシンクの名前。
    • PROJECT_ID: ログバケットを保存するプロジェクトの ID。
    • LOCATION: ログバケットのロケーション。
    • BUCKET_NAME: ログバケットの名前。
    • ORGANIZATION_ID: 組織の ID。

    gcloud logging sinks create コマンドを実行します。

    gcloud logging sinks create SINK_NAME \
    logging.googleapis.com/projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME  \
      --log-filter='logName:cloudaudit.googleapis.com' \
      --description="Audit logs from my organization" \
      --organization=ORGANIZATION_ID \
      --include-children
    

    --include-children フラグは、組織内のすべての Google Cloud プロジェクトのログも含まれるようにするうえで重要です。詳細については、組織レベルのログをサポートされている宛先に照合して転送するをご覧ください。

  2. シンクが作成されたことを確認します。

    gcloud logging sinks list --organization=ORGANIZATION_ID
    
  3. サービス アカウントの名前を取得します。

    gcloud logging sinks describe SINK_NAME --organization=ORGANIZATION_ID
    

    出力は次のようになります。

    writerIdentity: serviceAccount:o1234567890-ORGANIZATION_ID@gcp-sa-logging.iam.gserviceaccount.com
    
  4. serviceAccount フィールドの値をクリップボードにコピーします。

シンクにアクセス権を付与する

シンクを作成したら、ログバケットへの書き込みの権限をシンクに付与する必要があります。権限を付与するには、宛先権限の設定の説明に沿って、Google Cloud コンソールを使用するか、Identity and Access Management(IAM)ポリシーを編集します。

シンクにログの書き込み権限を付与するには、次の操作を行います。

  1. Google Cloud コンソールのナビゲーション パネルで [IAM] を選択します。

    [IAM] に移動

  2. ログバケットを含む Google Cloud プロジェクトを選択します。

  3. [アクセスを許可] をクリックします。

  4. [新しいプリンシパル] フィールドに、serviceAccount: 接頭辞を付けずにサービス アカウントを追加します。

  5. [ロールを選択] メニューで、[ログバケット書き込み] を選択します。

  6. [保存] をクリックします。

シンク検証に役立つログを生成する

集約シンクが正しく構成されていることを確認するには、次のことを試してください。

  1. ログバケットに転送される監査ログを生成します。

    • 組織内に多数の Google Cloud プロジェクトが存在する場合は、検証目的で作成する必要のない監査ログのトラフィックが十分にある可能性があります。次のステップに進みます。

    • それ以外の場合は、別のプロジェクトに移動して Compute Engine VM インスタンスを作成し、作成したインスタンスを削除します。監査ログは、VM の作成時、起動時、削除時に書き込まれます。

  2. [ログ エクスプローラ] ページでログを表示するというタイトルのセクションの手順に沿って、監査ログを表示します。必ず _AllLogs ビューを選択してください。

ログバケットへの読み取りアクセス権を構成する

ログバケットを作成すると、Cloud Logging によって _AllLogs という名前のログビューが自動的に作成されます。このビューには、ログバケットに保存されているすべてのログエントリが含まれます。

次の手順では、_AllLogs という名前のビューに対する付与を制限する IAM 条件とともに、プリンシパルに roles/logging.viewAccessor のロールを付与します。

  1. Google Cloud コンソールのナビゲーション パネルで [IAM] を選択します。

    [IAM] に移動

    ログの集約に使用している Google Cloud プロジェクトが選択されていることを確認します。

  2. [追加] をクリックします。

  3. [新しいプリンシパル] フィールドにプリンシパルを追加します。

  4. [ロールを選択] メニューで [ログビュー アクセサー] を選択します。

  5. バインディングに IAM 条件を追加します。

    1. [条件を追加] をクリックし、タイトルと説明を入力します。
    2. [条件タイプ] メニューで、[リソース] までスクロールし、[名前] を選択します。
    3. [演算子] メニューで [次で終わる] を選択します。
    4. [] フィールドに、ログビューの完全な名前を入力します。

      locations/LOCATION/buckets/BUCKET_NAME/views/_AllLogs
      
    5. [保存] をクリックして、条件を保存します。

  6. [保存] をクリックして、バインディングを保存します。

[ログ エクスプローラ] ページでログを表示する

ログバケット内のログを表示する方法は次のとおりです。

  1. Google Cloud コンソールのナビゲーション パネルで、[ロギング] を選択してから、[ログ エクスプローラ] を選択します。

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

  2. [範囲を絞り込む] を選択します。

  3. [範囲を絞り込む] パネルで、[ストレージごとのスコープ] を選択します。

  4. 表示するログエントリのログビューを選択します。たとえば、すべてのログを表示するには、_AllLogs という名前のビューを選択します。

  5. [適用] をクリックします。

    [ログ エクスプローラ] が更新され、バケットのログが表示されます。

    ログ エクスプローラの使用方法については、ログ エクスプローラの使用をご覧ください。