設定資料存取記錄

本指南說明如何在您的專案或機構中啟用及設定資料存取稽核記錄的各個方面。如要瞭解稽核記錄的一般資訊,請參閱 Cloud 稽核記錄一文。

管理員活動稽核記錄會針對所有 Google Cloud Platform 服務啟用,且無法設定。

設定總覽

資料存取稽核記錄 (除 BigQuery 以外) 預設為停用。您可以啟用及設定資料存取稽核記錄的特定方面:

  • 機構。您可以在機構中啟用及設定資料存取稽核記錄,以套用至機構中所有現有的和新的專案與資料夾。

  • 資料夾。您可以在資料夾中啟用及設定資料存取稽核記錄,以套用至資料夾中所有現有的和新的專案,但無法停用已在專案的機構中啟用的資料存取稽核記錄。

  • 專案。您可以針對個別專案設定資料存取稽核記錄,但無法停用已在專案的機構或資料夾中啟用的資料存取稽核記錄。

  • 預設設定。您可以在機構、資料夾或專案中指定預設資料存取稽核記錄設定,以套用至開始產生資料存取稽核記錄的未來 GCP 服務。

  • 服務。您可以指定要接收其稽核記錄的目標服務。例如,您可能想要來自 Compute Engine 但並非來自 Cloud SQL 的稽核記錄。如需可產生稽核記錄的 GCP 服務清單,請參閱具有稽核記錄的 Google 服務一文。

  • 資訊種類。您可以控制稽核記錄中的資訊種類。有三種資料存取稽核記錄資訊:

    • ADMIN_READ:記錄讀取中繼資料或設定資訊的作業。

      管理員活動稽核記錄會記錄中繼資料與設定資訊的寫入。您無法停用這些稽核記錄。

    • DATA_READ:記錄讀取使用者所提供資料的作業。

    • DATA_WRITE:記錄寫入使用者所提供資料的作業。

    例如,您只能記錄資料寫入作業,但可以從 Cloud DNS 記錄全部三種資訊。

  • 豁免使用者。您可以使特定使用者或群組不必記錄其資料存取。例如,您可以使內部測試帳戶不必記錄其 Stackdriver Debugger 作業。

您可以透過 Logging 主控台或 API 設定資料存取稽核記錄。我們會在下面幾節說明這些方法。

服務專屬設定

如果有一個設定適用於全部 GCP 服務 (allServices),一個設定適用於一項特定 GCP 服務,產生的服務設定會是這兩個設定的聯集。換句話說:

  • 您可以啟用特定 GCP 服務的資料存取稽核記錄,但無法停用已在較大範圍的設定中啟用之 GCP 服務的資料存取稽核記錄。

  • 您可以將其他資訊種類新增至 GCP 服務的資料存取稽核記錄,但無法移除已在較大範圍的設定中指定的資訊種類。

  • 您可以將使用者新增至豁免清單,但無法在較大範圍的設定中,將使用者從豁免清單中移除。

機構、資料夾與專案設定

您可以針對機構、資料夾與專案設定資料存取稽核記錄。如果一個設定適用於階層中的一項 GCP 服務,則產生的設定會是各設定的聯集。換句話說,在專案層級:

  • 您可以啟用 GCP 服務的記錄,但無法停用已在資料夾或機構中啟用之 GCP 服務的記錄。

  • 您可以啟用資訊種類,但無法停用已在機構或資料夾中啟用的資訊種類。

  • 您可以將使用者新增至豁免清單,但無法移除位於機構或資料夾豁免清單中的使用者。

  • 在機構或資料夾層級,您可以針對該機構或資料夾內的專案啟用資料存取記錄,即使尚未在專案中設定資料存取稽核記錄也是如此。

存取權控管

您必須擁有身分與存取權管理角色 roles/resourcemanager.organizationAdmin 才能在機構層級設定資料存取稽核記錄;必須擁有 roles/resourcemanager.folderAdmin 才能在資料夾層級設定資料存取稽核記錄;必須擁有 roles/owner 才能在專案層級設定資料存取稽核記錄。

