使用訪客政策,在 Linux 和 Windows 虛擬機器 (VM) 執行個體中維持一致的軟體設定。
如要為一組 VM 設定訪客政策,請完成下列步驟:
- 將必要權限指派給使用者。
- 設定 VM。
- 設定訪客政策 JSON 或 YAML 檔案。
- 建立訪客政策。
事前準備
- 查看 OS Config 配額。
-
如果尚未設定驗證,請先完成設定。驗證機制會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
gcloud
-
安裝 Google Cloud CLI。 安裝完成後,請執行下列指令,初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。
限制
- 對於目標 VM,每次代理程式向服務回報時,訪客政策都會更新。這項檢查每 10 到 15 分鐘執行一次。
- 這項舊版 OS 訪客政策不提供法規遵循資訊主頁、通知或警告服務。未執行 OS 設定代理程式的 VM 不會回報失敗。為獲得最佳效果,請搭配使用這項功能與 OS 庫存管理服務,或任何其他法規遵循監控工具。
建立訪客政策時,具有特定名稱的軟體配方只會執行一次。如要重新執行軟體 recipe,請務必完成下列操作:
- 重新命名軟體配方。
- 使用重新命名的軟體配方,刪除並重新建立訪客政策。
權限
由於您可以使用訪客政策在 VM 上安裝及管理軟體套件,因此建立及管理訪客政策等同於授予 VM 的遠端程式碼執行權限。
設定訪客政策時,系統會使用 IAM 權限控管政策資源的存取權,並記錄活動稽核記錄。不過,使用者仍可在 VM 上執行程式碼,這可能會造成安全風險。為降低這類風險,建議您只為每位使用者提供必要的存取權。
專案擁有者具備完整權限,可建立及管理政策。您必須為所有其他使用者授予權限。您可以授予下列其中一個精細角色:
- GuestPolicy 管理員 (
roles/osconfig.guestPolicyAdmin):具備建立、刪除、更新、取得及列出訪客政策的權限。 - GuestPolicy 編輯者 (
roles/osconfig.guestPolicyEditor):具備取得、更新及列出訪客政策的權限。 - GuestPolicy 檢視者 (
roles/osconfig.guestPolicyViewer):具備唯讀存取權限,可取得及列出訪客政策。
舉例來說,如要授予使用者訪客政策的管理員存取權,請執行下列指令:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member user:USER_ID@gmail.com \
--role roles/osconfig.guestPolicyAdmin
更改下列內容:
PROJECT_ID:專案 ID。USER_ID:使用者的 Google Workspace 使用者名稱。
設定 VM
如要使用訪客政策,請設定 VM 管理員。
設定訪客政策 YAML 或 JSON 檔案
您必須使用 JSON 或 YAML 檔案提供訪客政策規格。如要查看設定範例,請參閱訪客政策 YAML 檔案範例。
YAML 或 JSON 檔案包含下列兩個主要部分:
作業
您可以將訪客政策指派給專案中的所有 VM,也可以使用 JSON 或 YAML 檔案中的 assignment 鍵,指定特定 VM 群組。
舉例來說,您可以使用下列任一特徵指定一組 VM:
- 執行個體名稱。請參閱範例 1。
- 執行個體名稱前置字串。請參閱範例 2。
- 執行個體標籤。請參閱範例 3。
- Zone。請參閱範例 4。
- 作業系統資訊,包括 OS 名稱、版本和架構。請參閱範例 5。os-inventory describe 指令可用於判斷 VM 的 OS 名稱、版本和架構。
如要使用作業系統資訊指派訪客政策,OS 設定代理程式必須將作業系統資訊傳送至 VM 的訪客屬性端點。為確保隱私,系統預設不會提供 VM 的作業系統資訊。如要依作業系統資訊將 VM 分組,請務必啟用訪客屬性和 OS 庫存管理服務。如要啟用這些服務,請參閱「設定 VM」。
訪客政策設定會自動套用至符合指派條件的所有新 VM。
必要設定
您可以透過下列任一工作或組合,完成必要設定:
訪客政策 YAML 檔案範例
範例 1
安裝套件 my-package,並在下列 VM 執行個體中保持最新狀態:my-instance-1 和 my-instance-2。
assignment: instances: - zones/us-east1-c/instances/my-instance-1 - zones/us-east1-c/instances/my-instance-2 packages: - name: "my-package" desiredState: UPDATED
如要進一步瞭解如何指派套件的訪客政策,請參閱套件 JSON 表示法參考文件。
範例 2
使用 yum 套件管理工具,在所有 VM 執行個體上安裝 Cloud Monitoring 代理程式,這些執行個體的名稱前置字串必須為 test-instance- 或 dev-instance-。
assignment:
instanceNamePrefixes:
- "test-instance-"
- "dev-instance-"
packages:
- name: "stackdriver-agent"
desiredState: INSTALLED
manager: YUM
packageRepositories:
- yum:
id: google-cloud-monitoring
displayName: "Google Cloud Monitoring Agent Repository"
baseUrl: https://packages.cloud.google.com/yum/repos/google-cloud-monitoring-el7-x86_64-all
gpgKeys:
- https://packages.cloud.google.com/yum/doc/yum-key.gpg
- https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
如要進一步瞭解如何為套件存放區指派訪客政策,請參閱 PackageRepository JSON 表示法參考文件。
範例 3
安裝 my-package,並從具有特定標籤組合的執行個體中移除 bad-package-1 和 bad-package-2。此外,也請新增 apt 和 yum 套件管理工具的存放區。
assignment:
# Assign to VM instances where `(label.color=red AND label.env=test) OR (label.color=blue AND label.env=test)`
groupLabels:
- labels:
color: red
env: test
- labels:
color: blue
env: test
packages:
- name: "my-package"
desiredState: INSTALLED
- name: "bad-package-1"
desiredState: REMOVED
- name: "bad-package-2"
desiredState: REMOVED
manager: APT # Only apply this to systems with APT.
packageRepositories:
- apt: # Only apply this to systems with APT.
uri: "https://packages.cloud.google.com/apt"
archiveType: DEB
distribution: cloud-sdk-stretch
components:
- main
- yum: # Only apply this to systems with YUM.
id: google-cloud-sdk
displayName: "Google Cloud SDK"
baseUrl: https://packages.cloud.google.com/yum/repos/cloud-sdk-el7-x86_64
gpgKeys:
- https://packages.cloud.google.com/yum/doc/yum-key.gpg
- https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
- 如要進一步瞭解如何指派套件的訪客政策,請參閱套件 JSON 表示法參考文件。
- 如要進一步瞭解如何為套件存放區指派訪客政策,請參閱 PackageRepository JSON 表示法參考文件。
範例 4
從託管於 Cloud Storage 的 MSI,將軟體安裝到 us-east1-b 和 us-east1-d 中的所有執行個體。
assignment:
zones:
- us-east1-b
- us-east1-d
recipes:
- name: "swr-msi-gcs"
desiredState: INSTALLED
artifacts:
- id: "the-msi"
gcs:
bucket: "my-bucket"
object: "executable.msi" # full URI gs://my-bucket/executable.msi#nnnnn
generation: 1546030865175603
installSteps:
- msiInstallation:
artifactId: "the-msi"
如要進一步瞭解如何設定 recipe 政策,請參閱 SoftwareRecipe JSON 表示法參考文件。
範例 5
在符合下列所有條件的 VM 執行個體上執行內嵌指令碼,藉此安裝軟體:
- 作業系統:Red Hat Enterprise Linux 7
- 標籤:
color=red
assignment:
osTypes:
- osShortName: rhel
osVersion: "7"
groupLabels:
- labels:
color: red
recipes:
- name: recipe-runscript
desiredState: INSTALLED
installSteps:
- scriptRun:
script: |-
#!/bin/bash
touch /TOUCH_FILE
如要進一步瞭解如何設定 recipe 政策,請參閱 SoftwareRecipe JSON 表示法參考文件。
範例 6
使用具有下列執行個體名稱前置字串的可執行安裝程式,在所有 Windows 執行個體上安裝應用程式:test-instance-。
assignment:
instanceNamePrefixes:
- "test-instance-"
osTypes:
- osShortName: WINDOWS
recipes:
- name: windows-install-exe-example
desiredState: INSTALLED
artifacts:
- id: installer
gcs:
bucket: my-bucket
generation: '1597013478912389'
object: MyApp.Installer.x64.exe
installSteps:
- fileExec:
artifactId: installer
args:
- /S # Installation must be silent
如要進一步瞭解如何設定 recipe 政策,請參閱 SoftwareRecipe JSON 表示法參考文件。
建立訪客政策
建立訪客政策時,訪客政策的名稱必須符合下列命名規定:
- 只能使用小寫英文字母、數字和連字號
- 以英文字母開頭
- 結尾須為數字或英文字母
- 長度介於 1 至 63 個字元之間
- 專案中的政策 ID 不得重複
使用下列其中一種方法建立訪客政策。
gcloud
使用 os-config guest-policies create 指令建立訪客政策。
gcloud beta compute os-config guest-policies create POLICY_ID \
--file=FILE
更改下列內容:
POLICY_ID:要建立的訪客政策名稱。FILE:包含訪客政策規格的 JSON 或 YAML 檔案。如要查看設定範例,請參閱「訪客政策 YAML 檔案範例」。
REST
在 API 中建立目標為 projects.guestPolicies.create 方法的 POST 要求。
POST https://osconfig.googleapis.com/v1beta/projects/PROJECT_ID/guestPolicies?guestPolicyId=POLICY_ID
{
For more information, see Guest policy JSON
}
更改下列內容:
PROJECT_ID:您的專案 ID。POLICY_ID:訪客政策的名稱。
如要查看設定範例,請參閱訪客政策 YAML 檔案範例。
疑難排解
如要排解訪客政策問題,請參閱「對訪客政策進行偵錯」。
後續步驟
- 進一步瞭解 OS 訪客政策 (舊版)。
- 管理訪客政策。