建立訪客政策 (舊版)

使用客體政策,在 Linux 和 Windows 虛擬機器 (VM) 執行個體中,維持一致的軟體設定

如要在 VM 組合中設定訪客政策,請完成下列步驟:

  1. 將必要權限指派給使用者
  2. 設定 VM
  3. 設定訪客政策 JSON 或 YAML 檔案
  4. 建立訪客政策

事前準備

  • 查看 OS 設定配額
  • 如果尚未設定驗證,請先完成設定。 「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列任一選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    gcloud

    1. 安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    2. Set a default region and zone.

    REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI

    詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

限制

  • 對於目標 VM,每次代理程式向服務回報時,系統都會更新訪客政策。這項檢查每 10 到 15 分鐘執行一次。
  • 使用舊版 OS 客戶政策時,無法使用合規性資訊主頁、通知或快訊服務。如果 VM 未執行 OS 設定代理程式,就不會回報失敗。為求最佳成效,請搭配作業系統清單管理服務或任何其他法規遵循監控工具使用這項功能。
  • 軟體配方具有特定名稱,且只會在您建立客體政策時執行一次。如要重新執行軟體配方,請按照下列步驟操作:

    1. 重新命名軟體配方。
    2. 刪除並重新建立訪客政策,使用重新命名的軟體配方。

權限

由於您可以使用訪客政策在 VM 上安裝及管理軟體套件,因此建立及管理訪客政策等同於授予 VM 的遠端程式碼執行存取權。

設定訪客政策時,系統會使用 IAM 權限控管政策資源的存取權,並記錄稽核活動。不過,使用者仍可在 VM 上執行程式碼,這可能會造成安全風險。為減輕這類風險,建議您只授予每位使用者必要的存取權。

專案擁有者有完整的權限,可建立及管理政策。 如要授予其他使用者權限,您可以授予下列其中一項精細角色:

  • GuestPolicy 管理員 (roles/osconfig.guestPolicyAdmin)。包含建立、刪除、更新、取得及列出 GuestPolicy 的權限。
  • 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
  • 可用區。請參閱範例 4
  • 作業系統資訊,包括作業系統名稱、版本和架構。請參閱範例 5。您可以使用 os-inventory describe 指令,判斷 VM 的 OS 名稱、版本和架構。

如要使用作業系統資訊指派訪客政策,OS Configuration 代理程式必須將作業系統資訊傳送至 VM 的訪客屬性端點。為確保隱私權,系統預設不會提供 VM 的作業系統資訊。如要依作業系統資訊將 VM 分組,請務必啟用訪客屬性和 OS Inventory Management 服務。如要啟用這些服務,請參閱「設定 VM」。

系統會自動將訪客政策設定套用至所有符合指派條件的新 VM。

必要設定

如要完成必要設定,請執行下列任一或多項工作:

  • 安裝、移除及自動更新軟體套件。請參閱範例 1
  • 設定軟體套件存放區。請參閱範例 1範例 3
  • 使用軟體配方安裝軟體。

訪客政策 YAML 檔案範例

範例 1

在下列 VM 執行個體上安裝 my-package 套件,且必須保持最新狀態:my-instance-1my-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-1bad-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-bus-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"

如要進一步瞭解如何設定配方政策,請參閱軟體配方 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

如要進一步瞭解如何設定配方政策,請參閱軟體配方 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

如要進一步瞭解如何設定配方政策,請參閱軟體配方 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 檔案

疑難排解

如要排解訪客政策問題,請參閱「偵錯訪客政策」。

後續步驟