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

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

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

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

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

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

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

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

始める前に

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

  • ログの転送元の Google Cloud の組織またはフォルダに対して、次のいずれかの IAM ロールを付与されている。

    • オーナーroles/owner
    • Logging 管理者roles/logging.admin
    • ログ構成書き込みroles/logging.configWriter

    シンクの作成、削除、変更を行うには、これらのロールに含まれる権限を使用します。IAM ロールの設定については、Logging のアクセス制御ガイドをご覧ください。

  • 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 all-audit-logs-bucket \
       --location=global \
       --project=logs-test-project
    
  3. ログバケットが作成されたことを確認します。

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

    gcloud logging buckets update all-audit-logs-bucket --location=global --project=logs-test-project --retention-days=365
    

シンクを作成する

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

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

シンクを作成するには、次の手順に従います。

  1. 次のコマンドを実行し、変数を適切な値に置き換えます。

    gcloud logging sinks create all-audit-logs-sink \
    logging.googleapis.com/projects/logs-test-project/locations/global/buckets/all-audit-logs-bucket \
      --log-filter='logName:cloudaudit.googleapis.com' \
      --description="All audit logs from my org log sink" \
      --organization=12345 \
      --include-children
    

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

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

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

    gcloud logging sinks describe all-audit-logs-sink --organization=12345
    

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

    writerIdentity: serviceAccount:o1234567890-12345@gcp-sa-logging.iam.gserviceaccount.com
    
  4. serviceAccount: で始まる writerIdentity の文字列全体をコピーします。

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

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

このチュートリアルでは、次の手順で Google Cloud コンソールを使用して権限を設定します。

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

    [IAM] に移動

  2. ログの集約に使用している組織レベルのバケットが含まれている、エクスポート先の Google Cloud プロジェクトが選択されていることを確認します。

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

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

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

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

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

シンクが監査ログを使用している場合、シンクがログを正しくルーティングしていることを確認する 1 つの方法は、別の Google Cloud プロジェクトで VM を起動し、その VM を停止して、このイベントがログに表示されるかどうかを確認することです。

組織内にすでに多数の Google Cloud プロジェクトが存在する場合は、このステップを必要としない監査ログのトラフィックが十分にある可能性があります。

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

シンクが組織全体からログバケットにログをルーティングするように設定したため、これらのログをすべて検索できる状態になりました。ログビューを使用すると、ログビューを作成し、プリンシパルに roles/logging.viewAccessor IAM ロールを付与することで、ログバケット内のログにアクセスできるユーザーを制限できます。

このチュートリアルでは、次の手順で Google Cloud コンソールを使用して権限を設定します。

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

    [IAM] に移動

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

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

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

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

    このロールは、Google Cloud プロジェクトのログバケットのログビューに対する読み取りアクセス権をプリンシパルに付与します。ユーザーのアクセスを制限するには、既存のログビューを作成または選択し、新しいログバケットからユーザーに読み取り専用を許可する条件を追加します。

    1. [条件を追加] をクリックします。

    2. 条件の [タイトル] と [説明] を入力します。

    3. [条件タイプ] メニューで、[リソース]、[名前] の順に選択します。

    4. [演算子] メニューから [次で終わる] を選択します。

    5. [] フィールドに、ログビューの名前を入力します。 ログビューの詳細については、ログバケットでログビューを構成するをご覧ください。

      ログビューの名前の形式は次のとおりです。

      locations/global/buckets/all-audit-logs-bucket/views/view_id
      
    6. [保存] をクリックして、条件を追加します。

  5. [保存] をクリックして、権限を設定します。

[ログ エクスプローラ] ページからログを検索する

前のセクションで権限を設定したら、Google Cloud コンソールに移動し、次の手順を行います。

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

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

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

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

  4. [all-audit-logs-bucket] を選択します。

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

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

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