使用 IAM 控管存取權

Cloud Logging 使用 Identity and Access Management (IAM) 角色和權限,讓您控管哪些人可以查看、寫入及管理 Logging 資源。您的 IAM 角色會決定您是否可以建立記錄檔接收器或記錄檔 bucket、讀取儲存在記錄檔 bucket 中的記錄檔資料,或存取「Logs Explorer」(記錄檔探索工具) 等頁面。發出 Cloud Logging API 或 Google Cloud CLI 指令時,您的 IAM 角色也會決定您是否有權執行指令。

總覽

您的 IAM 角色會決定您可以在 Logging 中執行的動作。「角色」是一組權限。將角色授予主體時,會一併授予該角色具備的所有權限。您可以將多個角色授予同一個主體。

IAM 角色會授予資源,例如 Google Cloud 專案、資料夾、bucket 或組織。舉例來說,您可以將特定 Google Cloud 專案的記錄檢視者角色 (roles/logging.viewer) 授予主體。

本頁面的「預先定義的角色」和「Logging 角色」部分,提供 Logging 角色和權限的完整資訊。本頁面的其他部分則提供特定用途的角色或權限資訊。

本節其餘部分將摘要說明如何授予主體記錄檔 bucket 的存取權,或僅授予記錄檔 bucket 中部分記錄項目的存取權。此外,也會說明如何限制部分 LogEntry 欄位的存取權。

授予記錄檔 bucket 的存取權

「記錄檢視者」角色 (roles/logging.viewer) 可讓主體存取儲存在 _Required 和 _Default 記錄檔 bucket 中的所有記錄資料,但資料存取記錄除外。如果主體需要存取資料存取記錄,請授予私人記錄檢視者角色 (roles/logging.privateLogViewer)。

如果是自訂記錄檔 bucket,您可以授予 _AllLogs 檢視畫面或自訂記錄檔檢視畫面的存取權。Logging 會自動建立 _AllLogs 檢視畫面,其中包含記錄檔 bucket 中的所有記錄項目。如要授予記錄檢視表的存取權,請在附加至記錄檢視表或專案的 IAM 政策中,新增 IAM 繫結。詳情請參閱「控管記錄檔檢視畫面的存取權」。

Logging 也支援記錄檔 bucket 標記,可協助您瞭解費用。您也可以使用標記,防止使用者刪除記錄檔 bucket。詳情請參閱「使用標記管理記錄檔 bucket 的存取權」。

授予記錄檔值區中部分記錄項目的存取權

如要授予主體存取權,僅允許存取儲存在記錄檔 bucket 中的部分記錄項目,請建立記錄檔檢視,然後授予主體存取記錄檔檢視的權限。舉例來說,您可以在 _Default 記錄檔 bucket 上建立記錄檔檢視,其中僅包含資源類型為 Compute Engine 執行個體的記錄項目。如要進一步瞭解如何建立記錄檢視,以及授予檢視存取權的不同策略,請參閱「設定記錄檔值區的記錄檢視」。

限制特定 LogEntry 欄位的存取權

如要限制 LogEntry 資料結構中特定欄位的存取權,請在儲存資料的記錄檔 bucket 上設定欄位層級存取控管。舉例來說,您可以對 _Default 記錄檔 bucket 的 LogEntry 資料結構 jsonPayload 設定限制,然後授予管理員該欄位的存取權。詳情請參閱「設定欄位層級存取控管」。

如果記錄檔 bucket 已升級為使用 Observability Analytics,則無法限制欄位。同樣地,如果記錄檔 bucket 含有受限制的欄位,則無法升級為使用 Observability Analytics。

預先定義的角色

IAM 提供預先定義的角色,可授予特定 Google Cloud 資源的精細存取權,並防止他人擅自存取其他資源。 Google Cloud 會建立及維護這些角色,並視需要自動更新其權限,例如在 Logging 新增功能時。

下表列出 Logging 的預先定義角色。表格會顯示每個角色的職稱、說明、包含的權限,以及可授予角色的最低層級資源類型。您可以在 Google Cloud 專案層級授予預先定義的角色,或在大多數情況下,在資源階層中授予任何較高層級的角色。如要將記錄檢視存取者角色限制為 bucket 上的記錄檢視,請使用 IAM 條件的資源屬性。

