啟用資料存取稽核記錄

資料存取稽核記錄可記錄讀取資源設定或中繼資料的 API 呼叫,以及建立、修改或讀取使用者所提供資源資料的使用者驅動 API 呼叫。大多數服務預設會停用這些記錄,但您可以使用 Cloud de Confiance 控制台或 API,明確啟用、設定或停用 Cloud de Confiance 專案、帳單帳戶、資料夾和組織的記錄。

事前準備

在設定資料存取稽核記錄之前,請先瞭解下列資訊:

  • 除了部分 BigQuery 服務外,所有服務的資料存取稽核記錄預設為停用。如要為預設停用資料存取稽核記錄的服務寫入這類記錄,您必須明確在 Cloud de Confiance 控制台中啟用,或使用 API 啟用。

  • 除非您將資料存取稽核記錄轉送至其他位置,否則這類記錄會儲存在 _Default bucket 中。詳情請參閱「儲存及轉送稽核記錄」。

  • 資料存取稽核記錄可協助 Google 支援團隊排解帳戶問題。因此,建議您盡可能啟用資料存取稽核記錄。

  • 如要取得存取 _Required 和 _Default bucket 中所有記錄 (包括資料存取記錄) 所需的權限,請要求管理員授予您專案的私人記錄檢視者 (roles/logging.privateLogViewer) IAM 角色。

    「私人記錄檢視器」角色 (roles/logging.privateLogViewer) 包含記錄檢視器角色 (roles/logging.viewer) 的權限,以及讀取 _Default bucket 中資料存取稽核記錄所需的權限。

    編輯者角色 (roles/editor) 不含查看資料存取記錄所需的權限。

    如要進一步瞭解適用於稽核記錄資料的 IAM 權限與角色,請參閱「使用 IAM 控管存取」。

設定總覽

您可以設定如何為Cloud de Confiance 資源和服務啟用資料存取稽核記錄:

  • 組織:您可以在組織中啟用及設定資料存取稽核記錄,這項設定會套用至組織中所有現有和新的Cloud de Confiance 專案和資料夾。

  • 資料夾:您可以在資料夾中啟用及設定資料存取稽核記錄,這項設定會套用至資料夾中所有現有和新的 Cloud de Confiance 專案。如果資料存取稽核記錄是在專案的上層組織啟用,則無法停用。

  • 專案:您可以為個別Cloud de Confiance 專案設定資料存取稽核記錄。如果資料存取稽核記錄是在上層組織或資料夾中啟用,則無法停用。

  • 帳單帳戶:如要設定帳單帳戶的資料存取稽核記錄,請使用 Google Cloud CLI。如要進一步瞭解如何透過 gcloud CLI 使用資料存取稽核記錄和帳單帳戶,請參閱 gcloud beta billing accounts set-iam-policy 說明文件。

  • 預設設定:您可以在組織、資料夾或 Cloud de Confiance 專案中指定預設資料存取稽核記錄設定,套用至日後開始產生資料存取稽核記錄的 Cloud de Confiance 服務。如需操作說明,請參閱「設定預設設定」。

  • 權限類型:您可以指定 Cloud de Confiance API,只檢查特定類型的權限是否會產生稽核記錄。詳情請參閱本頁的「權限類型」一節。

  • 豁免主體:您可以豁免特定主體,不記錄其資料存取行為。舉例來說,您可以豁免內部測試帳戶,不記錄其 Cloud Monitoring 作業。如需有效主體 (包括使用者和群組) 的清單,請參閱 Binding 類型參考資料。

您可以透過 Cloud de Confiance 控制台的 IAM「Audit Logs」(稽核記錄) 頁面或使用 API,設定資料存取稽核記錄。以下各節將說明這些方法。

權限類型

