アクセス制御ガイド

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

概要

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

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

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

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

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

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

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

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

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

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

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

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

役割の付与

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

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

権限とロール

次の表に、Cloud Logging へのアクセスを許可する Cloud 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
プロジェクト、組織、
フォルダ、請求先アカウント
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}
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.admin
ロギング管理者 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}
resourcemanager.projects.get
logging.usage.get
プロジェクト、組織、
フォルダ、請求先アカウント
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
プロジェクト、組織、
フォルダ
roles/editor 編集者 roles/viewer ロギング権限に加え
logging.logEntries.create
logging.logMetrics.{create, update, delete}
logging.logs.delete
プロジェクト、組織、
フォルダ
roles/owner オーナー roles/editor ロギング権限に加え
logging.privateLogEntries.list
logging.sinks.{create, update, delete}`
プロジェクト、組織、
フォルダ

カスタムロール

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

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

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

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

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

API 権限

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

ロギングのメソッド 必要な権限 リソースの種類
billingAccounts.logs.* logging.logs.*projects.logs.* を参照) 請求先アカウント
billingAccounts.sinks.* logging.sinks.*projects.sinks.* を参照) 請求先アカウント
billingAccounts.locations.buckets.* logging.buckets.*projects.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.buckets.* を参照) フォルダ
monitoredResourceDescriptors.list (なし) (なし)
organizations.logs.* logging.logs.*projects.logs.* を参照) 組織
organizations.sinks.* logging.sinks.*projects.sinks.* を参照) 組織
organizations.locations.buckets.* logging.buckets.*projects.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.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 コマンドは、Cloud Identity and Access Management の権限によって制御されます。

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

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

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

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

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

ログエントリがエクスポートされると、エクスポートされたコピーへのアクセスは、エクスポート先の Cloud Storage、BigQuery、Pub/Sub に対する Cloud 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 への完全アクセス権。

ベスト プラクティス

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

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

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