如要取得角色包含的所有個別權限清單,請參閱「取得角色中繼資料」。

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:

  • View

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.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:

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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.notificationRules.get

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.privateLogEntries.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.access

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(roles/logging.viewer)

Provides access to view logs.

Lowest-level resources where you can grant this role:

  • View

logging.buckets.get

logging.buckets.list

logging.buckets.listEffectiveTags

logging.buckets.listTagBindings

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.notificationRules.get

logging.notificationRules.list

logging.operations.get

logging.operations.list

logging.queries.getShared

logging.queries.listShared

logging.queries.usePrivate

logging.settings.get

logging.sinks.get

logging.sinks.list

logging.usage.get

logging.views.get

logging.views.getIamPolicy

logging.views.list

observability.scopes.get

resourcemanager.projects.get

(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:

  • View

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.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:

  • View

logging.logEntries.download

logging.views.access

logging.views.listLogs

logging.views.listResourceKeys

logging.views.listResourceValues

Service agent roles

Service agent roles should only be granted to service agents.

Role Permissions

(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

以下各節提供額外資訊,協助您決定哪些角色適用於主體的使用案例。

Logging 角色

  • 如要允許使用者在 Logging 中執行所有動作,請授予 Logging 管理員 (roles/logging.admin) 角色。

  • 如要允許使用者建立及修改記錄設定,請授予記錄設定寫入者 (roles/logging.configWriter) 角色。這個角色可建立或修改下列任一項目:

    這個角色不足以建立記錄指標或記錄警告政策。如要瞭解這些工作所需的角色,請參閱「記錄指標的權限」和「記錄警告政策的權限」。

  • 如要允許使用者讀取 _Required 和 _Default bucket 中的記錄,或使用「Logs Explorer」和「Observability Analytics」頁面,請授予下列其中一個角色:

    • 如要存取 _Required bucket 中的所有記錄,以及 _Default bucket 上的 _Default 檢視畫面,請授予記錄檢視者 (roles/logging.viewer) 角色。
    • 如要存取 _Required 和 _Default bucket 中的所有記錄 (包括資料存取記錄),請授予私人記錄檢視者 (roles/logging.privateLogViewer) 角色。
  • 如要讓使用者讀取專案中所有記錄檢視畫面的記錄,請在專案中授予 roles/logging.viewAccessor 的 IAM 角色。

  • 如要讓使用者只能讀取特定記錄檢視中的記錄,有兩種做法:

    • 為記錄檢視建立 IAM 政策,然後在該政策中新增 IAM 繫結,授予主體記錄檢視的存取權。

    • 在包含記錄檢視的專案中,將 roles/logging.viewAccessor 的 IAM 角色授予主體,但附加 IAM 條件,將授予權限限制在特定記錄檢視。

    如要瞭解如何建立記錄檢視及授予存取權,請參閱「設定記錄檔 bucket 的記錄檢視」。

  • 如要授予使用者特定記錄檔 bucket 中受限制 LogEntry 欄位 (如有) 的存取權,請授予記錄檔欄位存取者 (roles/logging.fieldAccessor) 角色。詳情請參閱「設定欄位層級存取權」。
  • 如要允許使用者透過 Logging API 寫入記錄,請授予記錄寫入者 (roles/logging.logWriter) 角色。這個角色不具備檢視權限。

  • 如要允許接收器的服務帳戶將記錄檔轉送至其他 Google Cloud 專案中的 bucket,請將記錄檔 bucket 寫入者 (roles/logging.bucketWriter) 角色授予服務帳戶。如需將權限授予服務帳戶的操作說明,請參閱「設定目的地權限」。

專案層級角色

  • 如要授予大多數 Google Cloud 服務的檢視權限,請授予檢視者 (roles/viewer) 角色。

    這個角色包含記錄檢視者 (roles/logging.viewer) 角色授予的所有權限。

  • 如要授予大多數 Google Cloud 服務的編輯者權限,請授予編輯者 (roles/editor) 角色。

    這個角色包含記錄檢視者 (roles/logging.viewer) 角色授予的所有權限,以及寫入記錄項目、刪除記錄和建立記錄指標的權限。不過,這個角色不允許使用者建立接收器、讀取 _Default bucket 中的資料存取稽核記錄,或讀取使用者定義記錄檔 bucket 中的記錄檔。

  • 如要授予大多數 Google Cloud 服務的完整存取權,請授予「擁有者」(roles/owner) 角色。

正在授予角色

如要瞭解如何將角色授予主體,請參閱「授予、變更及撤銷存取權」。

您可以將多個角色授予同一位使用者。如要取得角色包含的權限清單,請參閱「取得角色中繼資料」。

如果您嘗試存取 Google Cloud 資源,但缺少必要權限,請與資源的「擁有者」主體聯絡。

自訂角色

如要建立具有 Logging 權限的自訂角色,請執行下列動作:

  • 如要授予 Logging API 權限,請從「API permissions」(API 權限) 中選擇權限,然後按照操作說明建立自訂角色。

  • 如要授予使用 Logs Explorer 的權限,請從「控制台權限」中的權限群組中選擇,然後按照操作說明建立自訂角色。

  • 如要瞭解授予 gcloud logging 使用權限的角色,請參閱本頁的「指令列權限」一節,然後按照操作說明建立自訂角色。

如要進一步瞭解自訂角色,請參閱「瞭解 IAM 自訂角色」。

Cloud Logging 權限

下表列出 Cloud Logging 特定功能所需的部分權限。您可以透過這個表格,找出使用記錄檔探索工具等頁面所需的權限。

在表格中,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.logEntries.{list, download}

只要具備其中一項權限,即可下載記錄。您必須在專案層級授予具備記錄下載權限的角色。如果記錄檢視的 IAM 政策檔案授予包含這些權限的角色,您就無法下載記錄。

列出及查看記錄範圍 logging.logScopes.{get, list}
查看預設記錄範圍 observability.scopes.get
排除記錄檔 logging.exclusions.{list, create, get, update, delete}

建立自訂角色時,如要加入管理排除篩選器的權限,請將 logging.sinks.* 權限新增至角色,而非 logging.exclusions.* 權限。

建立及使用接收器 logging.sinks.{list, create, get, update, delete}

建立接收器時,您也必須授予服務帳戶 IAM 角色,讓服務帳戶將記錄項目寫入目的地。詳情請參閱「 設定目的地權限」。

記錄項目轉送至支援的目的地後,記錄項目的存取權完全由目的地的 IAM 權限和角色控管。

建立記錄式警告 請參閱「建立及使用記錄警告政策所需的角色」。
建立記錄指標 logging.logMetrics.{list, create, get, update, delete}

如要瞭解建立及使用記錄指標所需的其他 IAM 角色,請參閱「建立及使用記錄指標所需的角色」。

儲存及使用私人查詢 logging.queries.usePrivate
logging.queries.{listShared,getShared}
儲存及使用共用查詢 logging.queries.{share, getShared, updateShared, deleteShared, listShared}
建立及管理記錄範圍 logging.logScopes.{create, delete, get, list, update}
設定及管理預設記錄範圍 observability.scopes.{get, update}
建立及管理分析檢視表 observability.analyticsViews.{create, delete, get, list, update}

指令列權限

gcloud logging 指令由 IAM 權限控管。

如要使用任何 gcloud logging 指令,主體必須具備 serviceusage.services.use 權限。

主體也必須具備與記錄資源和用途相對應的 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 權限,才能建立記錄指標。

建立及使用記錄警告政策所需的角色

本節說明建立記錄警告政策、通知管道和通知規則所需的角色。通知管道會指定 Cloud Monitoring 通知您的方式。通知規則說明如何將傳入的記錄項目與警告政策進行比對。

必要的角色

如要取得建立記錄警告政策、通知管道和相關聯 Logging 通知規則所需的權限,請要求管理員授予您專案的下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這些預先定義的角色具備建立記錄警告政策、通知管道和相關 Logging 通知規則所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:

所需權限

您必須具備下列權限,才能建立記錄警告政策、通知管道,以及相關聯的 Logging 通知規則:

  • monitoring.alertPolicies.create
  • monitoring.notificationChannels.create
  • logging.notificationRules.create

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

Google Cloud CLI 使用者所需的其他角色

如要取得使用 Google Cloud CLI 建立警告政策所需的權限,請要求管理員授予您專案的服務使用情形消費者 (roles/serviceusage.serviceUsageConsumer) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

這個預先定義的角色具備 serviceusage.services.use 權限,可使用 Google Cloud CLI 建立警告政策。

您或許還可透過自訂角色或其他預先定義的角色取得這項權限。

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 的完整存取權。

如要瞭解如何使用這個舊版方法設定服務帳戶的存取層級,請參閱「存取權範圍」。