使用 GCP 主控台設定資料存取記錄

這部分說明如何使用 GCP 主控台設定資料存取稽核記錄。

您也可以使用 API 或 Cloud SDK 來以程式化方式執行這些工作;詳情請參閱使用 API 設定資料存取記錄一文。

如要在 GCP 主控台中存取稽核記錄設定選項,請按照下列步驟操作:

  1. GCP 主控台左上方的溢位選單中,選取 [IAM & Admin] (IAM 與管理員) > [Audit Logs] (稽核記錄)

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

  2. 選取頁面頂部的現有 GCP 專案、資料夾或機構。

啟用稽核記錄

下列步驟說明如何啟用資料存取記錄:

  1. 在「Audit Logs」(稽核記錄) 頁面的主要表格中,按一下 [Title] (標題) 欄中服務名稱左側的方塊,選取一或多項 GCP 服務。

  2. 在表格右側資訊面板的「Log Type」(記錄類型) 分頁中,根據您想啟用的資料存取稽核記錄類型選取方塊,然後按一下 [Save] (儲存)

  3. 成功啟用稽核記錄之後,表格中會有一個勾號。在下列範例中您會看到,針對 Cloud Composer API 服務,已啟用「Admin Read」(管理員讀取) 與「Data Read」(資料讀取) 稽核記錄:

    稽核記錄設定

您也可以針對會產生資料存取稽核記錄的所有 GCP 服務啟用稽核記錄。在「稽核記錄」頁面的主要表格中,按一下「標題」左側的方塊,選取所有 GCP 服務。

請注意,這種「大量」設定方式僅適用於目前可用的 GCP 服務。如果新增 GCP 服務,該服務會繼承您的預設稽核設定

停用稽核記錄

下列步驟說明如何停用資料存取記錄:

  1. 在「Audit Logs」(稽核記錄) 頁面的主要表格中,按一下 [Title] (標題) 欄中服務名稱左側的方塊,選取一或多項 GCP 服務。

  2. 在表格右側資訊面板的「Log Type」(記錄類型) 分頁中,根據您想要停用的資料存取稽核記錄類型選取方塊,然後按一下 [Save] (儲存)

  3. 成功停用稽核記錄之後,表格會以灰色破折號表示停用。任何啟用的稽核記錄都會以綠色勾號表示。

設定使用者豁免

您可以設定豁免,來讓您控制哪些使用者可以產生稽核記錄。在您新增豁免使用者後,系統就不會為該位使用者建立所選記錄類型的稽核記錄。不過請注意,無論豁免狀態為何,系統都會產生管理員活動記錄。

下列步驟說明如何設定豁免:

  1. 在「Audit Logs」(稽核記錄) 設定頁面的主要表格中,按一下 [Title] (標題) 欄中服務名稱左側的方塊,選取一或多項 GCP 服務。

  2. 在表格右側的資訊面板中,選取 [Exempted Users] (豁免使用者) 分頁標籤。在「Add exempted user」(新增豁免使用者) 下,填寫您想新增至所選服務豁免清單之使用者的電子郵件地址。您可以根據需要多次選取 [Add exempted user] (新增豁免使用者) 按鈕,新增多位使用者。

  3. 在電子郵件地址下,根據您想針對使用者停用的資料存取稽核記錄類型選取方塊,然後按一下 [Save] (儲存)

  4. 將豁免使用者成功新增至服務之後,表格的「Exemptions」(豁免成員數) 欄下會顯示一個數字。

如要從您的豁免清單中移除使用者

  1. 前往資訊面板中的「豁免使用者」分頁。

  2. 將游標懸停在使用者名稱上,並選取出現的「垃圾桶圖示」

  3. 在使用者名稱顯示成加上刪除線的文字之後,按一下 [儲存]

