建立訪客政策 (舊版)

使用訪客政策,在 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.

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the 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.

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

限制

  • 針對指定的 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 檔案範例

疑難排解

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

後續步驟