このドキュメントでは、gcloud CLI を使用して Cloud Logging バケットのログビューを作成および管理する方法について説明します。ログビューを使用すると、ログバケット内のログにアクセスできるユーザーを高度かつ詳細に制御できます。
Logging のストレージ モデルに関する一般的な情報については、ルーティングとストレージの概要をご覧ください。
ログビューについて
ログビューを使用すると、ログバケットに保存されているログのサブセットのみに対するアクセス権をユーザーに付与できます。たとえば、一元管理されたプロジェクトに組織のログを保存するシナリオを考えてみます。ログバケットにログを提供するプロジェクトごとに 1 つのログビューを作成できます。その後、各ユーザーに 1 つ以上のログビューへのアクセス権を付与し、ユーザーが表示できるログを制限できます。
ログバケットごとに最大 30 個のログビューを作成できます。
ログビューへのアクセスを制御する
Cloud Logging は、IAM ポリシーを使用して、ログビューにアクセスできるユーザーを制御します。IAM ポリシーは、リソースレベル、プロジェクト レベル、フォルダレベル、組織レベルで存在できます。Cloud Logging の場合、ログビューごとに IAM ポリシーを作成できます。プリンシパルがアクションに対して承認されているかどうかを判断するために、IAM は該当するすべてのポリシーを評価し、最初の評価をリソースレベルで行います。
Google Cloud プロジェクトに対して roles/logging.viewAccessor
ロールを持つプリンシパルは、プロジェクト内の任意のログバケットのビューとログにアクセスできます。
プリンシパルを特定のログビューに制限するには、次のいずれかを行います。
ログビューの IAM ポリシーを作成し、そのポリシーに IAM バインディングを追加して、プリンシパルにログビューへのアクセス権を付与します。
多数のログビューを作成する場合は、この方法をおすすめします。
プリンシパルに
roles/logging.viewAccessor
の IAM ロールを付与しますが、付与に IAM 条件をアタッチします。Google Cloud プロジェクトのポリシー ファイルには、同じロールと同じプリンシパルを含むが、条件式が異なるものを含む、ポリシー ファイルには 20 個のロール バインディングの上限があります。
詳細については、このドキュメントのログビューへのアクセス権を付与するをご覧ください。
自動作成されたログビュー
Cloud Logging は、すべてのログバケットの _AllLogs
ビューと、_Default
ログバケットの _Default
ビューを自動的に作成します。
_AllLogs
ビュー: ログバケット内のすべてのログを表示できます。_Default
ビュー: ログバケット内のデータアクセス以外のすべての監査ログを表示できます。
Cloud Logging によって自動的に作成されたビューは変更できませんが、_AllLogs
ビューは削除できます。
ログビュー フィルタ
各ログビューには、ビューに表示するログエントリを決定するフィルタが含まれます。フィルタには論理 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")
フィルタリング構文の詳細については、比較をご覧ください。
準備
ログビューを作成または更新する前に、次の手順を行います。
まだ行っていない場合は、適切な Google Cloud プロジェクトで、カスタムログビューを構成する Logging バケットを作成します。
-
ログビューの作成と管理に必要な権限を取得し、ログビューへのアクセス権を付与するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼します。
- ログ構成書き込み(
roles/logging.configWriter
) -
ロール バインディングをプロジェクトに追加する: プロジェクト IAM 管理者 (
roles/resourcemanager.projectIamAdmin
) -
ログビューにロール バインディングを追加する: Logging 管理者 (
roles/logging.admin
)
ロールの付与の詳細については、アクセスの管理をご覧ください。
- ログ構成書き込み(
Google Cloud CLI をインストールする。
ビューに表示するログを決定します。この情報を使用して、ログビューのフィルタを指定します。
ログビューへのアクセス権を付与するユーザーと、ログビューの IAM ポリシーまたは Google Cloud プロジェクトの 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
コマンドを実行します。
次に、ログビューへのアクセス権をプリンシパルに付与します。
ログビューへのアクセス権を付与する
ユーザー定義のログバケットに対するプリンシパルを特定のログビューに制限するには、ログビューまたはログバケットを保存する Google Cloud プロジェクトにロール バインディングを追加します。多数のログビューを作成する場合は、ログビューにバインディングを追加することをおすすめします。
ログビュー: ロール バインディングを追加する
このセクションでは、ロール バインディングをログビューに追加する方法と、ログビューに関連付けられたバインディングを一覧表示する方法について説明します。
ログビューにロール バインディングを追加する
ログビューの IAM ポリシー ファイルを更新するには、次の手順を行います。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- VIEW_ID: ログビューの ID。
- PRINCIPAL: ロールを付与するプリンシパルの識別子。通常、プリンシパル ID の形式は
PRINCIPAL-TYPE:ID
です。例:user:my-user@example.com
。PRINCIPAL_ID
に使用できる形式の一覧については、プリンシパル ID をご覧ください。 - BUCKET_NAME: ログバケットの名前。
- LOCATION: ログバケットのロケーション。
gcloud logging views add-iam-policy-binding
コマンドを実行します。
Linux、macOS、Cloud Shell
gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION
Windows(PowerShell)
gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION
Windows(cmd.exe)
gcloud logging views add-iam-policy-binding VIEW_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --bucket=BUCKET_NAME --location=LOCATION
単一のバインディングが追加された場合のレスポンスは次のとおりです。
Updated IAM policy for logging view [projects/PROJECT_ID/locations/global/buckets/BUCKET_NAME/views/VIEW_ID]. bindings: - members: - PRINCIPAL role: roles/logging.viewAccessor etag: BwYXfSd9-Gw= version: 1
コンソール
サポート対象外です。ログビューにバインディングを追加するには、Google Cloud CLI を使用します。
ログビューのロール バインディングを一覧表示する
ログビューの IAM バインディングを一覧表示するには、次の手順を行います。
gcloud
後述のコマンドデータを使用する前に、次のように置き換えます。
- VIEW_ID: ログビューの ID。
- BUCKET_NAME: ログバケットの名前。
- LOCATION: ログバケットのロケーション。
gcloud logging views get-iam-policy
コマンドを実行します。
Linux、macOS、Cloud Shell
gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION
Windows(PowerShell)
gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION
Windows(cmd.exe)
gcloud logging views get-iam-policy VIEW_ID --bucket=BUCKET_NAME --location=LOCATION
ログビューにバインディングが含まれていない場合、レスポンスには etag
フィールドのみが含まれます。ログビューに単一のバインディングが含まれている場合のレスポンスを以下に示します。
bindings: - members: - PRINCIPAL role: roles/logging.viewAccessor etag: BwYXfSd9-Gw= version: 1
コンソール
サポート対象外です。ログビューのバインディングを一覧表示するには、Google Cloud CLI を使用します。
Google Cloud プロジェクト: ロール バインディングを追加する
このセクションでは、ロール バインディングを Google Cloud プロジェクトに追加する方法と、プロジェクトに接続されているバインディングを一覧表示する方法について説明します。
ロール バインディングをプロジェクトに追加する
Google Cloud プロジェクトの IAM ポリシー ファイルにロール バインディングを追加するには、次の手順を行います。
gcloud
条件を指定して JSON または yaml ファイルを作成します。
たとえば、次の内容のファイルを
condition.yaml
という名前で作成するとします。expression: "resource.name == \"projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID\"" title: "My title" description: "My description"
省略可: JSON または yaml ファイルが正しくフォーマットされていることを確認するには、次のコマンドを実行します。
gcloud alpha iam policies lint-condition --condition-from-file=condition.yaml
gcloud projects add-iam-policy-binding
メソッドを呼び出して、Google Cloud プロジェクトの IAM ポリシーを更新します。次のコマンドを実行する前に、次のように置き換えます。
- PROJECT_ID: プロジェクトの ID。
- PRINCIPAL: ロールを付与するプリンシパルの識別子。通常、プリンシパル ID の形式は
PRINCIPAL-TYPE:ID
です。例:user:my-user@example.com
。PRINCIPAL_ID
に使用できる形式の一覧については、プリンシパル ID をご覧ください。
gcloud projects add-iam-policy-binding
コマンドを実行します。gcloud projects add-iam-policy-binding PROJECT_ID --member=PRINCIPAL --role='roles/logging.viewAccessor' --condition-from-file=condition.yaml
上記のコマンドのレスポンスには、すべてのロール バインディングが含まれています。
- condition: description: My description expression: resource.name == "projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID" title: My title members: - PRINCIPAL role: roles/logging.viewAccessor
コンソール
ログバケットを作成したプロジェクトで、次の操作を行います。
-
Google Cloud コンソールの [IAM] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [IAM と管理者] である結果を選択します。
[
アクセスを許可] をクリックします。[新しいプリンシパル] 項目に、ユーザーのメール アカウントを追加します。
[ロールを選択] プルダウン メニューで [ログビュー アクセサー] を選択します。
このロールは、すべてのビューに対する読み取りアクセス権をユーザーに付与します。ユーザーによる特定のビューへのアクセスを制限するには、リソース名に基づいて条件を追加します。
[IAM の条件を追加] をクリックします。
条件の [タイトル] と [説明] を入力します。
[条件タイプ] のプルダウン メニューで、[リソース] > [名前] を選択します。
[Operator] プルダウン メニューで [=] を選択します。
[値] フィールドに、ビューへのフルパスを含む、ログビューの ID を入力します。
次に例を示します。
projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID
[保存] をクリックして、条件を追加します。
[保存] をクリックして、権限を設定します。
プロジェクトのロール バインディングを一覧表示する
Google Cloud プロジェクトのロール バインディングを一覧表示するには、次の手順を行います。
gcloud
次のコマンドを実行する前に、次のように置き換えます。
- PROJECT_ID: プロジェクトの ID。
gcloud projects get-iam-policy
コマンドを実行します。
gcloud projects get-iam-policy PROJECT_ID
上記のコマンドのレスポンスには、すべてのロール バインディングが含まれています。
- condition:
description: My description
expression: resource.name == "projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID"
title: My title
members:
- PRINCIPAL
role: roles/logging.viewAccessor
コンソール
Google Cloud コンソールの [IAM] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [IAM と管理者] である結果を選択します。
[IAM] ページには、すべてのプリンシパルとその IAM ロール、およびそれらのロールに接続されている条件が一覧表示されます。
ログバケットのログビューを一覧表示する
ログバケット用に作成されたログビューを一覧表示するには、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(_AllLogs
と compute
)があることを示しています。
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
ログビューを更新する
ログビューを更新または変更するには、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
)のロールがあることを確認します。
-
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Logging] である結果を選択します。
[範囲を絞り込む] をクリックして、[範囲を絞り込む] パネルを表示します。ここで、ログの表示に使用するログバケットとログビューを選択できます。
詳細については、ログ エクスプローラ のドキュメントをご覧ください。