ログバケットのログビューを構成する

このドキュメントでは、gcloud CLI を使用して Cloud Logging バケットのログビューを作成および管理する方法について説明します。ログビューを使用すると、ログバケット内のログにアクセスできるユーザーを高度かつ詳細に制御できます。

Logging のストレージ モデルに関する一般的な情報については、ルーティングとストレージの概要をご覧ください。

ログビューについて

ログビューを使用すると、ログバケットに保存されているログのサブセットのみに対するアクセス権をユーザーに付与できます。たとえば、一元管理されたプロジェクトに組織のログを保存するシナリオを考えてみます。ログバケットにログを提供するプロジェクトごとに 1 つのログビューを作成できます。その後、各ユーザーに 1 つ以上のログビューへのアクセス権を付与し、ユーザーが表示できるログを制限できます。

Cloud Logging は、すべてのログバケットの _AllLogs ビューと、_Default ログバケットの _Default ビューを自動的に作成します。

  • _AllLogs ビュー: ログバケット内のすべてのログを表示できます。
  • _Default ビュー: ログバケット内のデータアクセス以外のすべての監査ログを表示できます。

Cloud Logging によって自動的に作成されたビューは変更できませんが、_AllLogs ビューは削除できます。

ログバケットごとに最大 30 個のログビューを作成できます。

各ログビューにはフィルタがあり、ビューに表示されるログエントリを制限します。フィルタには論理 AND 演算子や論理 NOT 演算子を含めることができますが、論理 OR 演算子を含めることはできません。 フィルタは次のいずれかの値を比較できます。

  • source 関数を使用するデータソース。 source 関数は、組織、フォルダ、Google Cloud プロジェクトの階層内にある特定のリソースのログエントリを返します。

  • log_id 関数を使用するログ ID。log_id 関数は、logName フィールドの指定された LOG_ID 引数に一致するログエントリを返します。

  • resource.type= FIELD_NAME 比較を使用した有効なリソースタイプ。

たとえば、次のフィルタは、myproject という Google Cloud プロジェクトから Compute Engine stdout ログエントリをキャプチャします。

source("projects/myproject") AND resource.type = "gce_instance" AND log_id("stdout")

フィルタリング構文の詳細については、比較をご覧ください。

準備

ログビューを作成または更新する前に、次の手順を行います。

  1. まだ行っていない場合は、適切な Google Cloud プロジェクトで、カスタムログビューを構成する Logging バケットを作成します。

  2. ログビューの作成、表示、更新、削除に必要な権限を取得するには、プロジェクトに対するログ構成書き込みroles/logging.configWriter)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

  3. Google Cloud CLI をインストールする。

  4. ビューに表示するログを決定します。この情報を使用して、ログビューのフィルタを指定します。

  5. ログビューにアクセスできるユーザーを決定します。roles/logging.viewAccessor のロールを持つプリンシパルは、任意のログビューでログを表示できます。ただし、Cloud Logging は IAM 条件をサポートしています。条件を使用すると、プリンシパルに特定のログビューへのアクセス権を付与できます。詳細については、ログビューへのアクセス権を付与するをご覧ください。

ログビューを作成する

ログビューを作成するには、gcloud logging views update コマンドを使用します。ログバケットごとに最大 30 個のログビューを作成できます。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • VIEW_ID: ログビューの ID。
  • BUCKET_NAME: ログバケットの名前。
  • LOCATION: ログバケットのロケーション。
  • FILTER: ログビューを定義するフィルタ。空の場合、ログビューにはすべてのログが含まれます。たとえば、Compute Engine VM インスタンスのログでフィルタするには、「"resource.type=gce_instance"」を入力します。
  • DESCRIPTION: ログビューの説明。たとえば、説明 "Compute logs" に次のように入力します。

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

Linux、macOS、Cloud Shell

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows(PowerShell)

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows(cmd.exe)

gcloud logging views create VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

このコマンドはレスポンスを返しません。変更を確認するには、gcloud logging views list コマンドを実行します。

ログバケットのログビューを一覧表示する

ログバケット用に作成されたログビューを一覧表示するには、gcloud logging views list コマンドを使用します。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • BUCKET_NAME: ログバケットの名前。
  • LOCATION: ログバケットのロケーション。

gcloud logging views list コマンドを実行します。

Linux、macOS、Cloud Shell

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

Windows(PowerShell)

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

Windows(cmd.exe)

gcloud logging views list --bucket=BUCKET_NAME --location=LOCATION

レスポンス データはログビューのリストです。ログビューごとに、作成日と最終更新日とともにフィルタが表示されます。作成日と更新日が空の場合、Google Cloud プロジェクトの作成時にログビューが作成されました。次の出力例は、クエリが実行されたログバケット上の 2 つのビュー ID(_AllLogscompute)であることを示しています。

VIEW_ID: _AllLogs
FILTER:
CREATE_TIME:
UPDATE_TIME:

VIEW_ID: compute
FILTER: resource.type="gce_instance"
CREATE_TIME: 2024-02-20T17:41:17.405162921Z
UPDATE_TIME: 2024-02-20T17:41:17.405162921Z

ログビューへのアクセス権を付与する

Google Cloud プロジェクトに対して roles/logging.viewAccessor のロールを持つプリンシパルは、任意のログビューでログを表示できます。ただし、Cloud Logging は IAM 条件をサポートしています。条件を使用すると、プリンシパルに特定のログビューへのアクセス権を付与できます。

