IAM を使用したアクセス制御

このドキュメントでは、Identity and Access Management(IAM)の役割と権限を使用して Logging APIログ エクスプローラGoogle Cloud CLI でログデータへのアクセスを制御する方法について説明します。

概要

IAM の権限ロールによって、Logging APIログ エクスプローラGoogle Cloud CLI内のログデータにアクセス可能であるかどうかが判断されます。

ロールとは、一連の権限のことです。プリンシパルに直接権限を付与することはできません。代わりに、ロールを付与します。ロールをプリンシパルに付与する際には、ロールに含まれているすべての権限がプリンシパルに付与されます。同じプリンシパルに複数のロールを付与できます。

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

事前定義ロール

IAM の事前定義ロールを使用すると、特定の Google Cloud リソースに対してきめ細やかなアクセス権を付与し、他のリソースへの望ましくないアクセスを防ぐことができます。Google Cloud はこれらのロールを作成、維持し、必要に応じて自動的に権限を更新します(Logging に新機能が追加された場合など)。

次の表に、Logging の事前定義ロールの一覧を表示します。ロールごとに、テーブルには、ロールのタイトル、説明、含まれている権限、ロールに付与できる最低レベルのリソースタイプが表示されます。Google Cloud プロジェクト レベルで、またはほとんどの場合に、Google Cloud 階層のそれ以上の任意のタイプで、事前定義されたロールを付与できます。ログ表示アクセス者ロールの範囲をバケットレベルに厳密に制限するには、IAM Conditions のリソース属性を使用します。

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

Role Permissions

(roles/logging.admin)

Provides all permissions necessary to use all features of Cloud Logging.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.copyLogEntries

logging.buckets.create

logging.buckets.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.fields.access

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.*

  • logging.logEntries.create
  • logging.logEntries.download
  • logging.logEntries.list
  • logging.logEntries.route

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.*

  • logging.logs.delete
  • logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.privateLogEntries.list

logging.queries.*

  • logging.queries.deleteShared
  • logging.queries.getShared
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.updateShared
  • logging.queries.usePrivate

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.usage.get

logging.views.*

  • logging.views.access
  • logging.views.create
  • logging.views.delete
  • logging.views.get
  • logging.views.getIamPolicy
  • logging.views.list
  • logging.views.listLogs
  • logging.views.listResourceKeys
  • logging.views.listResourceValues
  • logging.views.setIamPolicy
  • logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.bucketWriter)

Ability to write logs to a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.write

(roles/logging.configWriter)

Provides permissions to read and write the configurations of logs-based metrics and sinks for exporting logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.create

logging.buckets.createTagBinding

logging.buckets.delete

logging.buckets.deleteTagBinding

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

logging.buckets.undelete

logging.buckets.update

logging.exclusions.*

  • logging.exclusions.create
  • logging.exclusions.delete
  • logging.exclusions.get
  • logging.exclusions.list
  • logging.exclusions.update

logging.links.*

  • logging.links.create
  • logging.links.delete
  • logging.links.get
  • logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logMetrics.*

  • logging.logMetrics.create
  • logging.logMetrics.delete
  • logging.logMetrics.get
  • logging.logMetrics.list
  • logging.logMetrics.update

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.notificationRules.*

  • logging.notificationRules.create
  • logging.notificationRules.delete
  • logging.notificationRules.get
  • logging.notificationRules.list
  • logging.notificationRules.update

logging.operations.*

  • logging.operations.cancel
  • logging.operations.get
  • logging.operations.list

logging.settings.*

  • logging.settings.get
  • logging.settings.update

logging.sinks.*

  • logging.sinks.create
  • logging.sinks.delete
  • logging.sinks.get
  • logging.sinks.list
  • logging.sinks.update

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

logging.views.create

logging.views.delete

logging.views.get

logging.views.getIamPolicy

logging.views.list

logging.views.update

observability.scopes.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/logging.fieldAccessor)

Ability to read restricted fields in a log bucket.

Lowest-level resources where you can grant this role:

  • Project

logging.fields.access

(roles/logging.linkViewer)

Ability to see links for a bucket.

logging.links.get

logging.links.list

(roles/logging.logWriter)

Provides the permissions to write log entries.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.create

logging.logEntries.route

(roles/logging.privateLogViewer)

Provides permissions of the Logs Viewer role and in addition, provides read-only access to log entries in private logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.sqlAlertWriter)

Ability to write SQL Alerts.

logging.sqlAlerts.*

  • logging.sqlAlerts.create
  • logging.sqlAlerts.update

(roles/logging.viewAccessor)

Ability to read logs in a view.

Lowest-level resources where you can grant this role:

  • Project

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • Project

logging.buckets.get

logging.buckets.list

logging.exclusions.get

logging.exclusions.list

