このドキュメントでは、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 |
---|---|
Logging Admin( Provides all permissions necessary to use all features of Cloud Logging. Lowest-level resources where you can grant this role:
|
logging.buckets.copyLogEntries logging.buckets.create logging.buckets.delete logging.buckets.get logging.buckets.list logging.buckets.undelete logging.buckets.update logging.exclusions.*
logging.fields.access logging.links.*
logging.locations.*
logging.logEntries.*
logging.logMetrics.*
logging.logServiceIndexes.list logging.logServices.list logging.logs.*
logging.notificationRules.*
logging.operations.*
logging.privateLogEntries.list logging.queries.*
logging.settings.*
logging.sinks.*
logging.usage.get logging.views.*
resourcemanager.projects.get resourcemanager.projects.list |
Logs Bucket Writer( Ability to write logs to a log bucket. Lowest-level resources where you can grant this role:
|
logging.buckets.write |
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:
|
logging.buckets.create logging.buckets.delete logging.buckets.get logging.buckets.list logging.buckets.undelete logging.buckets.update logging.exclusions.*
logging.links.*
logging.locations.*
logging.logMetrics.*
logging.logServiceIndexes.list logging.logServices.list logging.logs.list logging.notificationRules.*
logging.operations.*
logging.settings.*
logging.sinks.*
logging.views.create logging.views.delete logging.views.get logging.views.list logging.views.update resourcemanager.projects.get resourcemanager.projects.list |
Log Field Accessor( Ability to read restricted fields in a log bucket. Lowest-level resources where you can grant this role:
|
logging.fields.access |
Log Link Accessor( Ability to see links for a bucket. |
logging.links.get logging.links.list |
Logs Writer( Provides the permissions to write log entries. Lowest-level resources where you can grant this role:
|
logging.logEntries.create logging.logEntries.route |
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:
|
logging.buckets.get logging.buckets.list logging.exclusions.get logging.exclusions.list logging.links.get logging.links.list logging.locations.*
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 |
Logs View Accessor( Ability to read logs in a view. Lowest-level resources where you can grant this role:
|
logging.logEntries.download logging.views.access logging.views.listLogs logging.views.listResourceKeys logging. |
Logs Viewer( Provides access to view logs. Lowest-level resources where you can grant this role:
|
logging.buckets.get logging.buckets.list logging.exclusions.get logging.exclusions.list logging.links.get logging.links.list logging.locations.*
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 の権限を含むカスタムの役割を作成するには、次の手順に従います。
Logging API の権限を付与するロールの場合は、API 権限から権限を選択し、カスタムロールを作成するの手順を実行します。
ログ エクスプローラを使用する権限を付与するロールの場合は、コンソール権限の権限グループから選択し、カスタムロールを作成するの手順を実行します。
gcloud logging
を使用する権限を付与するロールについては、このページのコマンドラインの権限セクションで確認してから、カスタムロールの作成の手順を実行してください。
カスタム役割の詳細については、IAM のカスタムの役割についてをご覧ください。
Logging API の権限
Logging API メソッドでは、特定の IAM の権限が必要になります。次の表に、API メソッドで必要な権限を示します。
Google Cloud 組織、請求先アカウント、フォルダに保存されているログが必要な場合、これらのリソースには logs
と sinks
のための独自のメソッドがあることにご注意ください。表は、すべてのメソッドを繰り返すのではなく、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 |
projects |
Google Cloud コンソールの権限
次の表に、ログ エクスプローラの使用に必要な権限を示します。
表の a.b.{x,y}
は a.b.x
と a.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 データセットの権限
リンクされた BigQuery データセットを管理するための事前定義ロールと対応する権限は次のとおりです。
Logging 管理者(
roles/logging.admin
)とログ構成書き込み(roles/logging.configWriter
)のロールには、次の権限が含まれています。logging.links.list
logging.links.create
logging.links.get
logging.links.delete
ログリンク アクセス者(
roles/logging.linkViewer
)、プライベート ログ閲覧者(roles/logging.privateLogViewer
)、ログビューア(roles/logging.viewer
)のロールには次の権限が含まれています。logging.links.list
logging.links.get
前述のロールと権限は、ログ分析ページなどの 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 管理者(
roles/logging.admin
)には、ログの読み取りと Logging 通知ルールの管理に必要な権限が含まれています。logging.logs.list
logging.logEntries.list
logging.notificationRules.create
logging.notificationRules.update
このロールを付与しない場合は、次のようにします。
- ログ構成書き込み(
roles/logging.configWriter
)とログ閲覧者(roles/logging.viewer
)のロールを付与します。 - カスタムロールを作成して、これらの権限を追加します。詳しくは、カスタムロールの作成と管理をご覧ください。
Monitoring AlertPolicy 編集者(
roles/monitoring.alertPolicyEditor
)と Monitoring NotificationChannel 編集者(roles/monitoring.notificationChannelEditor
)のロールには、ログベースのアラートで使用される、アラート ポリシーと通知チャネルの管理に必要な権限が一緒に含まれています。monitoring.alertPolicies.{create, delete, get, list, update}
monitoring.notificationChannelDescriptors.{get, list}
monitoring.notificationChannels.{create, delete, get, list, sendVerificationCode, update, verify}
モニタリング編集者(
roles/monitoring.editor
)とモニタリング管理者(roles/monitoring.admin
)のロールには、アラート ポリシーと通知チャネルの管理に必要なすべての権限もそれぞれ含まれています。デフォルトのモニタリング ロールを付与しない場合、カスタムロールを作成して、Monitoring AlertPolicy 編集者(
roles/monitoring.alertPolicyEditor
)と Monitoring NotificationChannel 編集者(roles/monitoring.notificationChannelEditor
)のロールに権限を含めます。- カスタムロールの詳細については、カスタムロールの作成と管理をご覧ください。
- Monitoring のロールと権限の詳細については、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 への完全アクセス権。 |
この従来の方法を使用してサービス アカウントのアクセス レベルを設定する方法については、サービス アカウントの権限をご覧ください。