IAM 条件は、Google Cloud プロジェクトのロール バインディングで指定されます。許可ポリシーには、同じロールと同じプリンシパルを含むが、条件式が異なるロール バインディングの上限が 20 個あります。

ユーザーがログにアクセスできるようにするためビューに追加するには、次の手順を実行します。

gcloud

  1. プロジェクトの IAM ポリシーを取得し、ローカル ファイルに JSON 形式で書き込みます。次のコマンドを実行する前に、PROJECT_ID をログバケットを含むプロジェクトの ID に置き換えます。

    gcloud projects get-iam-policy PROJECT_ID --format json > output.json
    
  2. 作成した JSON ファイルを編集し、作成したログバケットからユーザーが読み取ることができる IAM 条件を追加します。

    たとえば、次の例では、1 つのログビューに対してのみ、指定したメンバーに "roles/logging.viewAccessor" のロールを付与するバインディングを指定しています。

    {
      "bindings": [
        {
          "members": [
            "user:username@gmail.com"
          ],
          "role": "roles/logging.viewAccessor",
          "condition": {
              "title": "Bucket reader condition example",
              "description": "Grants logging.viewAccessor role to user username@gmail.com for the VIEW_ID log view.",
              "expression":
                "resource.name == \"projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID\""
          }
        }
      ],
      "etag": "BwWd_6eERR4=",
      "version": 3
    }
  3. IAM ポリシーを更新します。

    gcloud projects set-iam-policy PROJECT_ID output.json
    

コンソール

ログバケットを作成したプロジェクトで、次の操作を行います。

  1. Google Cloud コンソールの [IAM] ページに移動します。

    [IAM] に移動

    検索バーを使用してこのページを検索する場合は、小見出しが [IAM と管理者] である結果を選択します。

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

  3. [新しいプリンシパル] 項目に、ユーザーのメール アカウントを追加します。

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

    このロールは、すべてのビューに対する読み取りアクセス権をユーザーに付与します。ユーザーによる特定のビューへのアクセスを制限するには、リソース名に基づいて条件を追加します。

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

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

    3. [条件タイプ] のプルダウン メニューで、[リソース] > [名前] を選択します。

    4. [Operator] プルダウン メニューで [=] を選択します。

    5. [] フィールドに、ビューへのフルパスを含む、ログビューの ID を入力します。

      次に例を示します。

      projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID
    6. [保存] をクリックして、条件を追加します。

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

ログビューを更新する

ログビューを更新または変更するには、gcloud logging views update コマンドを使用します。ビュー ID がわからない場合は、ログビューを一覧表示するをご覧ください。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • VIEW_ID: ログビューの ID。
  • BUCKET_NAME: ログバケットの名前。
  • LOCATION: ログバケットのロケーション。
  • FILTER: ログビューを定義するフィルタ。空の場合、ログビューにはすべてのログが含まれます。たとえば、Compute Engine VM インスタンスのログでフィルタするには、「"resource.type=gce_instance"」を入力します。
  • DESCRIPTION: ログビューの説明。たとえば、説明 "New description for the log view" に次のように入力します。

gcloud logging views update コマンドを実行します。

Linux、macOS、Cloud Shell

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows(PowerShell)

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

Windows(cmd.exe)

gcloud logging views update VIEW_ID --bucket=BUCKET_NAME --location=LOCATION --log-filter=FILTER --description=DESCRIPTION

このコマンドはレスポンスを返しません。変更を確認するには、gcloud logging views describe コマンドを実行します。

ログビューを削除する

ログビューを削除するには、gcloud logging views delete コマンドを使用します。ビュー ID がわからない場合は、ログビューを一覧表示するをご覧ください。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • VIEW_ID: ログビューの ID。
  • BUCKET_NAME: ログバケットの名前。
  • LOCATION: ログバケットのロケーション。

gcloud logging views delete コマンドを実行します。

Linux、macOS、Cloud Shell

gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows(PowerShell)

gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows(cmd.exe)

gcloud logging views delete VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

レスポンスで削除が確認されます。たとえば、tester という名前のログビューを削除した場合のレスポンスは次のようになります。

Deleted [tester].

ログビューについて説明する

ログビューの詳細情報を取得するには、gcloud logging views describe コマンドを使用します。ビュー ID がわからない場合は、ログビューを一覧表示するをご覧ください。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • VIEW_ID: ログビューの ID。
  • BUCKET_NAME: ログバケットの名前。
  • LOCATION: ログバケットのロケーション。

gcloud logging views describe コマンドを実行します。

Linux、macOS、Cloud Shell

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows(PowerShell)

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

Windows(cmd.exe)

gcloud logging views describe VIEW_ID --bucket=BUCKET_NAME --location=LOCATION

レスポンスには常に、ログビューの説明と完全修飾名が含まれます。フィルタ フィールドが空でない場合、フィルタも含まれます。レスポンスの例を次に示します。

createTime: '2024-02-20T17:41:17.405162921Z'
filter: resource.type="gce_instance"
name: projects/my-project/locations/global/buckets/my-bucket/views/compute
updateTime: '2024-02-20T17:41:17.405162921Z'

ログビューに関連付けられたログの表示

ログビューでログを表示するには、ログビューのログビュー アクセサー(roles/logging.viewAccessorのロールがあることを確認します。

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

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

  2. [範囲を絞り込む] をクリックして、[範囲を絞り込む] パネルを表示します。ここで、ログの表示に使用するログバケットとログビューを選択できます。

[範囲を絞り込む] パネル

詳細については、ログ エクスプローラ のドキュメントをご覧ください。

次のステップ

フィールド レベルのアクセスを構成する