このドキュメントでは、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.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.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 のロールも必要です。詳細については、コマンドライン インターフェースの権限をご覧ください。
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 への完全アクセス権。 |
この従来の方法を使用してサービス アカウントのアクセスレベルを設定する方法については、アクセス スコープをご覧ください。