アクセス制御ガイド

このページでは、Cloud Logging が Identity and Access Management(IAM)を使用して Google Cloud リソースのロギングデータへのアクセスを制御する方法について説明します。

概要

IAM の権限と役割によって、Logging API、Google Cloud Console ログビューアgcloud コマンドライン ツールの使用方法が決定されます。

ログは Google Cloud プロジェクト、組織、フォルダ、請求先アカウントのログバケット内に存在します。これらの Google Cloud リソースはそれぞれ、独自のメンバーセットと独自の Cloud Logging のロールと権限のセットを持つことができます。

Google Cloud プロジェクトのロギングデータに Logging を使用するには、Logging の使用が許可された IAM ロールを持つメンバーであることが必要です。Logging に適用される IAM のロールは次のとおりです。

  • roles/logging.viewer(ログビューア)は、アクセスの透明性ログとデータアクセス監査ログ以外のすべての Logging 機能に対する読み取り専用権限を付与します。

  • roles/logging.privateLogViewer(プライベート ログビューア)には、roles/logging.viewer に加え、アクセスの透明性ログとデータアクセス監査ログの読み取り権限があります。 このロールは、_Required バケットと _Default バケットにのみ適用されます。

  • roles/logging.logWriter(ログ書き込み)をサービス アカウントに付与して、ログの書き込みに十分な権限のみをアプリケーションに付与できます。 この役割では、閲覧権限は付与されません。

  • roles/logging.bucketWriter(ログバケット書き込み)をサービス アカウントに付与すると、ログバケットにログを書き込むための十分な権限を Cloud Logging に付与できます。このロールを特定のバケットに制限するには、IAM 条件を使用します。例については、ログをあるプロジェクトから別のプロジェクトの別のバケットにルーティングするをご覧ください。

  • roles/logging.configWriter(ログ構成書き込み)は、ログベースの指標、除外、バケット、ビューを作成し、シンクをエクスポートする権限を付与します。これらのアクションにログビューア(コンソール)を使用するには、roles/logging.viewer を追加してください。

  • roles/logging.admin(Logging 管理者)は、Logging に関連するすべての権限を付与します。

  • roles/logging.viewAccessor(ログ表示アクセス者)は、ビュー内のログを読み取るための権限を付与します。このロールを特定のバケット内のビューに制限するには、IAM 条件を使用します。例については、バケットからのログの読み取りをご覧ください。

  • roles/viewer(プロジェクト閲覧者)は、roles/logging.viewer と同じです。この役割は、アクセスの透明性ログとデータアクセス監査ログ以外のすべての Logging 機能に対する読み取り専用権限を付与します。 このロールは、_Required バケットと _Default バケットにのみ適用されます。

  • roles/editor(プロジェクト編集者)には、roles/logging.viewer の権限、ログエントリの書き込み権限、ログの削除権限、ログベースの指標の作成権限が含まれます。この役割では、エクスポート シンクの作成や、アクセスの透明性ログまたはデータアクセス監査ログの読み取りを行うことはできません。

  • roles/owner(プロジェクト オーナー)によって、Logging に対する完全アクセス権(アクセスの透明性ログとデータアクセス監査ログ)が付与されます。

Logging の役割と権限の詳細については、このページの権限と役割をご覧ください。

役割の付与

メンバーに役割を付与するには、roles/owner(プロジェクト オーナー)の権限のセットが必要です。役割の付与方法については、アクセス権の付与、変更、取り消しをご覧ください。

Google Cloud リソースにアクセスするために必要な権限が不足している場合は、リソースのオーナーとして登録されているメンバーにお問い合わせください。

権限と役割

次の表に、Cloud Logging へのアクセスを許可する IAM のロールを示します。各役割には、特定のロギングの権限セットがあります。役割は、一覧表示されたリソースの種類のメンバーに割り当てることができます。

表の a.b.{x,y}a.b.xa.b.y を意味します。

