本文說明如何在裸機上使用 Google Distributed Cloud (僅限軟體) 的 Cloud 稽核記錄。Google Distributed Cloud 使用 Kubernetes 稽核記錄,依時間順序記錄對叢集 Kubernetes API 伺服器發出的呼叫。稽核記錄適合用於調查可疑的 API 要求,以及收集統計資料。如要瞭解 GKE On-Prem API 的稽核記錄,請參閱「Cloud API 稽核記錄」。
關於 Cloud 稽核記錄
稽核記錄會寫入Cloud 稽核記錄的Google Cloud 專案中。相較於寫入磁碟或在內部部署記錄系統中擷取記錄,寫入 Cloud 稽核記錄有以下幾項優點:
- 您可以集中管理所有 GKE 叢集的稽核記錄。
- 寫入 Cloud 稽核記錄的記錄項目無法變更。
- Cloud 稽核記錄項目會保留 400 天。
- Google Distributed Cloud 軟體專屬版價格已包含 Cloud Audit Logs 功能。
- 您可以將 Google Distributed Cloud 設定為將記錄寫入磁碟或 Cloud 稽核記錄。
以磁碟為基礎的稽核記錄
如果明確停用 Cloud 稽核記錄,稽核記錄會寫入永久磁碟,因此叢集重新啟動和升級不會導致記錄消失。Google Distributed Cloud 軟體最多只會保留 1 GiB 的稽核記錄項目。
登入控制層節點,即可存取磁碟型稽核記錄。記錄檔位於 /var/log/apiserver/
目錄中。
Cloud 稽核記錄
所有 Kubernetes API 伺服器的管理員活動稽核記錄項目,都會傳送至Google Cloud,並使用您建立使用者叢集時指定的專案和位置。為將記錄項目緩衝處理並寫入 Cloud 稽核記錄,Google Distributed Cloud 會部署 audit-proxy
精靈集,在控制層節點上執行。
限制
在裸機上,Cloud 稽核記錄有下列限制:
- 不支援資料存取記錄。
- 不支援修改 Kubernetes 稽核政策。
- Cloud 稽核記錄無法在長時間網路中斷期間正常運作。如果無法將記錄檔項目匯出至 Google Cloud,系統會將這些項目快取到 10 GiB 的磁碟緩衝區。如果緩衝區已滿,系統會捨棄最舊的項目。
- 一個專案最多可支援約 1000 個服務帳戶,用於 Cloud 稽核記錄。多個叢集可使用同一個服務帳戶。
為 Cloud 稽核記錄建立服務帳戶
如要搭配 Google Distributed Cloud 軟體使用 Cloud Logging 和 Cloud Monitoring,請先設定下列項目:
如果沒有,請在 Google Cloud 專案中建立 Cloud Monitoring 工作區。
在 Google Cloud 控制台中,按一下下列按鈕,然後按照工作流程操作。
點選下列按鈕,啟用必要的 API:
將下列 IAM 角色指派給 Stackdriver 代理程式使用的服務帳戶:
logging.logWriter
monitoring.metricWriter
stackdriver.resourceMetadata.writer
monitoring.dashboardEditor
存取 Cloud 稽核記錄
控制台
前往 Google Cloud 控制台的「Logging」選單,然後點選「Logs Explorer」頁面。
如果開啟「舊版記錄檢視器」頁面,請從「升級」下拉式選單中選擇「升級至新的記錄檔探索工具」。
按一下「查詢」,即可存取提交查詢的欄位。
在欄位中填入下列查詢:
resource.type="k8s_cluster" logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity" protoPayload.serviceName="anthosgke.googleapis.com"
將
PROJECT_ID
替換為您的專案 ID。按一下「執行查詢」,即可顯示已設定登入這個專案的叢集中的所有稽核記錄。
gcloud
列出專案管理員活動記錄中,對應到 k8s_cluster
資源類型的前兩個記錄項目:
gcloud logging read \
'logName="projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity" \
AND resource.type="k8s_cluster" \
AND protoPayload.serviceName="anthosgke.googleapis.com" ' \
--limit 2 \
--freshness 300d
將 PROJECT_ID
替換為您的專案 ID。
輸出會顯示兩個記錄項目。請注意,每個記錄項目的 logName
欄位都有 projects/PROJECT_ID/logs/externalaudit.googleapis.com%2Factivity
值,且 protoPayload.serviceName
等於 anthosgke.googleapis.com
。
稽核政策
Kubernetes 稽核政策會定義事件記錄為記錄項目時應遵循的規則,並指定應該納入記錄項目之中的資料。系統不支援變更這項政策,藉此修改 Cloud Audit Logs 行為。