API 方法會檢查 IAM 權限。每項 IAM 權限都有權限類型,由 type 屬性定義。權限類型分為資料存取權限類型或管理員活動權限類型:

  • 資料存取權限類型:

    • ADMIN_READ:這類 IAM 權限會針對讀取中繼資料或設定資訊的Cloud de Confiance API 方法進行檢查。一般來說,ADMIN_READ 稽核記錄預設為停用,必須啟用。

    • DATA_READ:系統會檢查這類 IAM 權限,確認Cloud de Confiance API 方法是否讀取使用者提供的資料。一般來說,DATA_READ 稽核記錄預設為停用,必須啟用。

    • DATA_WRITE:系統會檢查這類 IAM 權限,確認Cloud de Confiance API 方法是否會寫入使用者提供的資料。一般來說,DATA_WRITE 稽核記錄預設為停用,必須啟用。

  • 管理員活動權限類型:

    • ADMIN_WRITE:系統會檢查這類 IAM 權限,確認Cloud de Confiance API 方法是否會寫入中繼資料或設定資訊。與這種類型相關聯的稽核記錄 (管理員活動稽核記錄) 預設為啟用,且無法停用。

您可以使用Cloud de Confiance 控制台或叫用 API,啟用或停用服務的權限類型。

大多數 Cloud de Confiance API 只會檢查呼叫端是否具備單一 IAM 權限。如果呼叫 API 的服務已啟用與該權限相關聯的權限類型,API 就會產生稽核記錄。

以下各節將概略說明 Cloud de ConfianceAPI 方法檢查 IAM 權限的其他方式。如要瞭解服務專屬資訊,例如哪些方法會檢查哪些權限類型,請參閱服務的稽核記錄說明文件。

檢查資料存取權限類型的 IAM 權限

部分 Cloud de Confiance API 方法會檢查呼叫端是否具備多項 IAM 權限,且這些權限具有不同的資料存取權限類型。在專案中啟用其中一種資料存取權限類型時,系統會寫入稽核記錄。

舉例來說,API 方法可能會檢查發出 API 要求的主體是否具備 example.resource.get (DATA_READ) 和 example.resource.write (DATA_WRITE) 權限。專案只需要為服務啟用 DATA_WRITE 或 DATA_READ,即可在發出呼叫時產生稽核記錄。

已勾選「管理員活動」和「資料存取」IAM 權限類型

部分 Cloud de Confiance API 方法會檢查是否具備 ADMIN_WRITE 權限類型的 IAM 權限,以及一或多項資料存取權限類型的權限。

這類 API 呼叫會產生管理員活動稽核記錄,預設為啟用且無法停用。

API 方法會檢查服務未擁有的 IAM 權限

部分 Cloud de Confiance 服務的 API 方法,只有在為其他服務啟用特定權限類型時,才會產生稽核記錄。

舉例來說,Cloud Billing 有一個 API 方法,會檢查 Resource Manager 擁有的 ADMIN_READ 權限類型。必須為服務 cloudresourcemanager.googleapis.com 啟用 ADMIN_READ,才能啟用與 Cloud Billing API 相關聯的稽核記錄。

相同 API 方法檢查不同 IAM 權限

對於某些 Cloud de Confiance API,呼叫方法的方式會決定專案必須啟用哪些 IAM 權限類型,才能產生稽核記錄。

舉例來說,Spanner 有一個 API 方法,有時會檢查 DATA_WRITE 類型的 IAM 權限,有時則會檢查 DATA_READ 類型的 IAM 權限,具體取決於方法的呼叫方式。在這種情況下,如果對專案啟用 Spanner 的 DATA_WRITE,API 呼叫只會在檢查 DATA_WRITE 類型的 IAM 權限時,啟用與 API 相關聯的稽核記錄。

服務專屬設定

如果同時有 Cloud de Confiance 服務層級 (allServices) 設定和特定 Cloud de Confiance 服務設定,則該服務的最終設定會是這兩項設定的聯集。換句話說:

  • 您可以為特定 Cloud de Confiance服務啟用資料存取稽核記錄,但無法為在更廣泛設定中啟用的Cloud de Confiance 服務停用資料存取稽核記錄。

  • 您可以將其他類型的資訊新增至 Cloud de Confiance服務的資料存取稽核記錄,但無法移除較廣泛設定中指定的資訊類型。

  • 您可以將主體新增至豁免清單,但無法從更廣泛設定的豁免清單中移除主體。

  • BigQuery 資料移轉服務會沿用預設稽核記錄設定,做為資料存取稽核記錄設定。