役割名 役割のタイトル ロギングの権限 リソースの種類
roles/
logging.viewer
ログビューア logging.logEntries.list
logging.logMetrics.{list, get}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, get}
logging.buckets.{list, get}
logging.usage.get
resourcemanager.projects.get
logging.queries.{get, list, update, create, delete}
プロジェクト、組織、
フォルダ、請求先アカウント
roles/
logging.privateLogViewer
プライベート ログ閲覧者 roles/logging.viewer 権限に加え
logging.privateLogEntries.list
プロジェクト、組織、
フォルダ、請求先アカウント
roles/
logging.logWriter
ログ書き込み logging.logEntries.create プロジェクト、組織、
フォルダ、請求先アカウント
roles/
logging.configWriter
ログ設定書き込み logging.buckets.{list, create, get, update, delete, undelete}
logging.exclusions.{list, create, get, update, delete}
logging.logMetrics.{list, create, get, update, delete}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, create, get, update, delete}
resourcemanager.projects.{get, list}
プロジェクト、組織、
フォルダ、請求先アカウント
roles/
logging.bucketWriter
ログバケット書き込み者 logging.buckets.write プロジェクト
roles/
logging.viewAccessor
ログ表示アクセス者 logging.views.access プロジェクト、組織、
フォルダ、請求先アカウント
roles/
logging.admin
Logging 管理者 logging.exclusions.{list, create, get, update, delete}
logging.logEntries.{create, list}
logging.logMetrics.{list, create, get, update, delete}
logging.logs.{delete, list}
logging.logServiceIndexes.list
logging.logServices.list
logging.privateLogEntries.list
logging.sinks.{list, create, get, update, delete}
logging.buckets.{list, get, update, create, delete, undelete}
logging.views.access
logging.usage.get
resourcemanager.projects.get
logging.queries.{get, list, update, create, delete}
プロジェクト、組織、
フォルダ、請求先アカウント
roles/viewer 閲覧者 logging.logEntries.list
logging.logMetrics.{list, get}
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
logging.sinks.{list, get}
resourcemanager.projects.get
logging.queries.{get, list, update, create, delete}
プロジェクト、組織、
フォルダ
roles/editor 編集者 roles/viewer ロギング権限に加え:
logging.logEntries.create
logging.logMetrics.{create, update, delete}
logging.logs.delete
logging.queries.{get, list, update, create, delete}
プロジェクト、組織、
フォルダ
roles/owner オーナー roles/editor ロギング権限に加え:
logging.privateLogEntries.list
logging.sinks.{create, update, delete}
logging.queries.{get, list, update, create, delete}
プロジェクト、組織、
フォルダ

カスタムロール

Logging の権限を含むカスタムの役割を作成するには、次の手順に従います。

  • Logging API の権限を付与する役割の場合は、API 権限の権限から選択します。

  • ログビューアを使用する権限を付与する役割の場合は、コンソール権限の権限グループから選択します。

  • gcloud logging を使用する権限を付与する役割の場合は、gcloud ツールの概要をご覧ください。

カスタム役割の詳細については、IAM のカスタムの役割についてをご覧ください。

API 権限

Logging API メソッドでは、特定の IAM の権限が必要になります。次の表に、API メソッドで必要な権限を示します。

ロギングのメソッド 必要な権限 リソースの種類
billingAccounts.logs.* logging.logs.*projects.logs.* を参照) 請求先アカウント
billingAccounts.sinks.* logging.sinks.*projects.sinks.* を参照) 請求先アカウント
billingAccounts.locations.buckets.* logging.buckets.*projects.locations.buckets.* を参照) 請求先アカウント
entries.list logging.logEntries.list または
logging.privateLogEntries.list
プロジェクト、組織、
フォルダ、請求先アカウント
entries.write logging.logEntries.create プロジェクト、組織、
フォルダ、請求先アカウント
folders.logs.* logging.logs.*projects.logs.* を参照) フォルダ
folders.sinks.* logging.sinks.*projects.sinks.* を参照) フォルダ
folders.locations.buckets.* logging.buckets.*projects.locations.buckets.* を参照) フォルダ
monitoredResourceDescriptors.list (なし) (なし)
organizations.logs.* logging.logs.*projects.logs.* を参照) 組織
organizations.sinks.* logging.sinks.*projects.sinks.* を参照) 組織
organizations.locations.buckets.* logging.buckets.*projects.locations.buckets.* を参照) 組織
projects.exclusions.create logging.exclusions.create プロジェクト
projects.exclusions.delete logging.exclusions.delete プロジェクト
projects.exclusions.get logging.exclusions.get プロジェクト
projects.exclusions.list logging.exclusions.list プロジェクト
projects.exclusions.patch logging.exclusions.update プロジェクト
projects.logs.list logging.logs.list プロジェクト
projects.logs.delete logging.logs.delete プロジェクト
projects.sinks.list logging.sinks.list プロジェクト
projects.sinks.get logging.sinks.get プロジェクト
projects.sinks.create logging.sinks.create プロジェクト
projects.sinks.update logging.sinks.update プロジェクト
projects.sinks.delete logging.sinks.delete プロジェクト
projects.locations.buckets.list logging.buckets.list プロジェクト
projects.locations.buckets.get logging.buckets.get プロジェクト
projects.locations.buckets.patch logging.buckets.update プロジェクト
projects.locations.buckets.create logging.buckets.create プロジェクト
projects.locations.buckets.delete logging.buckets.delete プロジェクト
projects.locations.buckets.undelete logging.buckets.undelete プロジェクト
projects.metrics.list logging.logMetrics.list プロジェクト
projects.metrics.get logging.logMetrics.get プロジェクト
projects.metrics.create logging.logMetrics.create プロジェクト
projects.metrics.update logging.logMetrics.update プロジェクト
projects.metrics.delete logging.logMetrics.delete プロジェクト

