您可以使用 Workload Manager 建立及執行自動化評估作業,依據業界標準和 Google Cloud 最佳做法掃描工作負載。定期執行評估,可及早偵測各項專案的設定偏移和架構風險,進而提升工作負載的可靠性、安全性和效能。
您可以使用 Google Cloud 控制台或 Workload Manager API,建立及執行工作負載評估作業。如要瞭解評估作業的運作方式,請參閱「關於 Workload Manager 評估作業」。
限制
Workload Manager 支援每項專案每小時最多同時執行 25 項評估作業。如果專案有超過 25 項評估作業,請將每小時評估作業數量限制為 25 項,或將評估排程設為每 6 小時執行一次或更低頻率。
事前準備
建立及執行工作負載評估作業前,請先完成下列必要條件:
確認您要評估的 Google Cloud 資源已在目標專案中建立。如需支援的資源和規則清單,請參閱「Google Cloud 最佳做法參考資料」。
在您建立及執行評估作業的 Google Cloud 用戶專案中,啟用必要的 API:
如要根據自訂規則或最佳做法評估工作負載,請啟用 Cloud Asset API 和 Cloud Monitoring API。
如要評估應用程式或資料庫工作負載,請確認您已在執行工作負載的所有運算執行個體或叢集上,設定必要的代理程式或運算子:
選用:除了內建的 Google Cloud 最佳做法,如要加入自訂規則,請將
GoogleCloudPlatform/workload-managerGitHub 存放區中的範例規則,上傳至頂層包含/lib和/rules資料夾的 Cloud Storage bucket。如要進一步瞭解如何上傳自訂規則,請參閱「使用 Rego 編寫自訂規則」。如要建立及執行評估作業,請確認您具備必要角色和權限。
如果您使用 Workload Manager API 建立評估作業,請在用戶專案中手動建立 Workload Manager 服務代理,並授予下列角色:
目標專案中的 Workload Manager 服務代理 (
roles/workloadmanager.serviceAgent)。如果您設定評估排程,Workload Manager Worker (
roles/workloadmanager.worker) 會在用戶專案中執行。
使用 Google Cloud 控制台時,Workload Manager 會自動建立服務代理。如要進一步瞭解如何設定服務代理,請參閱「Workload Manager 服務代理」。
必要的角色
如要取得建立及執行工作負載評估作業所需的權限,請要求管理員授予您下列 IAM 角色:
-
建立及執行評估:用戶專案的 Workload Manager 評估管理員 (
roles/workloadmanager.evaluationAdmin) -
建立服務代理 (僅限首次評估):用戶和目標專案的專案 IAM 管理員 (
roles/resourcemanager.projectIamAdmin) -
讀取 Cloud Asset Inventory 資料 (自訂規則和最佳做法):用戶專案的 Cloud Asset 擁有者 (
roles/cloudasset.owner) -
從 Cloud Storage bucket 讀取自訂規則 (選用):用戶專案的 Storage 物件檢視者 (
roles/storage.objectViewer) -
建立警告通知 (選用):用戶專案的 Monitoring 指標寫入者 (
roles/monitoring.metricWriter) -
將評估結果匯出至 BigQuery (選用):用戶專案的 BigQuery 管理員 (
roles/bigquery.admin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備建立及執行工作負載評估所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
您必須具備下列權限,才能建立及執行工作負載評估:
-
建立並執行評估:
-
消費者專案的
workloadmanager.evaluations.create -
消費者專案的
workloadmanager.evaluations.run
-
消費者專案的
-
建立服務代理 (僅限首次評估):
resourcemanager.projects.setIamPolicy在用戶和目標專案上 -
讀取 Cloud Asset Inventory 資料 (自訂規則和最佳做法):
cloudasset.assets.searchAllResources在用戶專案中 -
從 Cloud Storage bucket 讀取自訂規則 (選用):
-
消費者專案的
storage.objects.get -
消費者專案的
storage.objects.list
-
消費者專案的
-
建立快訊通知 (選用):
monitoring.timeSeries.create在消費者專案上 -
將評估結果匯出至 BigQuery (選用):
-
消費者專案的
bigquery.datasets.get -
消費者專案的
bigquery.tables.create -
消費者專案的
bigquery.tables.updateData
-
消費者專案的
如要進一步瞭解用戶和目標專案的角色,請參閱「用於評估的用戶和目標專案 IAM 角色」和「Workload Manager IAM 角色和權限」。
建立工作負載評估
您可以使用 Google Cloud 控制台或 Workload Manager API 建立工作負載評估。如要建立使用自訂規則的評估作業,請參閱「使用自訂規則評估工作負載」。
控制台
如要在 Google Cloud 控制台建立工作負載評估作業,請按照下列步驟操作:
前往 Google Cloud 控制台的「Workload Manager」頁面。
選取要儲存及執行評估作業的 Google Cloud 消費者專案。
如果系統提示要啟用 Workload Manager 所需的 API,請按一下「Enable」(啟用)。
按一下「New evaluation」(新增評估)。
在「Name & rules」(名稱和規則) 窗格中,設定評估詳細資料,並選取要評估的規則:
針對「Evaluation name」(評估作業名稱) 的部分,輸入工作負載評估作業名稱。
選用:在「Description」(說明) 部分,輸入工作負載評估作業說明。
在「Workload type」(工作負載類型) 欄位中,選取下列其中一種支援的工作負載類型:
SAP
SQL Server
MySQL
Redis
OpenShift
自訂
選取「Custom」(自訂),即可依據Google Cloud 最佳做法或儲存在 Cloud Storage 的自訂規則評估工作負載。
在「Rules table」(規則表格) 中,選取要納入工作負載評估的最佳做法規則。如要進一步瞭解各項規則,請參閱「Google Cloud 最佳做法參考資料」。
按一下「繼續」。
在「Scope & filters」(範圍與篩選器) 窗格中,指定評估作業的目標專案和資源篩選器:
在「Evaluation scope」(評估範圍) 部分,按一下「Browse projects」(瀏覽專案),新增包含要評估資源的目標專案。
選用:如要跨目標專案共用規則發現項目,請勾選「Share findings」(共用發現項目) 核取方塊。詳情請參閱「分享評估結果」。
選用:在「Apply filters to resources」(對資源套用篩選器) 區段中,如要從目標專案選取特定資源,請按一下「Add filter」(新增篩選器),然後使用下列任一篩選器類型:
「服務帳戶」:依附加的服務帳戶篩選 Compute Engine 執行個體。
標籤:依鍵/值標籤組合篩選資源。
名稱:依資源 ID 模式篩選資源。
特定篩選器類型如有多個篩選器,系統會使用
OR邏輯。不同類型的篩選器會使用AND邏輯。如果出現提示,請選取要讓 Workload Manager 儲存評估資料的區域。
按一下「繼續」。
在「Frequency & notification」(頻率與通知) 窗格中,設定評估排程、匯出目的地和警告通知:
在「Scheduling」(排程) 部分,選取評估作業的執行頻率。
選用:如要將評估結果匯出至與評估作業位於相同區域的 BigQuery 資料集,請選取「儲存至 BigQuery 資料集」,並指定資料集。如要為評估作業建立獨立資料表,請選取「為這項評估作業建立新的結果資料表」。
選用步驟:在「Notification」(通知) 部分,選取要接收快訊通知的事件,然後選取通知管道。
按一下「繼續」。
在「Review」(檢查) 窗格中,檢查工作負載評估設定。如要修改任何設定,請按一下左側導覽面板中的面板名稱。
點選「建立」。
REST
如要使用 Workload Manager API 建立工作負載評估作業,請按照下列步驟操作:
選用:如要擷取工作負載類型可用的規則名稱清單,請將
GET要求傳送至projects.locations.rules.list方法:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "X-Goog-User-Project: CONSUMER_PROJECT_ID" \ "https://workloadmanager.googleapis.com/v1/projects/CONSUMER_PROJECT_ID/locations/LOCATION_ID/rules?evaluationType=EVALUATION_TYPE"更改下列內容:
如要建立評估作業,請向
projects.locations.evaluations.create方法傳送POST要求:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "X-Goog-User-Project: CONSUMER_PROJECT_ID" \ -d '{ "description": "DESCRIPTION", "evaluationType": "EVALUATION_TYPE", "ruleNames": [ "RULE_NAMES" ], "resourceFilter": { "scopes": [ "projects/TARGET_PROJECT_ID" ], "resourceIdPatterns": [ "RESOURCE_ID_PATTERNS" ], "inclusionLabels": { "LABEL_KEY": "LABEL_VALUE" }, "gceInstanceFilter": { "serviceAccounts": [ "SERVICE_ACCOUNT_EMAIL" ] } }, "schedule": "SCHEDULE", "bigQueryDestination": { "destinationDataset": "projects/BQ_PROJECT_ID/datasets/BQ_DATASET_ID", "createNewResultsTable": true } }' \ "https://workloadmanager.googleapis.com/v1/projects/CONSUMER_PROJECT_ID/locations/LOCATION_ID/evaluations?evaluationId=EVALUATION_ID"更改下列內容:
CONSUMER_PROJECT_ID::建立評估作業的用戶專案 IDLOCATION_ID:Workload Manager 儲存評估作業的支援區域,例如us-central1EVALUATION_ID:評估作業的專屬 IDDESCRIPTION:評估作業的說明EVALUATION_TYPE:工作負載評估類型,例如SAP、SQL_SERVER、MYSQL、REDIS、OPENSHIFT或OTHERRULE_NAMES:以逗號分隔的清單,列出要納入評估的規則 IDTARGET_PROJECT_ID:目標專案的專案 ID 或專案編號,其中包含要評估的資源RESOURCE_ID_PATTERNS:選用的資源名稱模式,用於篩選評估的資源,例如//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance*LABEL_KEY和LABEL_VALUE:選用的鍵/值標籤組合,用於篩選資源SERVICE_ACCOUNT_EMAIL:選用的服務帳戶電子郵件地址,用於篩選 Compute Engine 執行個體SCHEDULE:選用的 Cron 運算式 (世界標準時間),用於定期執行評估,例如0 */6 * * *表示每 6 小時執行一次BQ_PROJECT_ID和BQ_DATASET_ID:選用的專案 ID 和區域 BigQuery 資料集 ID,用於匯出評估結果
如要進一步瞭解支援的欄位,請參閱
Evaluation資源參考資料。
執行工作負載評估作業
除了定期執行評估作業,您也可以隨時使用 Google Cloud 控制台或 Workload Manager API,視需要執行現有的工作負載評估作業。
控制台
如要在 Google Cloud 控制台執行工作負載評估作業,請按照下列步驟操作:
前往 Google Cloud 控制台的「Workload Manager」頁面。
按一下要執行的評估作業名稱。
按一下「Evaluation information」(評估作業資訊) 頁面中的「Run」(執行)。
工作負載評估作業需要幾分鐘才能完成。請等待評估執行作業完成,再查看最新結果。
REST
如要使用 Workload Manager API 執行工作負載評估作業,請將 POST 要求傳送至 projects.locations.evaluations.executions.run 方法:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-H "X-Goog-User-Project: CONSUMER_PROJECT_ID" \
-d '{
"executionId": "EXECUTION_ID"
}' \
"https://workloadmanager.googleapis.com/v1/projects/CONSUMER_PROJECT_ID/locations/LOCATION_ID/evaluations/EVALUATION_ID/executions:run"
更改下列內容:
CONSUMER_PROJECT_ID:儲存評估作業的消費者專案 ID。LOCATION_ID:評估作業所在區域,例如us-central1。EVALUATION_ID:要執行的評估作業 ID。EXECUTION_ID:這個執行作業的專屬 ID (選用)。如要讓 Workload Manager 自動產生 ID,請略過這個欄位。
這項要求會傳回長時間執行的 Operation。如要查看執行狀態或列出結果,請使用 projects.locations.evaluations.executions.get 和 projects.locations.evaluations.executions.results.list 方法。
分享評估結果
分享評估結果後,目標專案的資源擁有者就能在本機專案控制台和整合頁面 (例如 Compute Engine) 查看設定結果。這項功能不需要直接透過 IAM 存取用戶端專案。
編輯評估作業以分享發現項目
如要啟用或停用現有評估作業的發現項目共用功能,請按照下列步驟操作:
前往 Google Cloud 控制台的「Workload Manager」頁面。
按一下要編輯的評估作業名稱。
按一下 [編輯]。
在「範圍和篩選器」部分,勾選或取消勾選「共用發現項目」核取方塊。
按一下「儲存」。
共用發現項目的瀏覽權限
啟用「分享發現項目」後,Workload Manager 會將規則發現項目,傳播至評估範圍內指定的所有目標專案。您可以在「規則發現項目」分頁和整合頁面 (例如 Compute Engine「總覽」頁面) 查看發現項目。
停用「Share findings」(共用發現項目) 後,Workload Manager 會停止將規則發現項目傳播至目標專案,且發現項目只會顯示在用戶專案中。
設定評估作業的快訊通知
您可以設定快訊通知,讓 Workload Manager 在發生特定評估事件時 (例如評估偵測到新發現項目或無法執行),通知您選擇的通知管道。如果您在建立評估作業時未設定快訊通知,可以按照下列步驟,在 Google Cloud 控制台為現有評估作業新增或更新通知:
前往 Google Cloud 控制台的「Workload Manager」頁面。
點按要啟用警告通知的評估作業名稱。
按一下 [編輯]。
選取「Notification」(通知) 專區。
依序選取要接收快訊通知的事件和通知管道。
按一下「儲存」。