Google Cloud MCP 伺服器會寫入服務專屬的資料存取稽核記錄,格式為 SERVICE_NAME.googleapis.com/mcp。如要啟用這些資料存取記錄,請在 IAM AuditConfig 物件中,開啟 mcp.googleapis.com 的稽核記錄功能。如要進一步瞭解 Google Cloud MCP 伺服器的稽核記錄,請參閱「Google Cloud MCP 伺服器稽核記錄」。

Cloud de Confiance 項資源設定

您可以為 Cloud de Confiance 專案、帳單帳戶、資料夾和組織設定資料存取稽核記錄。如果整個階層中都有Cloud de Confiance 服務的設定,則產生的設定會是這些設定的聯集。也就是說,在Cloud de Confiance 專案層級:

  • 您可以啟用 Cloud de Confiance 服務的記錄功能,但如果 Cloud de Confiance 服務是在上層組織或資料夾中啟用,則無法停用記錄功能。

  • 您可以啟用資訊類型,但無法停用上層組織或資料夾中啟用的資訊類型。

  • 您可以將主體新增至豁免清單,但無法從上層組織或資料夾的豁免清單中移除主體。

  • 在上層組織或資料夾層級,您可以為該組織或資料夾中的 Cloud de Confiance 專案啟用資料存取稽核記錄,即使Cloud de Confiance 專案中未設定資料存取稽核記錄也沒問題。

存取控管

Identity and Access Management 角色和權限可控管 Logging 資料的存取權,包括查看及管理資料存取稽核記錄設定底層的 IAM 政策。

如要查看或設定與資料存取設定相關聯的政策,您必須具備適當資源層級權限的角色。如要瞭解如何授予這些資源層級角色,請參閱「管理專案、資料夾和組織的存取權 Cloud de Confiance 」。

  • 如要設定 IAM 政策,您必須具備 resourcemanager.RESOURCE_TYPE.setIamPolicy 權限的角色。

  • 如要查看 IAM 政策,您必須具備有 resourcemanager.RESOURCE_TYPE.getIamPolicy 權限的角色。

如要查看資料存取稽核記錄所需的權限和角色清單,請參閱「使用 IAM 控管存取權」。

使用 Cloud de Confiance 控制台設定資料存取稽核記錄

本節說明如何使用 Cloud de Confiance 控制台設定資料存取稽核記錄。

您也可以使用 API 或 Google Cloud CLI,以程式輔助方式執行這些工作。詳情請參閱「使用 API 設定資料存取稽核記錄」。

如要在 Cloud de Confiance 控制台存取稽核記錄設定選項,請按照下列步驟操作:

  1. 前往 Cloud de Confiance 控制台的「Audit Logs」(稽核記錄) 頁面:

    前往「Audit Logs」(稽核記錄) 頁面

    如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM & Admin」(IAM 與管理) 的結果。

  2. 選取現有的 Cloud de Confiance 專案、資料夾或組織。

啟用稽核記錄

如要啟用資料存取稽核記錄,請按照下列步驟操作:

  1. 在「Data Access audit logs configuration」(資料存取稽核記錄設定) 表格中,從「Service」(服務) 欄選取一或多個Cloud de Confiance 服務。

  2. 在「Permission types」(權限類型) 分頁中,選取要為所選服務啟用的資料存取稽核記錄類型。

  3. 按一下 [儲存]。

如果成功啟用稽核記錄,表格中會顯示 「Check」(勾選) 圖示。

在以下範例中,您可以看到 Access Approval 服務已啟用「Data Read」(資料讀取) 稽核記錄類型:

稽核記錄設定

