使用訪客政策,在 Linux 和 Windows 虛擬機器 (VM) 執行個體之間維持一致的軟體設定。
如要在一組 VM 上設定訪客政策,請完成下列步驟:
- 為使用者指派必要權限。
- 設定 VM。
- 設定訪客政策 JSON 或 YAML 檔案。
- 建立訪客政策。
事前準備
- 查看 OS Config 配額。
-
如果尚未設定,請先設定驗證機制。「驗證」是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,以便對 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- 針對指定的 VM,系統會在代理程式向服務回報時更新訪客政策。這項檢查會每 10 到 15 分鐘執行一次。
- 這項舊版 OS 來賓政策不提供法規遵循資訊主頁、通知或快訊服務。未執行 OS 設定代理程式的 VM 不會回報失敗。為求最佳成效,請搭配OS Inventory Management 服務或任何其他法規遵循監控工具使用這項功能。
當您建立訪客政策時,具有特定名稱的軟體食譜只會執行一次。如要重新執行軟體食譜,請務必執行下列操作:
- 重新命名軟體食譜。
- 刪除並使用重新命名的軟體配方重新建立訪客政策。
- GuestPolicy 管理員 (
roles/osconfig.guestPolicyAdmin
):包含建立、刪除、更新、取得及列出訪客政策的權限。 - GuestPolicy 編輯者 (
roles/osconfig.guestPolicyEditor
):包含取得、更新及列出訪客政策的權限。 - GuestPolicy 檢視者 (
roles/osconfig.guestPolicyViewer
):包含取得及列出訪客政策的唯讀權限。 PROJECT_ID
:專案 ID。USER_ID
:使用者的 Google Workspace 使用者名稱。- 執行個體名稱。請參閱示例 1。
- 執行個體名稱前置字串。請參閱範例 2。
- 執行個體標籤。請參閱範例 3。
- 可用區。請參閱示例 4。
- 作業系統資訊,包含 OS 名稱、版本和架構。請參考範例 5。您可以使用 os-inventory describe 指令,判斷 VM 的 OS 名稱、版本和架構。
- 如要進一步瞭解如何為套件指派訪客政策,請參閱「套件 JSON 表示法」參考文件。
- 如要進一步瞭解如何為套件存放區指派訪客政策,請參閱 PackageRepository JSON 表示法參考文件。
- 作業系統:Red Hat Enterprise Linux 7
- 標籤:
color=red
- 只能包含小寫英文字母、數字和連字號
- 以英文字母開頭
- 結尾須為數字或英文字母
- 長度介於 1 至 63 個字元之間
- 每個政策 ID 在專案中不得重複
POLICY_ID
:您要建立的訪客政策名稱。FILE
:包含訪客政策規格的 JSON 或 YAML 檔案。如要查看設定範例,請參閱訪客政策 YAML 檔案範例。PROJECT_ID
:您的專案 ID。POLICY_ID
:訪客政策的名稱。- 進一步瞭解作業系統訪客政策 (舊版)。
- 管理訪客政策。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
詳情請參閱 Google Cloud 驗證說明文件中的「驗證以使用 REST」。
限制
權限
您可以使用訪客政策在 VM 上安裝及管理軟體套件,因此建立及管理訪客政策,就等同於授予 VM 遠端程式碼執行權限。
設定訪客政策時,IAM 權限會用於控管政策資源的存取權,並記錄活動稽核記錄。不過,使用者仍可在 VM 上執行程式碼,這可能會帶來安全性風險。為避免這種情況發生,建議您只為每位使用者提供必要的存取權。
專案擁有者具備建立及管理政策的完整權限。您必須授予其他使用者權限,您可以授予下列精細角色:
舉例來說,如要授予使用者管理員存取訪客政策的權限,請執行下列指令:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member user:USER_ID@gmail.com \ --role roles/osconfig.guestPolicyAdmin
更改下列內容:
設定 VM
如要使用訪客政策,您必須設定 VM 管理員。
設定訪客政策 yaml 或 JSON 檔案
您必須使用 JSON 或 YAML 檔案提供訪客政策規格。如要查看設定範例,請參閱訪客政策 YAML 檔案範例。
YAML 或 JSON 檔案包含下列兩個主要部分:
作業
您可以將訪客政策指派給專案中的所有 VM,也可以使用 JSON 或 YAML 檔案中的
assignment
鍵,將特定群組的 VM 設為目標。舉例來說,您可以使用下列任一特徵,指定一組 VM:
如要使用作業系統資訊指派訪客政策,OS Configuration 代理程式必須將作業系統資訊傳送至 VM 的訪客屬性端點。為確保隱私權,系統預設不會提供 VM 的作業系統資訊。如要依作業系統資訊將 VM 分組,您必須確保已啟用訪客屬性和 OS Inventory Management 服務。如要啟用這些服務,請參閱「設定 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
在具有下列任一執行個體名稱前置字串的所有 VM 執行個體上,使用 yum 套件管理工具安裝 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
範例 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"
如要進一步瞭解如何設定食譜政策,請參閱 SoftwareRecipe JSON 表示法參考文件。
範例 5
在符合下列條件的所有 VM 執行個體上執行內嵌指令碼,安裝軟體:
assignment: osTypes: - osShortName: rhel osVersion: "7" groupLabels: - labels: color: red recipes: - name: recipe-runscript desiredState: INSTALLED installSteps: - scriptRun: script: |- #!/bin/bash touch /TOUCH_FILE
如要進一步瞭解如何設定食譜政策,請參閱 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
如要進一步瞭解如何設定食譜政策,請參閱 SoftwareRecipe JSON 表示法參考文件。
建立訪客政策
建立訪客政策時,訪客政策的名稱必須符合下列命名規定:
請使用下列其中一種方法建立訪客政策。
gcloud
使用
os-config guest-policies create
指令建立訪客政策。gcloud beta compute os-config guest-policies create POLICY_ID \ --file=FILE
更改下列內容:
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 }
更改下列內容:
如要查看設定範例,請參閱訪客政策 YAML 檔案範例。
疑難排解
如要排解訪客政策問題,請參閱「偵錯訪客政策」。
後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-06-16 (世界標準時間)。
-