このドキュメントでは、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 の事前定義ロールを示しています。役割ごとに、役割のタイトル、説明、含まれている権限、役割を付与できる最低レベルのリソースタイプが表示されます。事前定義ロールは、Cloud プロジェクト レベル、またはほとんどの場合に Google Cloud 階層の上位にある任意のタイプで付与できます。ログバケット書き込みまたはログ表示アクセス者のロールをバケットレベルにより厳密にスコープするには、IAM Conditions のリソース属性を使用します。
ロールに含まれる各権限のリストを取得するには、ロール メタデータの取得をご覧ください。
ロール | 権限 |
---|---|
Logging 管理者
Cloud Logging のすべての機能を使用するのに必要なすべての権限を付与します。 このロールを付与できる最下位レベルのリソース:
|
|
ログバケット書き込み
ログバケットにログを書き込むことができます。 このロールを付与できる最下位レベルのリソース:
|
|
ログ構成書き込み
ログをエクスポートするためのログベースの指標とシンクの構成に対する読み取りおよび書き込み権限を付与します。 このロールを付与できる最下位レベルのリソース:
|
|
ログ フィールド アクセサー
ログバケット内の制限付きフィールドを読み取ることができます。 このロールを付与できる最下位レベルのリソース:
|
|
ログ書き込み
ログエントリを書き込むための権限を付与します。 このロールを付与できる最下位レベルのリソース:
|
|
プライベート ログ閲覧者
ログ閲覧者のロールの権限、およびプライベート ログ内のエントリに対する読み取り専用アクセス権を付与します。 このロールを付与できる最下位レベルのリソース:
|
|
ログ表示アクセサー
ビュー内のログを読み取ることができます。 このロールを付与できる最下位レベルのリソース:
|
|
ログビューア
ログの閲覧権限を付与します。 このロールを付与できる最下位レベルのリソース:
|
|
考慮事項
プリンシパルのユースケースに適用する権限とロールを決定する際は、次の点を考慮してください。
roles/logging.admin
(Logging 管理者)は、Logging に関連するすべての権限を付与します。roles/logging.viewer
(ログビューア)は、プリンシパルに Logging のほとんどの機能に対する読み取り専用権限を付与します。ログ閲覧者の役割は、
_Required
バケットの_AllLogs
ログビューと_Default
バケットの_Default
ログビューの両方に対するプリンシパルへのアクセスを許可します。ログ閲覧者のロールでは、プリンシパルが
_Default
バケットにあるデータアクセス監査ログを読み取ることはできません。このデータアクセス監査ログを読み取るには、プリンシパルに適切なログビューに対するプライベート ログ閲覧者のロール(roles/logging.privateLogViewer
)が必要です。ログ閲覧者のロールでは、プリンシパルがユーザー定義バケットに保存されているログを読み取ることはできません。ユーザー定義バケットでログを読み取るには、プリンシパルに適切なログビューに対するログ表示アクセス者のロール(
roles/logging.viewAccessor
)が必要です。roles/logging.privateLogViewer
(プライベート ログ閲覧者)には、roles/logging.viewer
に含まれるすべての権限に加えて、_Default
バケット内のデータアクセス監査ログの読み取り権限があります。プライベート ログ閲覧者のロールでは、データアクセス監査ログがユーザー定義バケットに保存されている場合、プリンシパルがそれを読み取ることができません。ユーザー定義バケットでこれらのログを読み取るには、プリンシパルに適切なログビューに対するログ表示アクセス者のロール(
roles/logging.viewAccessor
)が必要です。roles/logging.viewAccessor
(ログ表示アクセス者)は、ログビューを使用してログ、リソースキー、値の読み取りとログのダウンロードを許可します。このロールを特定のバケット内のビューに制限するには、IAM 条件を使用します。例については、バケットからのログの読み取りをご覧ください。roles/logging.fieldAccessor
(ログフィールド アクセス者)は、特定のバケット内に制限付きのLogEntry
フィールドが存在する場合は、プリンシパルにアクセス権を付与します。詳細については、フィールド レベルのアクセス制御をご覧ください。roles/logging.logWriter
(ログ書き込み)は、Logging API にログを書き込むために必要な最小限の権限をプリンシパルに付与します。このロールでは、閲覧権限は付与されません。roles/logging.bucketWriter
(ログバケット書き込み)は、シンクのサービス アカウントに、特定のバケットにログをルーティングするために必要な最小限の権限を付与します。シンクのサービス アカウントに権限を付与する手順については、エクスポート先の権限を設定するをご覧ください。roles/logging.configWriter
(ログ構成書き込み)は、シンク、バケット、ビュー、ログベースの指標、除外などのロギング構成を作成または変更する権限を付与します。これらのアクションにログ エクスプローラを使用するには、roles/logging.viewer
を追加します。
roles/viewer
(プロジェクト閲覧者)はroles/logging.viewer
と同じです。このロールは、プリンシパルに、_Default
バケット内のデータアクセス監査ログの表示を除き、すべての Logging 機能に対する読み取り専用権限を付与します。roles/editor
(プロジェクト編集者)には、roles/logging.viewer
の権限、ログエントリの書き込み権限、ログの削除権限、ログベースの指標の作成権限が含まれます。このロールでは、プリンシパルが_Default
バケット内のシンクの作成や、データアクセス監査ログの読み取りを行うことはできません。roles/owner
(プロジェクト オーナー)によって、プリンシパルに、データアクセス監査ログの読み取りを含む Logging への完全アクセス権が付与されます。
ロールを付与しています
プリンシパルにロールを付与する方法については、アクセス権の付与、変更、取り消しをご覧ください。
1 人のユーザーに複数のロールを付与できます。ロールに含まれる権限のリストを取得するには、ロール メタデータの取得をご覧ください。
Google Cloud リソースにアクセスしようとしたときに必要な権限が不足している場合は、リソースのオーナーとして登録されているプリンシパルにお問い合わせください。
カスタムロール
Logging の権限を含むカスタムの役割を作成するには、次の手順に従います。
Logging API の権限を付与するロールの場合は、API 権限から権限を選択し、カスタムロールを作成するの手順を実行します。
ログ エクスプローラを使用する権限を付与するロールの場合は、コンソール権限の権限グループから選択し、カスタムロールを作成するの手順を実行します。
gcloud logging
を使用する権限を付与するロールについては、このページのコマンドラインの権限セクションで確認してから、カスタムロールの作成の手順を実行してください。
カスタム役割の詳細については、IAM のカスタムの役割についてをご覧ください。
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 |
プロジェクト |
コンソール権限
次の表に、ログ エクスプローラの使用に必要な権限を示します。
表の 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 のロールも必要です。詳細については、コマンドライン インターフェースの権限をご覧ください。
ログ ルーティングの権限
シンクを作成して管理し、ログをルーティングする際のアクセス制御の設定方法については、シンクの構成: エクスポート先の権限を設定するをご覧ください。
除外フィルタの管理は、シンクの構成と統合されています。除外フィルタの設定など、シンクの管理に関連するすべての権限は、logging.sinks.*
権限に含まれます。除外フィルタを管理する権限を含むカスタム役割を作成する場合、logging.exclusions.*
権限を付与する代わりに、logging.sinks.*
権限をロールに追加します。
ログエントリがサポートされている宛先にルーティングされた後、ログエントリ宛先の Cloud Storage、BigQuery、Pub/Sub に対する IAM 権限とロールによって、ログのコピーへのアクセスは全面的に制御されます。
ログベースの指標の権限
プリンシパルがログベースの指標にアクセスするために必要な一般的なロールと権限の概要は次のとおりです。
ロギング / ログ構成書き込み(
roles/logging.configWriter
)は、プリンシパルがログベースの指標をリスト表示、作成、取得、更新、削除できるようにします。ロギング / ログのビューア(
roles/logging.viewer
)は、プリンシパルが既存の指標を表示できるようにします。また、カスタム役割へのlogging.logMetrics.get
とlogging.logMetrics.list
権限を付与できます。モニタリング ビューア(
roles/monitoring.viewer
)は、プリンシパルが TimeSeries データを読み取ることができるようにします。また、カスタム役割へのmonitoring.timeSeries.list
権限を付与できます。Logging 管理者(
roles/logging.admin
)、プロジェクト編集者(roles/editor
)、プロジェクト オーナー(roles/owner
)を使用して、プリンシパルがログベースの指標(logging.logMetrics.create
)を作成できます。
ログベースのアラートの権限
プリンシパルがログベースのアラートを作成および管理を行うために必要な、一般的なロールと権限の概要を次に示します。
Logging 管理者(
roles/logging.admin
)。特にプリンシパルには、ログの読み取りと Logging 通知ルールの管理を行うために、次の権限が必要です。logging.logs.list
logging.logEntries.list
logging.notificationRules.create
logging.notificationRules.update
これらの権限は、Logging 管理者のロールに含まれます。この役割を付与しない場合は、次の手順に従います。
- ログ構成書き込み(
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 編集者と Monitoring NotificationChannel 編集者のロールに権限を含めます。
- カスタムロールの詳細については、カスタムロールの作成と管理をご覧ください。
- Monitoring のロールと権限の詳細については、アクセス制御をご覧ください。
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 への完全アクセス権。 |
この従来の方法を使用してサービス アカウントのアクセス レベルを設定する方法については、サービス アカウントの権限をご覧ください。