您也可以為所有會產生資料存取稽核記錄的 Cloud de Confiance 服務啟用稽核記錄。在「Data Access audit logs configuration」(資料存取稽核記錄設定) 表格中,選取所有 Cloud de Confiance 服務。

請注意,這個大量設定方法僅適用於資源可用的 Cloud de Confiance服務。如果新增Cloud de Confiance 服務,該服務會沿用預設稽核設定。

停用資料存取稽核記錄

如要停用資料存取稽核記錄,請按照下列步驟操作:

  1. 在「Data Access audit logs configuration」(資料存取稽核記錄設定) 表格中,選取一或多個Cloud de Confiance 服務。

  2. 在資訊面板的「Log Types」(記錄類型) 分頁中,選取要為所選服務停用的資料存取稽核記錄類型。

  3. 按一下 [儲存]。

如果成功停用資料存取稽核記錄,表格會以破折號表示。任何已啟用的資料存取稽核記錄都會標示「Check」(勾選) 圖示。

設定豁免條件

您可以設定豁免條件,控管哪些主體會產生特定服務的資料存取稽核記錄。新增豁免主體後,系統就不會為該主體產生所選記錄類型的稽核記錄。

如要設定豁免條件,請按照下列步驟操作:

  1. 在「Data Access audit logs configuration」(資料存取稽核記錄設定) 表格中,從「Service」(服務) 欄選取Cloud de Confiance 服務。

  2. 在資訊面板中,選取「豁免主體」分頁標籤。

  3. 在「新增豁免主體」中,輸入要豁免的主體,系統就不會為所選服務產生資料存取稽核記錄。

    如要新增多個主體,請視需要多次點選「Add exempted principal」(新增豁免主體) 按鈕。

    如需有效主體 (包括使用者和群組) 的清單,請參閱 Binding 類型參考資料。

  4. 在「Disabled Log Types」(已停用的記錄類型) 中,選取要停用的資料存取稽核記錄類型。

  5. 按一下 [儲存]。

如果成功將豁免主體新增至服務,「資料存取稽核記錄設定」表格的「豁免主體」欄會顯示數字。

如要從豁免清單中移除主體,請按照下列步驟操作:

  1. 在「Data Access audit logs configuration」(資料存取稽核記錄設定) 表格中,從「Service」(服務) 欄選取Cloud de Confiance 服務。

  2. 在資訊面板中,選取「豁免主體」分頁標籤。

  3. 將指標懸停在主體名稱上,然後選取「Delete」(刪除)。

  4. 主體名稱顯示為刪除線文字後,按一下「儲存」。

如要編輯豁免主體的資訊,請按照下列步驟操作:

  1. 在「Data Access audit logs configuration」(資料存取稽核記錄設定) 表格中,從「Service」(服務) 欄選取Cloud de Confiance 服務。

  2. 在資訊面板中,選取「豁免主體」分頁標籤。

  3. 找出主體,然後選取「展開」「顯示更多」。

  4. 視主體需要,選取或取消選取資料存取稽核記錄類型。

  5. 按一下 [儲存]。

設定預設設定

您可以設定一項設定,讓 Cloud de Confiance 專案、資料夾或組織中所有新的和現有 Cloud de Confiance服務沿用這項設定。如果貴組織的主體開始使用新推出的 Cloud de Confiance 服務,系統會套用這項預設設定:該服務會沿用您為其他Cloud de Confiance 服務設定的稽核記錄政策,確保系統擷取資料存取稽核記錄。

如要設定或編輯預設設定,請按照下列步驟操作:

  1. 按一下「調整預設設定」。

  2. 在資訊面板的「Log Types」(記錄類型) 分頁中,選取要啟用或停用的資料存取稽核記錄類型。

  3. 按一下 [儲存]。

  4. 在資訊面板中,選取「豁免主體」分頁標籤。

  5. 在「新增豁免主體」中,輸入要豁免的主體,系統就不會為所選服務產生資料存取稽核記錄。

    如要新增多個主體,請視需要多次點選「Add exempted principal」(新增豁免主體) 按鈕。

    如需有效主體 (包括使用者和群組) 的清單,請參閱 Binding 類型參考資料。

  6. 在「Disabled Log Types」(已停用的記錄類型) 中,選取要停用的資料存取稽核記錄類型。

  7. 按一下 [儲存]。