針對豁免使用者編輯資訊

  1. 前往資訊面板中的「豁免使用者」分頁。

  2. 按一下使用者名稱右側的展開箭頭。

  3. 選取或取消選取使用者適用的資料存取稽核記錄類型,然後按一下 [Save] (儲存)

設定預設設定

您可以設定一個專案、資料夾或機構中,所有新的與現有的 GCP 服務都會繼承的設定。如果新 GCP 服務變為可用,且您機構中的使用者開始使用該服務,則可以設定這個預設設定:服務會繼承您已經針對其他 GCP 服務設定的稽核記錄政策,確保擷取資料存取稽核記錄。

  1. 按一下頁面頂端的 [Set Default Configuration] (設定預設設定)

  2. 在「Log Type」(記錄類型) 分頁中,根據您想啟用或停用的資料存取稽核記錄類型選取方塊,然後按一下 [Save] (儲存)

  3. 在「Exempted Users」(豁免使用者) 分頁中,填寫您想新增至豁免清單之使用者的電子郵件地址,然後按一下 [Save] (儲存)。請按照上述設定使用者豁免部分中的步驟操作。

使用 API 設定資料存取記錄

這部分說明如何使用 API 與 Cloud SDK 指令列介面,以程式化方式設定資料存取稽核記錄。

這裡的許多工作也可以使用 GCP 主控台執行;詳情請參閱使用 GCP 主控台設定資料存取記錄一文。

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

如要使用 API 設定資料存取稽核記錄,您必須編輯與專案、資料夾或機構相關聯的身分與存取權管理政策。稽核記錄設定位於政策的 auditConfigs 區段:

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

詳情請參閱身分與存取權管理政策類型。

下列各節詳細說明 AuditConfig 物件。針對用來變更設定的 API 與 Cloud SDK 指令,請參閱 getIamPolicy 與 setIamPolicy 一文

AuditConfig 物件

稽核記錄設定由 AuditConfig 物件清單組成。每個物件都會針對一項服務設定記錄,或針對所有服務建立較大範圍的設定。每個物件如下所示:

{
  "service": [SERVICE],
  "auditLogConfigs": [
    {
      "logType": "ADMIN_READ"
      "exemptedMembers": [ [MEMBER],]
    },
    {
      "logType": "DATA_READ"
      "exemptedMembers": [ [MEMBER],]
    },
    {
      "logType": "DATA_WRITE"
      "exemptedMembers": [ [MEMBER],]
    },
  ]
},

[SERVICE] 是諸如 "appengine.googleapis.com" 等服務名稱,或是特殊值 "allServices"。如果設定未提及特定服務,系統會將較大範圍的設定用於該服務。如果沒有設定,則系統不會針對該服務啟用資料存取記錄。如需服務名稱的清單,請參閱記錄服務一文。

AuditConfig 物件的 auditLogConfigs 區段是 0 到 3 個物件的清單,每個物件都會設定一種稽核記錄資訊。如果您省略清單中的其中一種資訊,系統不會針對服務啟用這種資訊。

[MEMBER] 是不會為其收集資料存取稽核記錄的使用者。您可以指定單一使用者、群組或服務帳戶。繫結類型說明不同種類的成員,但並非所有這些種類的成員都可以用來設定資料存取稽核記錄。

下面是 JSON 與 YAML 格式的稽核設定範例。YAML 是使用 Cloud SDK 指令時的預設格式。

JSON