コンソール権限

次の表に、ログビューアの使用に必要な権限を示します。

表の a.b.{x,y}a.b.xa.b.y を意味します。

コンソール アクティビティ 必要な権限
最小限の読み取り専用アクセス logging.logEntries.list
logging.logs.list
logging.logServiceIndexes.list
logging.logServices.list
resourcemanager.projects.get
データアクセス監査ログを表示できるようにする logging.privateLogEntries.list を追加します
アクセスの透明性ログを表示できるようにする logging.privateLogEntries.list を追加
ログベースの指標を表示できるようにする logging.logMetrics.{list, get} を追加します
エクスポートを表示できるようにする logging.sinks.{list, get} を追加します
ログ使用量を表示できるようにする logging.usage.get を追加します
ログを除外できるようにする logging.exclusions.{list, create, get, update, delete} を追加します
ログをエクスポートできるようにする logging.sinks.{list, create, get, update, delete} を追加します
ログベースの指標を作成できるようにする logging.logMetrics.{list, create, get, update, delete} を追加します

コマンドライン権限

gcloud logging コマンドは IAM 権限によって制御されます。

gcloud logging コマンドのいずれかを使用するには、serviceusage.services.use 権限が必要です。

また、ログの場所とユースケースに対応する IAM のロールも必要です。詳細については、コマンドライン インターフェースの権限をご覧ください。

エクスポートされたログへのアクセス

シンクを作成するには、ログをエクスポートするための roles/logging.configWriterroles/logging.admin、または roles/owner 権限が必要です。

シンクは、ログのエクスポートを開始すると、受信したすべてのログエントリへの完全アクセス権が付与されます。シンクは、アクセスの透明性ログとデータアクセス監査ログなどのプライベート ログエントリをエクスポートできます。

ログエントリがエクスポートされると、エクスポートされたコピーへのアクセスは、エクスポート先の Cloud Storage、BigQuery、Pub/Sub に対する IAM の権限とロールによって全面的に制御されます。

Logging のアクセス スコープ

アクセス スコープは、Compute Engine VM インスタンスの権限を指定するレガシーな方法です。Logging API には次のアクセス スコープが適用されます。

アクセス スコープ 付与される権限
https://www.googleapis.com/auth/logging.read roles/logging.viewer
https://www.googleapis.com/auth/logging.write roles/logging.logWriter
https://www.googleapis.com/auth/logging.admin Logging API への完全アクセス権。
https://www.googleapis.com/auth/cloud-platform Logging API と他の有効なすべての Google Cloud API への完全アクセス権。

おすすめの方法

  • これで IAM のロールを使用できるようになりました。すべての VM インスタンスに「有効なすべての Google Cloud API に対する完全アクセス権」スコープを設定することをおすすめします。

    https://www.googleapis.com/auth/cloud-platform

    VM インスタンスのサービス アカウントに特定の IAM のロールを付与して、特定の API へのアクセスを制限できます。詳細については、サービス アカウント権限をご覧ください。

  • 除外を管理する権限を含むカスタム役割を作成する場合、logging.exclusions.* 権限を付与する代わりに、logging.sinks.* 権限を役割に付与することをおすすめします。

    除外の管理はログシンクの一部であるため、シンクの管理に関するすべての権限(除外を含む)が logging.sinks.* 権限に含まれます。