使用 API 設定資料存取稽核記錄

本節說明如何使用 API 和 gcloud CLI,以程式輔助方式設定資料存取稽核記錄。

其中許多工作也可以使用 Cloud de Confiance 控制台執行。如需操作說明,請參閱本頁的「使用 Cloud de Confiance 控制台設定資料存取稽核記錄」一節。

部分 BigQuery 服務 (例如 BigQuery Reservation API) 需要您明確啟用資料存取稽核記錄。如要啟用 BigQuery Reservation API 的資料存取稽核記錄,您必須編輯設定,啟用 bigquery.googleapis.com 的 ADMIN_READ 稽核記錄。

身分與存取權管理政策物件

如要使用 API 設定資料存取稽核記錄,您必須編輯與 Cloud de Confiance 專案、資料夾或組織相關聯的 IAM 政策。稽核記錄設定位於政策的 auditConfigs 部分:

"auditConfigs": [
  {
    object(AuditConfig)
  }
]

詳情請參閱 IAM 政策類型。

以下各節將詳細說明 AuditConfig 物件。如要瞭解用於變更設定的 API 和 gcloud CLI 指令,請參閱「getIamPolicy 和 setIamPolicy」一節。

AuditConfig 個物件

稽核記錄設定包含 AuditConfig 物件清單。每個物件都會設定一項服務的記錄,或為所有服務建立更廣泛的設定。每個物件看起來如下:

{
  "service": SERVICE_NAME,
  "auditLogConfigs": [
    {
      "logType": "ADMIN_READ"
      "exemptedMembers": [ PRINCIPAL,]
    },
    {
      "logType": "DATA_READ"
      "exemptedMembers": [ PRINCIPAL,]
    },
    {
      "logType": "DATA_WRITE"
      "exemptedMembers": [ PRINCIPAL,]
    },
  ]
},

SERVICE_NAME 的值可以是 "appengine.googleapis.com",也可以是特殊值 "allServices"。如果設定未提及特定服務,系統會將較大範圍的設定用於該服務。如果沒有設定,則該服務不會啟用資料存取稽核記錄。如要查看服務名稱清單,請參閱「記錄服務」。

AuditConfig 物件的 auditLogConfigs 區段是包含 0 到 3 個物件的清單,每個物件都會設定一種稽核記錄資訊。如果省略清單中的某個種類,系統就不會為服務啟用該種類的資訊。

PRINCIPAL 是系統不會收集資料存取稽核記錄的使用者。Binding 類型描述不同類型的主體,包括使用者和群組,但並非所有主體都能用於設定資料存取稽核記錄。

以下是 JSON 和 YAML 格式的稽核設定範例。使用 Google Cloud CLI 時,預設格式為 YAML。

JSON

"auditConfigs": [
  {
    "auditLogConfigs": [
      {
        "logType": "ADMIN_READ"
      },
      {
        "logType": "DATA_WRITE"
      },
      {
        "logType": "DATA_READ"
      }
    ],
    "service": "allServices"
  },
  {
    "auditLogConfigs": [
      {
        "exemptedMembers": [
          "499862534253-compute@developer.s3ns-system.iam.gserviceaccount.com"
        ],
        "logType": "ADMIN_READ"
      }
    ],
    "service": "cloudsql.googleapis.com"
  }
],

YAML

auditConfigs:
- auditLogConfigs:
  - logType: ADMIN_READ
  - logType: DATA_WRITE
  - logType: DATA_READ
  service: allServices
- auditLogConfigs:
  - exemptedMembers:
    - 499862534253-compute@developer.s3ns-system.iam.gserviceaccount.com
    logType: ADMIN_READ
  service: cloudsql.googleapis.com

常見設定

以下是 Cloud de Confiance 專案的一些常見稽核記錄設定。

