アクセス制御ガイド

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

概要

IAM の権限ロールは、Logging APIログ エクスプローラgcloud コマンドライン ツールでログデータにアクセスする機能を判断します。

役割は権限のコレクションです。メンバーに直接権限を付与することはできません。代わりに、ロールを付与します。ロールをユーザーに付与する際には、そのロールに含まれているすべての権限がユーザーに付与されます。1 人のメンバーに複数のロールを付与できます。

Google Cloud プロジェクト、フォルダ、バケット、組織などの Google Cloud リソースで Logging を使用するには、適切な権限を含む IAM ロールが必要です。

定義済みの役割

IAM には事前定義ロールがあり、特定の Google Cloud リソースに対するアクセス権を詳細に設定できるため、他のリソースへの不要なアクセスを防ぐことができます。Google Cloud はこれらのロールを作成、管理し、Logging が新しい機能を追加する場合など、必要に応じて権限を自動的に更新します。

次の表に、Logging のロール、ロールのタイトル、説明、含まれている権限、ロールを設定できる最低レベルのリソースタイプを示します。このリソースタイプまたはほとんどの場合に Google Cloud 階層のそれ以上の任意のタイプに特定のロールを付与できます。

ロールに含まれる各権限のリストを取得するには、ロール メタデータの取得をご覧ください。

役割 役職 説明 権限 最下位のリソース
roles/logging.admin ロギング管理者 Cloud Logging のすべての機能を使用するのに必要なすべての権限を付与します。
  • logging.buckets.copyLogEntries
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.fields.*
  • logging.locations.*
  • logging.logEntries.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.*
  • logging.notificationRules.*
  • logging.operations.*
  • logging.privateLogEntries.*
  • logging.queries.*
  • logging.sinks.*
  • logging.usage.*
  • logging.views.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
プロジェクト
roles/logging.bucketWriter ログバケット書き込み者 ログバケットにログを書き込むことができます。
  • logging.buckets.write
バケット
roles/logging.configWriter ログ構成書き込み ログをエクスポートするためのログベースの指標とシンクの構成に対する読み取りおよび書き込み権限を付与します。
  • logging.buckets.create
  • logging.buckets.delete
  • logging.buckets.get
  • logging.buckets.list
  • logging.buckets.undelete
  • logging.buckets.update
  • logging.cmekSettings.*
  • logging.exclusions.*
  • logging.locations.*
  • logging.logMetrics.*
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.list
  • logging.operations.*
  • logging.sinks.*
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.list
  • logging.views.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list
プロジェクト
roles/logging.fieldAccessor ログフィールド アクセサーベータ版 ログバケット内の制限付きフィールドを読み取ることができます。
  • logging.fields.*
バケット
roles/logging.logWriter ログ書き込み ログエントリを書き込むための権限を付与します。
  • logging.logEntries.create
プロジェクト
roles/logging.privateLogViewer プライベート ログ閲覧者 ログ閲覧者のロールの権限、およびプライベート ログ内のエントリに対する読み取り専用アクセス権を付与します。
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.list
  • logging.privateLogEntries.*
  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.update
  • logging.sinks.get
  • logging.sinks.list
  • logging.usage.*
  • logging.views.access
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get
プロジェクト
roles/logging.viewAccessor ログ表示アクセス者 ビュー内のログを読み取ることができます。
  • logging.logEntries.download
  • logging.views.access
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
プロジェクト
roles/logging.viewer ログ閲覧者 ログの閲覧権限を付与します。
  • logging.buckets.get
  • logging.buckets.list
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.locations.*
  • logging.logEntries.list
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logServiceIndexes.*
  • logging.logServices.*
  • logging.logs.list
  • logging.queries.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.update
  • logging.sinks.get
  • logging.sinks.list
  • logging.usage.*
  • logging.views.get
  • logging.views.list
  • resourcemanager.projects.get
プロジェクト

考慮事項

リソース メンバーのユースケースに適用する権限とロールを決定する際は、次の点を考慮してください。

  • 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 に対する完全アクセス権(アクセスの透明性ログとデータアクセス監査ログ)が付与されます。

役割の付与

メンバーにロールを付与する方法については、アクセス権の付与、変更、取り消しをご覧ください。

1 人のユーザーに複数のロールを付与できます。ロールに含まれる権限のリストを取得するには、ロール メタデータの取得をご覧ください。

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

カスタムの役割

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

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

API 権限

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

Google Cloud 組織、請求先アカウント、フォルダに保存されているログが必要な場合、これらのリソースには、logssinks のための独自の API メソッドがあるので注意してください。表は、すべてのメソッドを繰り返すのではなく、projects のメソッドのみを個別に示しています。

ロギングのメソッド 必要な権限 リソースの種類
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.tail 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.configWriter または roles/logging.admin または roles/owner のいずれかのロール、または、同等の権限を持つロールが必要です。

ログエントリが宛先にルーティングされた後、ログエントリ宛先の Cloud Storage、BigQuery、Pub/Sub に対する IAM 権限とロールによって全面的に制御されます。

除外フィルタを管理する権限を含むカスタムロールを作成する場合は、logging.exclusions.* 権限を追加する代わりに、logging.sinks.* 権限をロールに追加します。除外の管理はログシンクの一部であるため、シンクの管理に関するすべての権限(除外を含む)が logging.sinks.* 権限に含まれます。

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 への完全アクセス権。

この従来の方法を使用してサービス アカウントのアクセスレベルを設定する方法については、サービス アカウントの権限をご覧ください。