logging.links.get

logging.links.list

logging.locations.*

  • logging.locations.get
  • logging.locations.list

logging.logEntries.list

logging.logMetrics.get

logging.logMetrics.list

logging.logServiceIndexes.list

logging.logServices.list

logging.logs.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

observability.scopes.get

resourcemanager.projects.get

以降のセクションでは、プリンシパルのユースケースに適用されるロールを決定するための追加情報を提供します。

Logging のロール

  • ユーザーが Logging のすべての操作を行えるようにするには、Logging 管理者(roles/logging.admin)のロールを付与します。

  • ユーザーがシンク、バケット、ビュー、リンク、ログベースの指標、除外などのロギング構成を作成および変更できるようにするには、ログ構成書き込み(roles/logging.configWriter)のロールを付与します。

  • ユーザーが _Required バケットと _Default バケットのログを読み取るには、ログ エクスプローラを使用し、[ログ分析] ページを使用して、次のいずれかのロールを付与します。

    • _Required バケットのすべてのログと _Default バケットの _Default ビューにアクセスするには、ログ閲覧者(roles/logging.viewer)のロールを付与します。
    • データアクセス ログを含む、_Required バケットと _Default バケットのすべてのログインにアクセスするには、プライベート ログ閲覧者(roles/logging.privateLogViewer)のロールを付与します。
  • ユーザーがプロジェクト内のすべてのログビューのログを読み取るには、プロジェクトに対する roles/logging.viewAccessor の IAM ロールを付与します。

  • ユーザーが特定のログビューのログのみを読み取るには、次の 2 つの方法があります。

    • ログビューの IAM ポリシーを作成し、プリンシパルにログビューへのアクセス権を付与する IAM バインディングをそのポリシーに追加します。

    • ログビューを含むプロジェクトに対する roles/logging.viewAccessor の IAM ロールをプリンシパルに付与します。ただし、IAM 条件をアタッチして、対象を特定ログビューに制限します。

    ログビューの作成とアクセス権の付与の詳細については、ログバケットのログビューを構成するをご覧ください。

  • 特定のバケット内の制限付きLogEntryフィールド(もしあれば)へのアクセス権をユーザーに与えるには、ログフィールド アクセサー(roles/logging.fieldAccessor) ロールを付与します。詳細については、フィールド レベルのアクセスを構成するをご覧ください。

  • ユーザーが Logging API を使用してログを書き込めるようにするには、ログ書き込み(roles/logging.logWriter)のロールを付与します。このロールでは、閲覧権限は付与されません。

  • シンクのサービス アカウントが別の Google Cloud プロジェクトのバケットにログをルーティングできるようにするには、サービス アカウントにログバケット書き込み(roles/logging.bucketWriter)のロールを付与します。サービス アカウントに権限を付与する手順については、エクスポート先の権限を設定するをご覧ください。

Project-level roles

  • ほとんどの Google Cloud サービスへの閲覧権限を付与するには、閲覧者(roles/viewer)のロールを付与します。

    このロールには、ログ閲覧者(roles/logging.viewer)のロールによって付与されたすべての権限が含まれています。

  • ほとんどの Google Cloud サービスへの編集者のアクセス権を付与するには、編集者(roles/editor)のロールを付与します。

    このロールには、ログ閲覧者(roles/logging.viewer)のロールによって付与されたすべての権限と、ログエントリの書き込み、ログの削除、ログベース指標の作成を行う権限が含まれています。ただし、このロールを使用して、ユーザーがシンクの作成、_Default バケット内のデータアクセス監査ログの読み取り、ユーザー定義ログバケット内のログの読み取りを行うことはできません。

  • ほとんどの Google Cloud サービスに対する完全アクセス権を付与するには、オーナー(roles/owner)のロールを付与します。

ロールを付与しています

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

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

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

カスタムロール

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

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

Google Cloud コンソールの権限

次の表に、ログ エクスプローラの使用に必要な権限を示します。

表の 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.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} を追加します
非公開の保存クエリを使用できる機能を追加する logging.queries.{list, create, get, update, delete} を追加します
共有の保存クエリを使用できる機能を追加する logging.queries.{share, getShared, updateShared, deleteShared, listShared} を追加します
最近のクエリを使用できる機能を追加する logging.queries.{create, list} を追加します

コマンドラインに対する権限

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

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

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

次のリストは、リンクされた BigQuery データセットを管理するための事前定義ロールと対応する権限を示しています。

前述のロールと権限は、[Log Analytics] ページなどの Google Cloud Observability ページにのみ適用されます。BigQuery インターフェースを使用してデータセットを管理する場合は、別の BigQuery のロールと権限が必要になる場合があります。詳細については、BigQuery の IAM によるアクセス制御をご覧ください。

クエリを保存する権限