啟用所有資料存取稽核記錄

下列 auditConfigs 區段會為所有服務和主體啟用資料存取稽核記錄:

JSON

"auditConfigs": [
      {
        "service": "allServices",
        "auditLogConfigs": [
          { "logType": "ADMIN_READ" },
          { "logType": "DATA_READ"  },
          { "logType": "DATA_WRITE" },
        ]
      },
    ]

YAML

auditConfigs:
- auditLogConfigs:
  - logType: ADMIN_READ
  - logType: DATA_WRITE
  - logType: DATA_READ
  service: allServices

啟用一項服務與資訊種類

下列設定會啟用 Cloud SQL 的 DATA_WRITE 資料存取稽核記錄:

JSON

"auditConfigs": [
  {
    "service": "cloudsql.googleapis.com",
    "auditLogConfigs": [
      { "logType": "DATA_WRITE" },
    ]
  },
]

YAML

auditConfigs:
- auditLogConfigs:
  - logType: DATA_WRITE
  service: cloudsql.googleapis.com

停用所有資料存取稽核記錄

如要停用 Cloud de Confiance 專案中的所有資料存取稽核記錄 (部分 BigQuery 記錄除外),請在新 IAM 政策中加入空白的 auditConfigs: 區段:

JSON

"auditConfigs": [],

YAML

auditConfigs:

如果從新政策中完全移除 auditConfigs 區段,則 setIamPolicy 不會變更現有的資料存取稽核記錄設定。詳情請參閱「setIamPolicy 更新遮罩」一節。

BigQuery 資料存取稽核記錄無法停用。

getIamPolicy 和 setIamPolicy

您可以使用 Cloud Resource Manager API getIamPolicy 和 setIamPolicy 方法讀取及寫入 IAM 政策。您可以透過多種方式使用特定方法:

  • Cloud Resource Manager API 包含下列方法:

    projects.getIamPolicy
    projects.setIamPolicy
    organizations.getIamPolicy
    organizations.setIamPolicy
    
  • Google Cloud CLI 包含下列 Resource Manager 指令:

    gcloud projects get-iam-policy
    gcloud projects set-iam-policy
    gcloud resource-manager folders get-iam-policy
    gcloud resource-manager folders set-iam-policy
    gcloud organizations get-iam-policy
    gcloud organizations set-iam-policy
    gcloud beta billing accounts get-iam-policy
    gcloud beta billing accounts set-iam-policy
    

無論您的選擇為何,都請按照下列三個步驟執行:

  1. 使用其中一種 getIamPolicy 方法讀取目前的政策。將政策儲存至暫存檔案。
  2. 編輯暫存檔案中的政策。僅變更 (或新增) auditConfigs 區段。
  3. 使用其中一種 setIamPolicy 方法,將編輯過的政策寫入暫存檔案。

如果 Resource Manager 偵測到有人在您於第一個步驟讀取政策後變更政策,setIamPolicy 就會失敗。如果發生這種情況,請重複執行這三個步驟。

範例

下列範例說明如何使用 gcloud 指令和 Cloud Resource Manager API,設定專案的資料存取稽核記錄。

如要設定機構資料存取稽核記錄,請將「專案」版本的指令與 API 方法取代為「機構」版本。

gcloud

如要使用 gcloud projects 指令設定資料存取稽核記錄,請按照下列步驟操作:

  1. 讀取專案的 IAM 政策,並儲存至檔案:

    gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
    

    以下是傳回的政策。這項政策沒有 auditConfigs 區段:

    bindings:
    - members:
      - user:colleague@example.com
      role: roles/editor
    - members:
      - user:myself@example.com
      role: roles/owner
    etag: BwVM-FDzeYM=
    version: 1
    
  2. 在 /tmp/policy.yaml 中編輯政策,僅新增或變更資料存取稽核記錄設定。

    以下是編輯後的政策範例,可啟用 Cloud SQL 資料寫入資料存取稽核記錄:

    auditConfigs:
    - auditLogConfigs:
      - logType: DATA_WRITE
      service: cloudsql.googleapis.com
    bindings:
    - members:
      - user:colleague@example.com
      role: roles/editor
    - members:
      - user:myself@example.com
      role: roles/owner
    etag: BwVM-FDzeYM=
    version: 1
    

    如前例所示,政策開頭新增了四行。

  3. 寫入您的新身分與存取權管理政策:

    gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
    

    如果上述指令回報與其他變更衝突,請從第一個步驟開始重複執行這些步驟。

