IAM によるアクセス制御

このドキュメントでは、Cloud Logging が Identity and Access Management(IAM)のロールと権限を使用して Logging リソースへのアクセスを制御する方法について説明します。IAM ロールによって、ログシンクやログバケットの作成、ログバケットに保存されているログデータの読み取り、ログ エクスプローラなどのページへのアクセスなどのアクションを実行できるかどうかが決まります。Logging API または Google Cloud CLI コマンドを発行する場合、IAM ロールによって、コマンドを実行する権限があるかどうかが決まります。

概要

IAM ロールによって、Logging 内で実行できるアクションが決まります。ロールとは、複数の権限をまとめたものです。プリンシパルにロールを付与すると、そのロールに含まれるすべての権限が付与されます。同じプリンシパルに複数のロールを付与できます。

IAM ロールは、 Trusted Cloud プロジェクト、フォルダ、バケット、組織などのリソースに付与されます。たとえば、特定の Trusted Cloud プロジェクトに対するログ閲覧者ロール(role/logging.viewer)をプリンシパルに付与できます。

このページの事前定義ロールLogging のロールのセクションでは、Logging のロールと権限に関する包括的な情報を提供しています。このページのその他のセクションでは、特定のユースケース向けのロールや権限に関する情報を提供しています。

このセクションの残りの部分では、ログバケットへのアクセス権、またはログバケット内の一部のログエントリのみへのアクセス権をプリンシパルに付与する方法について説明します。

ログバケットへのアクセス権を付与する

ログ閲覧者ロール(role/logging.viewer)を付与されたプリンシパルは、データアクセス ログを除く、_Required ログバケットと _Default ログバケットに保存されたすべてのログデータにアクセスできます。データアクセス ログにアクセスする必要があるプリンシパルには、プライベート ログ閲覧者ロール(roles/logging.privateLogViewer)を付与します。

カスタム ログバケットについては、_AllLogs ビューまたはカスタム ログビューへのアクセス権を付与できます。Logging は、ログバケット内のすべてのログエントリを含む _AllLogs ビューを自動的に作成します。ログビューへのアクセス権を付与するには、ログビューまたはプロジェクトに接続された IAM ポリシーに IAM バインディングを追加します。詳細については、ログビューへのアクセスを制御するをご覧ください。

Logging では、ログバケットのタグもサポートしています。タグは、費用を把握するうえで役立ちます。タグを使用して、ユーザーがログバケットを削除できないようにすることもできます。詳細については、タグを使用してログバケットへのアクセスを管理するをご覧ください。

ログバケット内の一部のログエントリへのアクセス権を付与する

ログバケットに保存されている一部のログエントリのみへのアクセス権をプリンシパルに付与するには、ログビューを作成してから、プリンシパルにログビューへのアクセス権を付与します。たとえば、リソースタイプが Compute Engine インスタンスであるログエントリのみを含む _Default ログバケットのログビューを作成できます。ログビューの作成と、ビューへのアクセス権を付与するために使用できるさまざまな戦略の詳細については、ログバケットのログビューを構成するをご覧ください。

事前定義ロール

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

次の表に、Logging の事前定義ロールの一覧を表示します。ロールごとに、テーブルには、ロールのタイトル、説明、含まれている権限、ロールに付与できる最低レベルのリソースタイプが表示されます。事前定義ロールは、 Trusted 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.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.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.logScopes.*

  • logging.logScopes.create
  • logging.logScopes.delete
  • logging.logScopes.get
  • logging.logScopes.list
  • logging.logScopes.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.operations.get

logging.operations.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.serviceAgent)

Grants a Cloud Logging Service Account the ability to create and link datasets.

bigquery.datasets.create

bigquery.datasets.get

bigquery.datasets.link

(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.logScopes.get

logging.logScopes.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)のロールを付与します。
  • ユーザーにプロジェクト内のすべてのログビューのログの読み取りを許可するには、プロジェクトに対する IAM ロール roles/logging.viewAccessor を付与します。

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

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

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

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

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

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

プロジェクト レベルのロール

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

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

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

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

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

ロールの付与

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

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

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

カスタムロール

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

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

Cloud Logging の権限

次の表に、Cloud Logging の特定の機能に必要な権限の一部を示します。この表は、ログ エクスプローラなどのページを使用する際に必要な権限の特定に役立ちます。

表の 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.sinks.{list, get}
ログの使用状況を表示する logging.usage.get
ログをダウンロードする logging.logEntries.{list, download}

ログをダウンロードするには、これらの権限のいずれか一つが必要です。ログをダウンロードする権限を含むロールは、プロジェクト レベルで付与する必要があります。これらの権限を含むロールがログビューの IAM ポリシー ファイルで付与されている場合、ログをダウンロードすることはできません。

ログスコープの一覧を取得する logging.logScopes.{get, list}
デフォルトのログスコープを表示する observability.scopes.get
ログを除外する logging.exclusions.{list, create, get, update, delete}

除外フィルタを管理する権限を含むカスタムロールを作成する場合、logging.exclusions.* 権限を付与する代わりに、logging.sinks.* 権限をロールに追加します。

シンクを作成して使用する logging.sinks.{list, create, get, update, delete}

シンクを作成するときに、宛先にログエントリを書き込むことができる IAM ロールもサービス アカウントに付与する必要があります。詳細については、宛先の権限を設定するをご覧ください。

ログエントリがサポートされている宛先に転送された後、ログエントリへのアクセスは、宛先の IAM 権限とロールによって全面的に制御されます。

非公開クエリを保存して使用する logging.queries.usePrivate
logging.queries.{listShared,getShared}
共有クエリを保存して使用する logging.queries.{share, getShared, updateShared, deleteShared, listShared}
最近のクエリを使用する logging.queries.{create, list}
ログスコープを作成して管理する logging.logScopes.{create, delete, get, list, update}
デフォルトのログスコープを設定して管理する observability.scopes.{get, update}

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

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

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

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