建立訪客政策 (舊版)

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

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

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

事前準備

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

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

    gcloud

    1. 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.

    2. Set a default region and zone.
    3. 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,系統會在代理程式向服務回報時更新訪客政策。這項檢查會每 10 到 15 分鐘執行一次。
  • 這項舊版 OS 來賓政策不提供法規遵循資訊主頁、通知或快訊服務。未執行 OS 設定代理程式的 VM 不會回報失敗。為求最佳成效,請搭配OS Inventory Management 服務或任何其他法規遵循監控工具使用這項功能。
  • 當您建立訪客政策時,具有特定名稱的軟體食譜只會執行一次。如要重新執行軟體食譜,請務必執行下列操作:

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

權限

您可以使用訪客政策在 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
  • 可用區。請參閱示例 4
  • 作業系統資訊,包含 OS 名稱、版本和架構。請參考範例 5。您可以使用 os-inventory describe 指令,判斷 VM 的 OS 名稱、版本和架構。

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

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

必要設定

您可以使用下列任一或多項工作來完成必要的設定:

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

訪客政策 YAML 檔案範例

範例 1

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

在具有下列任一執行個體名稱前置字串的所有 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-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"

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

如要進一步瞭解如何設定食譜政策,請參閱 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 表示法參考文件。

建立訪客政策

建立訪客政策時,訪客政策的名稱必須符合下列命名規定:

  • 只能包含小寫英文字母、數字和連字號
  • 以英文字母開頭
  • 結尾須為數字或英文字母
  • 長度介於 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 檔案範例

疑難排解

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

後續步驟