JSON

如要以 JSON 格式 (而非 YAML) 使用 IAM 政策,請在範例中替換下列 gcloud 指令:

gcloud projects get-iam-policy PROJECT_ID --format=json >/tmp/policy.json
gcloud projects set-iam-policy PROJECT_ID /tmp/policy.json

API

如要使用 Cloud Resource Manager API 設定資料存取稽核記錄,請執行下列操作:

  1. 讀取專案的身分與存取權管理政策,並為 getIamPolicy API 方法指定下列參數:

    • resource:projects/PROJECT_ID
    • 要求主體:空白

    這個方法會傳回目前的政策物件:

    {
      "version": 1,
      "etag": "BwXqwxkr40M=",
      "bindings": [
        {
          "role": "roles/owner",
          "members": [
            "user:myself@example.com"
          ]
        }
      ]
    }
    

    上例顯示專案政策沒有 auditConfigs 區段。

  2. 編輯目前政策:

    • 變更或新增 auditConfigs 區段。

      如要停用資料存取稽核記錄,請在 auditConfigs:[] 區段中加入空白值。

    • 保留 etag 的值。

    您也可以從新的政策物件中移除所有其他資訊,只要在下一個步驟中小心設定 updateMask 即可。以下是編輯後的政策,可啟用 Cloud SQL DATA_WRITE 稽核記錄:

    {
      "policy": {
        "auditConfigs": [
          {
            "auditLogConfigs": [
              {
                "logType": "DATA_WRITE"
              }
            ],
            "service": "cloudsql.googleapis.com"
          }
        ],
        "etag": "BwXqwxkr40M="
      },
      "updateMask": "auditConfigs,etag"
    }
    
  3. 使用 setIamPolicy API 方法寫入新政策,並指定下列參數:

    • resource:projects/PROJECT_ID
    • 要求主體:加入編輯後的政策。

setIamPolicy 更新遮罩

本節說明 setIamPolicy 方法中 updateMask 參數的重要性,以及為何必須謹慎使用 gcloud CLI set-iam-policy 指令,以免不小心損害 Cloud de Confiance 專案或組織。

setIamPolicy API 方法會使用 updateMask 參數,控制要更新哪些政策欄位。舉例來說,如果遮罩不含 bindings,您就不會不小心變更該政策部分。另一方面,如果遮罩確實包含 bindings,則該部分「一律」會更新。如果未加入 bindings 的更新值,系統會從政策中完全移除該部分。

gcloud projects set-iam-policy 指令會呼叫 setIamPolicy,但無法指定 updateMask 參數。而是以下列方式計算 updateMask 的值:

  • updateMask 一律包含 bindings 和 etag 欄位。
  • 如果 set-iam-policy 中提供的政策物件包含任何其他頂層欄位 (例如 auditConfigs),則這些欄位會新增至 updateMask。

根據這些規則,set-iam-policy 指令會產生下列行為:

  • 如果您在新政策中省略 auditConfigs 區段,則 auditConfigs 區段先前的值 (如有) 不會變更,因為該區段不在更新遮罩中。這一行為無害,但會讓人感到困惑。

  • 如果您在新政策物件中省略 bindings,則 bindings 區段會從政策中移除,因為這個區段會顯示在更新遮罩中。這會造成嚴重損害,導致所有主體失去 Cloud de Confiance 專案的存取權。

  • 如果您在新政策物件中省略 etag,系統會停用政策並行變更檢查,這可能會導致您的變更意外覆寫其他人的變更。