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.delete

logging.buckets.get

logging.buckets.list

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.create
  • logging.queries.delete
  • logging.queries.get
  • logging.queries.list
  • logging.queries.listShared
  • logging.queries.share
  • logging.queries.update
  • logging.queries.updateShared

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.usage.get

logging.views.*

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

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.delete

logging.buckets.get

logging.buckets.list

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.views.create

logging.views.delete

logging.views.get

logging.views.list

logging.views.update

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.create

logging.queries.delete

logging.queries.get

logging.queries.list

logging.queries.listShared

logging.queries.update

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.list

resourcemanager.projects.get

(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.create

logging.queries.delete

logging.queries.get

logging.queries.list

logging.queries.listShared

logging.queries.update

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.list

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 条件を使用して、特定のバケットの特定のログビューへの承認を制限できます。ログビューへのアクセス権の付与をご覧ください。

  • 特定のバケット内の制限付き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 のカスタムの役割についてをご覧ください。

Logging API の権限

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

Google Cloud 組織、請求先アカウント、フォルダに保存されているログが必要な場合、これらのリソースには logssinks のための独自のメソッドがあることにご注意ください。表は、すべてのメソッドを繰り返すのではなく、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 プロジェクト

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 を追加
最近のクエリを使用できる機能を追加する logging.queries.{create, list} を追加します

コマンドラインの権限

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

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

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

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

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

ログのルーティングの権限

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

除外フィルタの管理は、シンクの設定と統合されています。除外フィルタの設定を含む、シンクの管理に関するすべての権限は、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 ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。

    必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

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

  • Google Cloud CLI でアラート ポリシーを作成するために必要な権限を取得するには、プロジェクトに対する Service Usage ユーザー roles/serviceusage.serviceUsageConsumer)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 への完全アクセス権。

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