このセクションでは、[ログ エクスプローラ] ページまたは [ログ分析] ページでクエリの保存、共有、使用を行うための事前定義ロールと権限について説明します。自分だけが参照できる非公開の保存済みクエリを使用する場合と、Google Cloud プロジェクトの他のメンバーと共有されている保存済みクエリを使用する場合で、必要な権限が異なります。

  • 非公開の保存クエリを使用するために必要な権限を取得するには、プロジェクトに対するログビューアroles/logging.viewer)の IAM ロールを付与するよう管理者に依頼してください。

    この事前定義ロールには、非公開の保存済みクエリを使用するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    非公開の保存済みクエリを使用するには、次の権限が必要です。

    • logging.queries.list
    • logging.queries.create
    • logging.queries.get
    • logging.queries.update
    • logging.queries.delete
  • 共有クエリの作成、更新、削除を行うために必要な権限を取得するには、プロジェクトに対する Logging 管理者roles/logging.admin)の IAM ロールを付与するよう管理者に依頼してください。

    この事前定義ロールには、共有クエリの作成、更新、削除を行うために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    共有クエリの作成、更新、削除を行うには、次の権限が必要です。

    • logging.queries.share
    • logging.queries.updateShared
    • logging.queries.deleteShared
  • 共有クエリを一覧表示して取得するために必要な権限を取得するには、プロジェクトに対するログビューアroles/logging.viewer)の IAM ロールを付与するよう管理者に依頼してください。

    この事前定義ロールには、共有クエリを一覧表示して取得するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    共有クエリを一覧表示して取得するには、次の権限が必要です。

    • logging.queries.listShared
    • logging.queries.getShared

ログ ルーティングに対する権限

シンクを作成して管理し、ログをルーティングする際のアクセス制御の設定方法については、エクスポート先の権限を設定するをご覧ください。

除外フィルタの管理は、シンクの構成と統合されています。除外フィルタの設定など、シンクの管理に関連するすべての権限は logging.sinks.* 権限に含まれます。除外フィルタを管理する権限を含むカスタム役割を作成する場合、logging.exclusions.* 権限を付与する代わりに、logging.sinks.* 権限をロールに追加します。

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

ログベースの指標に対する権限

プリンシパルがログベースの指標にアクセスするために必要な一般的なロールと権限の概要は次のとおりです。

  • ログ構成書き込みroles/logging.configWriter)のロールを使用すると、プリンシパルはログベースの指標をリスト表示、作成、取得、更新、削除できます。

  • ログビューアroles/logging.viewer)のロールには、既存の指標を表示する権限が含まれています。特にプリンシパルには、既存の指標を表示するために、logging.logMetrics.get 権限と logging.logMetrics.list 権限が必要です。

  • Monitoring 閲覧者roles/monitoring.viewer)のロールには、TimeSeries データを読み取る権限が含まれています。特にプリンシパルには、時系列データを読み取るために、monitoring.timeSeries.list 権限が必要です。

  • Logging 管理者roles/logging.admin)、プロジェクト編集者roles/editor)、プロジェクト オーナーroles/owner)のロールには、ログベースの指標を作成する権限が含まれています。特にプリンシパルには、ログベースの指標を作成するために、logging.logMetrics.create 権限が必要です。

ログベースのアラート ポリシーに対する権限

ログベースのアラート ポリシーを作成して管理するには、プリンシパルに次の Logging と Monitoring のロールと権限が必要です。

  • ログの読み取りと Logging 通知ルールの管理に必要な権限を取得するには、Logging 管理者 roles/logging.admin)プロジェクトに対する IAM ロールを付与するよう管理者に依頼してください。

    この事前定義ロールには、ログの読み取りと Logging 通知ルールの管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    ログの読み取りと Logging 通知ルールの管理には、次の権限が必要です。

    • logging.queries.listShared
    • logging.queries.getShared
  • ログベースのアラート ポリシーと通知チャンネルを管理するために必要な権限を取得するには、プロジェクトに対して次の IAM ロールを付与するよう管理者に依頼してください。

    これらの事前定義ロールには、ログベースのアラート ポリシーと通知チャネルの管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    ログベースのアラート ポリシーとその通知チャネルを管理するには、次の権限が必要です。

    • logging.queries.listShared
    • logging.queries.getShared
  • Google Cloud CLI でアラート ポリシーを作成するために必要な権限を取得するには、プロジェクトに対する Service Usage ユーザーroles/serviceusage.serviceUsageConsumer)の IAM ロールの付与を管理者に依頼してください。

    この事前定義ロールには、Google Cloud CLI でアラート ポリシーを作成するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

    必要な権限

    Google Cloud CLI でアラート ポリシーを作成するには、次の権限が必要です。

    • logging.queries.listShared
    • logging.queries.getShared

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

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