このドキュメントでは、Cloud Logging が Identity and Access Management(IAM)のロールと権限を使用して Logging リソースへのアクセスを制御する方法について説明します。IAM ロールによって、ログシンクやログバケットの作成、ログバケットに保存されているログデータの読み取り、ログ エクスプローラなどのページへのアクセスなどのアクションを実行できるかどうかが決まります。Logging API または Google Cloud CLI コマンドを発行する場合、IAM ロールによって、コマンドを実行する権限があるかどうかが決まります。
概要
IAM ロールによって、Logging 内で実行できるアクションが決まります。ロールとは、複数の権限をまとめたものです。プリンシパルにロールを付与すると、そのロールに含まれるすべての権限が付与されます。同じプリンシパルに複数のロールを付与できます。
IAM ロールは、 Google Cloud プロジェクト、フォルダ、バケット、組織などのリソースに付与されます。たとえば、特定の Google Cloud プロジェクトに対するログ閲覧者ロール(roles/logging.viewer)をプリンシパルに付与できます。
このページの事前定義ロールと Logging のロールのセクションでは、Logging のロールと権限に関する包括的な情報を提供しています。このページのその他のセクションでは、特定のユースケース向けのロールや権限に関する情報を提供しています。
このセクションの残りの部分では、ログバケットへのアクセス権、またはログバケット内の一部のログエントリのみへのアクセス権をプリンシパルに付与する方法について説明します。また、一部の LogEntry フィールドへのアクセスを制限する方法についても説明します。
ログバケットへのアクセス権を付与する
ログ閲覧者ロール(roles/logging.viewer)を付与されたプリンシパルは、データアクセス ログを除く、_Required ログバケットと _Default ログバケットに保存されたすべてのログデータにアクセスできます。データアクセス ログにアクセスする必要があるプリンシパルには、プライベート ログ閲覧者ロール(roles/logging.privateLogViewer)を付与します。
カスタム ログバケットについては、_AllLogs ビューまたはカスタム ログビューへのアクセス権を付与できます。Logging は、ログバケット内のすべてのログエントリを含む _AllLogs ビューを自動的に作成します。ログビューへのアクセス権を付与するには、ログビューまたはプロジェクトに接続された IAM ポリシーに IAM バインディングを追加します。詳細については、ログビューへのアクセスを制御するをご覧ください。
Logging では、ログバケットのタグもサポートしています。タグは、費用を把握するうえで役立ちます。タグを使用して、ユーザーがログバケットを削除できないようにすることもできます。詳細については、タグを使用してログバケットへのアクセスを管理するをご覧ください。
ログバケット内の一部のログエントリへのアクセス権を付与する
ログバケットに保存されている一部のログエントリのみへのアクセス権をプリンシパルに付与するには、ログビューを作成してから、プリンシパルにログビューへのアクセス権を付与します。たとえば、リソースタイプが Compute Engine インスタンスであるログエントリのみを含む _Default ログバケットのログビューを作成できます。ログビューの作成と、ビューへのアクセス権を付与するために使用できるさまざまな戦略の詳細については、ログバケットのログビューを構成するをご覧ください。
特定の LogEntry フィールドへのアクセスを制限する
LogEntry データ構造内の特定のフィールドへのアクセスを制限するには、データを保存しているログバケットに対してフィールド レベルのアクセス制御を構成します。たとえば、_Default ログバケットの場合、LogEntry データ構造の jsonPayload に制限を適用してから、管理者にそのフィールドへのアクセス権を付与できます。詳細については、フィールド レベルのアクセス制御を構成するをご覧ください。
ログ分析を使用するようにアップグレードされたログバケットのフィールドは制限できません。同様に、制限付きフィールドを含むログバケットは、ログ分析を使用するようにアップグレードできません。
事前定義ロール
IAM には、特定の Google Cloud リソースに対するきめ細かいアクセス権を付与し、他のリソースへの望ましくないアクセスを防ぐ事前定義ロールが用意されています。 Google Cloud はこれらのロールを作成、維持し、必要に応じて自動的に権限を更新します(Logging に新機能が追加された場合など)。
次の表に、Logging の事前定義ロールの一覧を表示します。ロールごとに、テーブルには、ロールのタイトル、説明、含まれている権限、ロールに付与できる最低レベルのリソースタイプが表示されます。事前定義ロールは、 Google Cloud プロジェクト レベルで付与されます。また、ほとんどの場合、リソース階層の上位にある任意のタイプにも付与されます。ログ表示アクセス者のロールをバケットのログビューに制限するには、IAM Conditions のリソース属性を使用します。
ロールに含まれる個々の権限のすべてのリストを取得するには、ロール メタデータの取得をご覧ください。
| Role | Permissions |
|---|---|
Logging Admin( Provides all permissions necessary to use all features of Cloud Logging. Lowest-level resources where you can grant this role:
|
|
Logs Bucket Writer( Ability to write logs to a log bucket. Lowest-level resources where you can grant this role:
|
|
Logs Configuration Writer( 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:
|
|
Log Field Accessor( Ability to read restricted fields in a log bucket. Lowest-level resources where you can grant this role:
|
|
Log Link Accessor( Ability to see links for a bucket. |
|
Logs Writer( Provides the permissions to write log entries. Lowest-level resources where you can grant this role:
|
|
Private Logs Viewer( 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:
|
|
Cloud Logging Service Agent( Grants a Cloud Logging Service Account the ability to create and link datasets. |
|
SQL Alert Writer Beta( Ability to write SQL Alerts. |
|
Logs View Accessor( Ability to read logs in a view. Lowest-level resources where you can grant this role:
|
|
Logs Viewer( Provides access to view logs. Lowest-level resources where you can grant this role:
|
|
以降のセクションでは、プリンシパルのユースケースに適用されるロールの決定に役立つ追加情報を提供します。
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 条件を関連付けて、対象を特定ログビューに制限します。
ログビューの作成とアクセス権の付与の詳細については、ログバケットのログビューを構成するをご覧ください。
- 特定のログバケット内の制限付き
LogEntryフィールド(ある場合)へのアクセス権をユーザーに付与するには、ログフィールド アクセサー(roles/logging.fieldAccessor)ロールを付与します。詳細については、フィールド レベルのアクセスを構成するをご覧ください。
ユーザーが Logging API を使用してログを書き込めるようにするには、ログ書き込み(
roles/logging.logWriter)のロールを付与します。このロールでは、閲覧権限は付与されません。シンクのサービス アカウントが別の Google Cloud プロジェクトのバケットにログを転送できるようにするには、サービス アカウントにログバケット書き込み(
roles/logging.bucketWriter)のロールを付与します。サービス アカウントに権限を付与する手順については、宛先の権限を設定するをご覧ください。
プロジェクト レベルのロール
ほとんどの Google Cloud サービスへの閲覧権限を付与するには、閲覧者(
roles/viewer)のロールを付与します。このロールには、ログ閲覧者(
roles/logging.viewer)ロールによって付与されたすべての権限が含まれています。ほとんどの Google Cloud サービスへの編集者アクセス権を付与するには、編集者(
roles/editor)のロールを付与します。このロールには、ログ閲覧者(
roles/logging.viewer)のロールによって付与されたすべての権限と、ログエントリの書き込み、ログの削除、ログベース指標の作成を行う権限が含まれています。ただし、このロールを使用して、ユーザーがシンクの作成、_Defaultバケット内のデータアクセス監査ログの読み取り、ユーザー定義ログバケット内のログの読み取りを行うことはできません。ほとんどの Google Cloud サービスに対する完全アクセス権を付与するには、オーナー(
roles/owner)のロールを付与します。
ロールの付与
プリンシパルにロールを付与する方法については、アクセス権の付与、変更、取り消しをご覧ください。
1 人のユーザーに複数のロールを付与できます。ロールに含まれる権限のリストを取得するには、ロール メタデータの取得をご覧ください。
Google Cloud リソースにアクセスしようとしたときに必要な権限が不足している場合は、リソースのオーナーとして登録されているプリンシパルにお問い合わせください。
カスタムロール
Logging の権限を含むカスタムロールを作成するには、次の操作を行います。
Logging API の権限を付与するロールの場合は、API 権限から権限を選択し、カスタムロールを作成するの説明に従います。
ログ エクスプローラを使用する権限を付与するロールの場合は、コンソール権限の権限グループから選択し、カスタムロールを作成するの説明に従います。
gcloud loggingを使用する権限を付与するロールについては、このページのコマンドラインの権限で確認してから、カスタムロールの作成の説明に従います。
カスタムロールの詳細については、IAM カスタムロールについてをご覧ください。
Cloud Logging の権限
次の表に、Cloud Logging の特定の機能に必要な権限の一部を示します。この表は、ログ エクスプローラなどのページを使用する際に必要な権限の特定に役立ちます。
表の a.b.{x,y} は a.b.x と a.b.y を意味します。
| コンソール アクティビティ | 必要な権限 |
|---|---|
| 最小限の読み取り専用アクセス | logging.logEntries.list |
| データアクセス監査ログを表示する | logging.privateLogEntries.list |
| ログベースの指標を表示する | logging.logMetrics.{list, get} |
| シンクを表示する | 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.sinks.{list, create, get, update, delete}
シンクを作成するときに、宛先にログエントリを書き込むことができる IAM ロールもサービス アカウントに付与する必要があります。詳細については、宛先の権限を設定するをご覧ください。 ログエントリがサポートされている宛先に転送された後、ログエントリへのアクセスは、宛先の IAM 権限とロールによって全面的に制御されます。 |
| ログベースのアラートを作成する | ログベースのアラート ポリシーの作成と使用に必要なロールをご覧ください。 |
| ログベースの指標を作成する | logging.logMetrics.{list, create, get, update, delete}
ログベースの指標の作成と使用に必要な他の IAM ロールについては、ログベースの指標の作成と使用に必要なロールをご覧ください。 |
| 非公開クエリを保存して使用する | logging.queries.usePrivatelogging.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} |
| 分析ビューを作成して管理する | observability.analyticsViews.{create, delete, get, list, update} |
| リンクされたデータセットを作成して管理する | logging.links.{create, delete, get, list}
リンクされたデータセットをクエリするには、追加の IAM ロールが必要になる場合があります。たとえば、これらの権限では BigQuery インターフェースへのアクセス権は付与されません。詳しくは、BigQuery: IAM によるアクセス制御をご覧ください。 |
コマンドラインに対する権限
gcloud logging コマンドは、IAM 権限によって制御されます。
gcloud logging コマンドのいずれかを使用するには、serviceusage.services.use 権限が必要です。
また、プリンシパルには、ログのリソースとユースケースに対応する IAM のロールも必要です。詳細については、コマンドライン インターフェースの権限をご覧ください。
ログベースの指標の作成と使用に必要なロール
プリンシパルがログベースの指標にアクセスするために必要な一般的なロールと権限の概要は次のとおりです。
ログ構成書き込み(
roles/logging.configWriter)ロールを使用すると、プリンシパルはログベースの指標をリスト表示、作成、取得、更新、削除できます。ログビューア(
roles/logging.viewer)ロールには、既存の指標を表示する権限が含まれています。特にプリンシパルには、既存の指標を表示するために、logging.logMetrics.get権限とlogging.logMetrics.list権限が必要です。モニタリング閲覧者(
roles/monitoring.viewer)ロールには、時系列データを読み取る権限が含まれています。特にプリンシパルには、時系列データを読み取るために、monitoring.timeSeries.list権限が必要です。ロギング管理者(
roles/logging.admin)、プロジェクト編集者(roles/editor)、プロジェクト オーナー(roles/owner)のロールには、ログベースの指標を作成する権限が含まれています。特にプリンシパルには、ログベースの指標を作成するために、logging.logMetrics.create権限が必要です。
ログベースのアラート ポリシーの作成と使用に必要なロール
ログベースのアラート ポリシーを作成して管理するには、プリンシパルに次の Logging と Monitoring のロールと権限が必要です。
-
Monitoring でログベースのアラート ポリシーを作成し、関連する Logging の通知ルールを作成するために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
Monitoring AlertPolicy 編集者(
roles/monitoring.alertPolicyEditor) -
ログ構成書き込み(
roles/logging.configWriter)
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
これらの事前定義ロールには、Monitoring でログベースのアラート ポリシーを作成し、関連する Logging の通知ルールを作成するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
Monitoring でログベースのアラート ポリシーを作成し、関連する Logging の通知ルールを作成するには、次の権限が必要です。
-
monitoring.alertPolicies.create -
logging.notificationRules.create
-
Monitoring AlertPolicy 編集者(
Google Cloud CLI でアラート ポリシーを作成する場合は、次のロールまたは権限も必要です。
-
Google Cloud CLI でアラート ポリシーを作成するために必要な権限を取得するには、プロジェクトに対する Service Usage ユーザー(
roles/serviceusage.serviceUsageConsumer)の IAM ロールを付与するように管理者へ依頼してください。ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。この事前定義ロールには、Google Cloud CLI を使用してアラート ポリシーを作成するために必要な
serviceusage.services.use権限が含まれています。
Google Cloud プロジェクトにすでに通知チャンネルがある場合は、追加のロールや権限なしで既存のチャンネルを使用するようにアラート ポリシーを構成できます。ただし、ログベースのアラート ポリシーの通知チャンネルを作成する必要がある場合は、次のロールまたは権限が必要です。
-
ログベースのアラート ポリシーの通知チャンネルを作成するために必要な権限を取得するには、プロジェクトに対する Monitoring NotificationChannel 編集者(
roles/monitoring.notificationChannelEditor)の IAM ロールを付与するように管理者へ依頼してください。この事前定義ロールには、ログベースのアラート ポリシーの通知チャンネルを作成するために必要な
monitoring.notificationChannels.create権限が含まれています。
SQL ベースのアラート ポリシーに対する権限
SQL ベースのアラート ポリシーは、ログエントリのグループのデータに対して実行された SQL クエリの結果を評価します。SQL ベースのアラート ポリシーの作成と管理に必要なロールについては、アラート ポリシーを使用して SQL クエリの結果をモニタリングするの始める前にをご覧ください。
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 への完全アクセス権。 |
この従来の方法を使用してサービス アカウントのアクセスレベルを設定する方法については、アクセス スコープをご覧ください。