本指南說明如何使用 Google Cloud 控制台或 API,在Google Cloud 專案、帳單帳戶、資料夾和機構中,啟用或停用部分或全部的資料存取稽核記錄。
事前準備
設定資料存取稽核記錄前,請先瞭解下列資訊:
「資料存取」稽核記錄 (BigQuery 除外) 預設為停用。如要為 BigQuery 以外的Google Cloud 服務寫入「資料存取」稽核記錄,您必須明確加以啟用。
資料存取稽核記錄會儲存在
_Default
bucket 中,除非您已將記錄傳送至其他位置。詳情請參閱「儲存及轉送稽核記錄」。資料存取稽核記錄可協助 Google 支援團隊排解帳戶問題。因此,建議您盡可能啟用資料存取稽核記錄。
-
如要取得存取
_Required
和_Default
值區中所有記錄 (包括資料存取記錄) 所需的權限,請要求管理員為您授予專案的私密記錄檢視者 (roles/logging.privateLogViewer
) 身分與存取權管理角色。「私密記錄檢視者」角色
(roles/logging.privateLogViewer)
包含「記錄檢視者」角色 (roles/logging.viewer
) 所含的權限,以及在_Default
儲存空間中讀取資料存取稽核記錄所需的權限。「編輯者」角色 (
roles/editor
) 不包含查看資料存取記錄所需的權限。如要進一步瞭解適用於稽核記錄資料的 IAM 權限和角色,請參閱「使用身分與存取權管理功能控管存取權」一文。
設定總覽
您可以設定如何為Google Cloud 資源和服務啟用資料存取稽核記錄:
機構:您可以在機構中啟用及設定資料存取稽核記錄,以套用至機構中所有現有的和新的Google Cloud 專案與資料夾。
資料夾:您可以在資料夾中啟用及設定資料存取稽核記錄,以套用至資料夾中所有現有的和新的專案。 Google Cloud 您無法停用已在專案的父項機構中啟用的資料存取稽核記錄。
專案:您可以針對個別Google Cloud 專案設定資料存取稽核記錄。您無法停用已在父項機構或資料夾中啟用的資料存取稽核記錄。
帳單帳戶:如要為帳單帳戶設定資料存取稽核記錄,請使用 Google Cloud CLI。如要進一步瞭解如何搭配使用 gcloud CLI、資料存取稽核記錄和帳單帳戶,請參閱
gcloud beta billing accounts set-iam-policy
說明文件。預設設定:您可以在機構、資料夾或專案中指定預設資料存取稽核記錄設定,以套用至開始產生資料存取稽核記錄的未來服務。 Google Cloud Google Cloud 如需操作說明,請參閱「設定預設設定」。
權限類型:您可以指定只檢查特定類型權限的 Google Cloud API 發出稽核記錄。詳情請參閱本頁的「權限類型」一節。
豁免主體:您可以使特定主體不必記錄其資料存取。例如,您可以使內部測試帳戶不必記錄其 Cloud Monitoring 作業。如需有效主體 (包括使用者和群組) 的清單,請參閱
Binding
類型參考資料。
您可以透過 Google Cloud 控制台的 IAM 稽核記錄頁面,或使用 API 設定資料存取稽核記錄。以下各節會說明這些方法。
權限類型
API 方法會檢查 IAM 權限。每個 IAM 權限都有權限類型,由 type
屬性定義。權限類型分為資料存取權限類型或管理員活動權限類型:
資料存取權限類型:
ADMIN_READ
:系統會針對讀取中繼資料或設定資訊的Google Cloud API 方法,檢查這類 IAM 權限。通常ADMIN_READ
稽核記錄預設為停用,必須啟用。DATA_READ
:系統會檢查這類型的 IAM 權限,適用於讀取使用者提供資料的Google Cloud API 方法。一般來說,DATA_READ
稽核記錄預設為停用,必須啟用才能使用。DATA_WRITE
:系統會檢查這類型的 IAM 權限,是否適用於寫入使用者提供資料的Google Cloud API 方法。一般來說,DATA_WRITE
稽核記錄預設為停用,必須啟用才能使用。
管理員活動權限類型:
ADMIN_WRITE
:系統會檢查這類 IAM 權限,以判斷是否允許Google Cloud 寫入中繼資料或設定資訊的 API 方法。這類型的稽核記錄 (管理員活動稽核記錄) 預設為啟用,且無法停用。
如要啟用或停用服務的權限類型,請使用Google Cloud 控制台或呼叫 API。
大多數 Google Cloud API 只會檢查呼叫者是否擁有單一 IAM 權限。如果與該權限相關聯的權限類型已啟用,且該服務的 API 正在呼叫中,則 API 會產生稽核記錄。
以下各節大致說明 API 方法檢查 IAM 權限的其他方式。 Google Cloud如要瞭解服務會檢查哪些方法,以及檢查哪些權限類型,請參閱服務的稽核記錄說明文件。
檢查資料存取權類型適用的 IAM 權限
部分 Google Cloud API 方法會檢查呼叫者是否具有多個 IAM 權限,且這些權限具有不同的資料存取權類型。在專案中啟用其中一種資料存取權類型時,系統就會寫入稽核記錄。
舉例來說,API 方法可能會檢查發出 API 要求的主體是否具備 example.resource.get
(DATA_READ
) 和 example.resource.write
(DATA_WRITE
) 權限。專案只需要啟用 DATA_WRITE
或 DATA_READ
,服務就能在發出呼叫時發出稽核記錄。
檢查的管理員活動和資料存取 IAM 權限類型
部分 Google Cloud API 方法會檢查是否同時具備 ADMIN_WRITE
權限類型的 IAM 權限,以及一或多個資料存取權限類型的權限。
這類 API 呼叫會發出管理員活動稽核記錄,這類記錄預設為啟用,且無法停用。
API 方法會檢查服務不擁有的 IAM 權限
部分 Google Cloud 服務的 API 方法只會在其他服務啟用特定權限類型時,產生稽核記錄。
舉例來說,Cloud Billing 有一個 API 方法,可檢查 Resource Manager 擁有的權限類型 ADMIN_READ
。必須為服務啟用 ADMIN_READ
,才能啟用與 Cloud Billing API 相關聯的稽核記錄。cloudresourcemanager.googleapis.com
相同 API 方法會檢查不同的 IAM 權限
對於部分 Google Cloud API,方法呼叫方式會決定專案必須啟用哪些 IAM 權限類型,才能產生稽核記錄。
舉例來說,Spanner 有一個 API 方法,有時會檢查 DATA_WRITE
類型的 IAM 權限,有時則會檢查 DATA_READ
類型的 IAM 權限,視方法的呼叫方式而定。在這種情況下,在 API 呼叫專案上為 Spanner 啟用 DATA_WRITE
,只會在檢查 DATA_WRITE
類型的 IAM 權限時,啟用與 API 相關聯的稽核記錄。
服務專屬設定
如果同時有 Google Cloud 全服務 (allServices
) 設定和特定 Google Cloud 服務的設定,則該服務的最終設定是這兩項設定的聯集。換句話說:
您可以啟用特定 Google Cloud服務的資料存取稽核記錄,但無法停用已在較大範圍的設定中啟用之Google Cloud 服務的資料存取稽核記錄。
您可以將其他資訊種類新增至 Google Cloud服務的資料存取稽核記錄,但無法移除已在較大範圍的設定中指定的資訊種類。
您可以將主體新增至豁免清單,但無法在較大範圍的設定中,將主體從豁免清單中移除。
如果是 BigQuery 資料移轉服務,資料存取稽核記錄設定會沿用預設稽核記錄設定。
Google Cloud 資源設定
您可以為 Google Cloud 專案、帳單帳戶、資料夾和機構設定資料存取稽核記錄。如果階層中存在Google Cloud 服務的設定,則產生的設定會是這些設定的聯集。換句話說,在Google Cloud 專案層級:
您可以啟用 Google Cloud 服務的記錄,但無法停用已在父項機構或資料夾中啟用之 Google Cloud 服務的記錄。
您可以啟用資訊種類,但無法停用已在上層機構或資料夾中啟用的資訊種類。
您可以將主體新增至豁免清單,但無法從上層機構或資料夾的豁免清單中移除主體。
在父項機構或資料夾層級,您可以針對該機構或資料夾內的專案啟用資料存取稽核記錄,即使尚未在專案中設定資料存取稽核記錄也是如此。 Google Cloud Google Cloud
存取權控管
Identity and Access Management 角色和權限可控管記錄資料的存取權,包括查看及管理基礎資料存取稽核記錄設定的 IAM 政策。
如要查看或設定與資料存取設定相關聯的政策,您必須具備適當資源層級的權限角色。如要瞭解如何授予這些資源層級的角色,請參閱「管理專案、資料夾和機構的存取權 Google Cloud 」一文。
如要設定 IAM 政策,您需要具備
resourcemanager.RESOURCE_TYPE.setIamPolicy
權限的角色。如要查看 IAM 政策,您必須具備含有
resourcemanager.RESOURCE_TYPE.getIamPolicy
權限的角色。
如要查看資料存取稽核記錄,請參閱「使用 IAM 控管存取權」一文,瞭解您需要的權限和角色。
使用 Google Cloud 控制台設定資料存取稽核記錄
本節說明如何使用 Google Cloud 控制台設定資料存取稽核記錄。
您也可以使用 API 或 Google Cloud CLI,以程式輔助方式執行這些工作;詳情請參閱「使用 API 設定資料存取稽核記錄」。
如要在 Google Cloud 控制台中存取稽核記錄設定選項,請按照下列步驟操作:
-
前往 Google Cloud 控制台的「Audit Logs」(稽核記錄) 頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「IAM & Admin」(IAM 與管理) 的結果。
選取現有的 Google Cloud 專案、資料夾或組織。
啟用稽核記錄
如要啟用資料存取稽核記錄,請按照下列步驟操作:
在「資料存取稽核記錄設定」表格中,從「服務」欄選取一或多項Google Cloud 服務。
在「權限類型」分頁中,選取要為所選服務啟用的資料存取稽核記錄類型。
按一下 [儲存]。
成功啟用稽核記錄之後,表格中會有一個check_circle 勾號圖示。
在下列範例中,您會看到「存取核准」服務已啟用「資料讀取」稽核記錄類型:
您也可以針對會產生資料存取稽核記錄的所有 Google Cloud 服務啟用稽核記錄。在「資料存取稽核記錄設定」表格中,選取所有 Google Cloud 服務。
請注意,這項大量設定方法僅適用於資源可用的 Google Cloud服務。如果新增Google Cloud 服務,系統會沿用預設稽核設定。
停用資料存取稽核記錄
如要停用資料存取稽核記錄,請按照下列步驟操作:
在「資料存取稽核記錄設定」表格中,選取一或多項Google Cloud 服務。
在資訊面板的「記錄類型」分頁中,選取要為所選服務停用的資料存取稽核記錄類型。
按一下 [儲存]。
成功停用資料存取稽核記錄之後,表格會以破折號表示停用。任何啟用的資料存取稽核記錄都會以check_circle 勾號圖示表示。
設定豁免
您可以設定豁免,控管哪些主體會為特定服務產生資料存取稽核記錄。新增豁免主體後,系統就不會為該主體建立所選記錄類型的稽核記錄。
如要設定豁免,請按照下列步驟操作:
在「資料存取稽核記錄設定」表格中,從「服務」欄選取Google Cloud 服務。
在資訊面板中選取「Exempted Principals」(豁免主體) 分頁標籤。
在「新增豁免主體」中,輸入要豁免的主體,系統就不會為所選服務產生該主體的資料存取稽核記錄。
您可以根據需要多次點選「新增豁免主體」按鈕,新增多個主體。
如需有效主體的清單 (包括使用者和群組),請參閱
Binding
類型參考資料。在「Disabled Log Types」(已停用的記錄類型) 中,選取要停用的資料存取稽核記錄類型。
按一下 [儲存]。
將豁免主體成功新增至服務之後,「資料存取稽核記錄設定」表格的「豁免主體」欄下會顯示一個數字。
如要從豁免清單中移除主體,請按照下列步驟操作:
在「資料存取稽核記錄設定」表格中,從「服務」欄選取Google Cloud 服務。
在資訊面板中選取「Exempted Principals」(豁免主體) 分頁標籤。
將游標懸停在主體名稱上,然後選取「刪除」圖示
。校長姓名以刪除線文字顯示後,請按一下「儲存」。
如要編輯豁免主體的資訊,請按照下列步驟操作:
在「資料存取稽核記錄設定」表格中,從「服務」欄選取Google Cloud 服務。
在資訊面板中選取「Exempted Principals」(豁免主體) 分頁標籤。
找出主體,然後選取「顯示更多」expand_more。
選取或取消選取主體適用的資料存取稽核記錄類型。
按一下 [儲存]。
設定預設設定
您可以設定讓專案、資料夾或機構中所有現有和新的服務沿用的設定。 Google CloudGoogle Cloud 如果新的 Google Cloud 服務 開始提供,且貴機構中的主體開始使用該服務,系統就會套用這項預設設定:該服務會沿用您已為其他Google Cloud 服務設定的稽核記錄政策,確保系統會擷取資料存取稽核記錄。
如要設定或編輯預設設定,請按照下列步驟操作:
按一下「調整預設設定」。
在資訊面板的「記錄類型」分頁中,選取要啟用或停用的資料存取稽核記錄類型。
按一下 [儲存]。
在資訊面板中選取「Exempted Principals」(豁免主體) 分頁標籤。
在「新增豁免主體」中,輸入要豁免的主體,系統就不會為所選服務產生該主體的資料存取稽核記錄。
您可以根據需要多次點選「新增豁免主體」按鈕,新增多個主體。
如需有效主體的清單 (包括使用者和群組),請參閱
Binding
類型參考資料。在「Disabled Log Types」(已停用的記錄類型) 中,選取要停用的資料存取稽核記錄類型。
按一下 [儲存]。
使用 API 設定資料存取稽核記錄
本節說明如何使用 API 和 gcloud CLI,以程式輔助方式設定資料存取稽核記錄。
您也可以使用 Google Cloud 控制台執行許多這類工作;如需操作說明,請參閱本頁面的「透過 Google Cloud 控制台設定資料存取稽核記錄」一節。
身分與存取權管理政策物件
如要使用 API 設定資料存取稽核記錄,請編輯與 Google Cloud 專案、資料夾或機構相關聯的 IAM 政策。稽核記錄設定位於政策的 auditConfigs
區段:
"auditConfigs": [
{
object(AuditConfig)
}
]
詳情請參閱 IAM Policy 類型。
以下各節將詳細說明 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.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
常見設定
以下是專案的一些常見稽核記錄設定。 Google Cloud
啟用所有資料存取稽核記錄
下列 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
停用所有資料存取稽核記錄
如要停用Google Cloud 專案中的所有資料存取稽核記錄 (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
無論您的選擇為何,都請按照下列三個步驟執行:
- 使用其中一種
getIamPolicy
方法讀取目前政策。將政策儲存至暫存檔案。 - 編輯暫存檔案中的政策。
僅變更 (或新增)
auditConfigs
區段。 - 使用其中一種
setIamPolicy
方法,在暫存檔案中寫入已編輯的政策。
如果 Resource Manager 偵測到,在您於第一步中讀取政策之後,有其他人變更了該政策,setIamPolicy
會失敗。如果發生這種情況,請重複執行這三個步驟。
範例
下列範例說明如何使用 gcloud
指令和 Cloud Resource Manager API,設定專案的資料存取稽核記錄。
如要設定機構資料存取稽核記錄,請將「專案」版本的指令與 API 方法取代為「機構」版本。
gcloud
如要使用 gcloud projects
指令設定資料存取稽核記錄,請執行以下操作:
讀取專案的 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
「僅」新增或變更資料存取稽核記錄設定,以編輯
/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
如上例所示,政策開頭新增了四行。
寫入您的新身分與存取權管理政策:
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 設定資料存取稽核記錄,請執行下列操作:
將下列參數指定到 getIamPolicy API 方法,以讀取專案的身分與存取權管理政策:
- 資源:
projects/PROJECT_ID
- 要求主體:「空白」
這個方法會傳回目前的政策物件:
{ "version": 1, "etag": "BwXqwxkr40M=", "bindings": [ { "role": "roles/owner", "members": [ "user:myself@example.com" ] } ] }
上一個範例顯示專案的政策沒有
auditConfigs
區段。- 資源:
編輯目前政策:
變更或新增
auditConfigs
區段。如要停用資料存取稽核記錄,請為
auditConfigs:[]
區段加入空白值。保留
etag
的值。
您也可以從新政策物件中移除所有其他資訊,但請務必在下一個步驟中設定
updateMask
。 以下顯示編輯後的政策,該政策可啟用 Cloud SQLDATA_WRITE
稽核記錄:{ "policy": { "auditConfigs": [ { "auditLogConfigs": [ { "logType": "DATA_WRITE" } ], "service": "cloudsql.googleapis.com" } ], "etag": "BwXqwxkr40M=" }, "updateMask": "auditConfigs,etag" }
使用
setIamPolicy
API 方法指定下列參數,以寫入新政策:- 資源:
projects/PROJECT_ID
- 要求主體:包含編輯後的政策。
- 資源:
setIamPolicy
更新遮罩
本節說明 setIamPolicy
方法中 updateMask
參數的重要性,並說明為何必須謹慎使用 gcloud CLI set-iam-policy
指令,以免對專案或機構造成意外損害。 Google Cloud
setIamPolicy
API 方法使用 updateMask
參數控制更新的政策欄位。舉例來說,如果遮罩不含 bindings
,您就不會意外變更該政策部分。另一方面,如果遮罩包含 bindings
,則系統會「一律」更新這個區段。如果未加入 bindings
的更新值,系統會從政策中完全移除該區段。
呼叫 setIamPolicy
的 gcloud projects set-iam-policy
指令不允許您指定 updateMask
參數。而是會以下列方式計算 updateMask
的值:
updateMask
一律包含bindings
和etag
欄位。- 如果
set-iam-policy
中提供的政策物件包含其他任何頂層欄位,例如auditConfigs
,系統會將這些欄位新增至updateMask
。
根據這些規則,set-iam-policy
指令擁有下列行為:
如果您在新政策中省略
auditConfigs
區段,auditConfigs
區段之前的值 (若有) 不會變更,因為該區段並不在更新遮罩中。這一行為無害,但會讓人感到困惑。如果您在新政策物件中省略
bindings
,系統會將bindings
區段從您的政策中移除,因為這個區段會顯示在更新遮罩中。這一行為的傷害非常大,會讓所有主體都無法再存取您的 Google Cloud 專案。如果您在新政策物件中省略
etag
,這會停用對政策並行變更的檢查,且可能會導致您的變更意外覆寫其他人的變更。