"auditConfigs": [
  {
    "auditLogConfigs": [
      {
        "logType": "ADMIN_READ"
      },
      {
        "logType": "DATA_WRITE"
      },
      {
        "logType": "DATA_READ"
      }
    ],
    "service": "allServices"
  },
  {
    "auditLogConfigs": [
      {
        "exemptedMembers": [
          "499862534253-compute@developer.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.gserviceaccount.com logType: ADMIN_READ service: cloudsql.googleapis.com

常見設定

下面是專案的一些常見稽核記錄設定。

這些設定不會將專案的機構或資料夾中的任何稽核記錄設定納入考量。詳情請參閱機構與專案設定一文。

啟用所有存取記錄

下面的 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 啟用資料存取稽核記錄。這些記錄只會記錄使用者定義資料的寫入:

JSON

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

YAML

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

停用所有記錄

如要停用專案中的所有資料存取稽核記錄 (BigQuery 除外),請在您的新身分與存取權管理政策中包含空白 auditConfigs: 區段:

JSON

"auditConfigs": [],

YAML

auditConfigs:

如果您將 auditConfigs 區段從新政策中整個移除,則 setIamPolicy 不會變更現有資料存取稽核記錄設定。詳情請參閱 setIamPolicy 更新遮罩一文。

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

getIamPolicy 與 setIamPolicy

您可以使用 Cloud Resource Manager 的 getIamPolicysetIamPolicy 方法,讀取及寫入身分與存取權管理政策。您可以透過多種方式使用特定方法:

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

    projects.getIamPolicy
    projects.setIamPolicy
    organizations.getIamPolicy
    organizations.setIamPolicy
    
  • Cloud SDK 擁有下列 Cloud Resource Manager 指令:

    gcloud projects get-iam-policy
    gcloud projects set-iam-policy
    gcloud organizations get-iam-policy
    gcloud organizations set-iam-policy
    

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

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

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

範例

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

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

Cloud SDK

如要使用 gcloud projects 指令設定資料存取稽核記錄,請執行以下操作:

  1. 讀取您專案的身分與存取權管理政策,並將其儲存在檔案中:

    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 格式的身分與存取權管理政策,請將下列 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 方法,以讀取專案的身分與存取權管理政策:

    • 資源projects/[PROJECT_ID]
    • 要求主體:「空白」

    此方法會傳回目前政策物件,如下所示。這個專案的政策還沒有 auditConfigs 區段:

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

    }

  2. 編輯目前政策:

    • 變更或新增 auditConfigs 區段。

      如果您想要停用資料存取稽核記錄,請針對該區段包含空白值:auditConfigs:[]

    • 保留 etag 的值。

    只要您在下一步中仔細設定 updateMask,就可以在需要時移除新政策物件中的其他所有資訊。下面顯示的是所編輯政策,該政策可啟用 Cloud SQL 資料寫入稽核記錄:

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

    • 資源projects/[PROJECT_ID]
    • 要求主體
      • updateMask"auditConfigs,etag"
      • 政策:「您已編輯的政策物件」

setIamPolicy 更新遮罩

本節說明 setIamPolicy 方法中 updateMask 參數的重要性,以及您必須小心使用 SDK set-iam-policy 指令,以免意外傷害到專案或機構的原因。

setIamPolicy API 方法使用 updateMask 參數控制更新的政策欄位。例如,如果遮罩不包含 bindings,您就不會意外變更該政策區段。另一方面,如果遮罩包含 bindings,則系統會「一律」更新這個區段。如果您沒有 bindings 更新的值,系統會將該區段從政策中整個移除。

呼叫 setIamPolicygcloud projects set-iam-policy 指令,無法讓您指定 updateMask 參數。該指令會以下列方式計算 updateMask 的值:

  • updateMask 一律包含 bindingsetag 欄位。
  • 如果 set-iam-policy 中提供的政策物件包含其他任何頂層欄位,例如 auditConfigs,系統會將這些欄位新增至 updateMask

根據這些規則,set-iam-policy 指令擁有下列行為:

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

  • 如果您在新政策物件中省略 bindings,系統會將 bindings 區段從您的政策中移除,因為這個區段會顯示在更新遮罩中。這一行為的傷害非常大,會讓所有使用者都無法再存取您的專案。

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

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Stackdriver Logging
需要協助嗎?請前往我們的支援網頁