設定機構政策

機構政策可讓您透過程式以集中方式控管機構資源。身為組織政策管理員,您可以設定整個機構的政策。

在這個版本的 Google Distributed Cloud (GDC) 實體隔離方案中,沒有機構政策的 UI 或 CLI。您必須使用 API 或 kubectl CLI 管理這些項目。

優點

設定機構政策有下列好處:

  • 集中控管設定限制,以控制如何使用機構資源。
  • 確立防範機制,使開發小組遵循法律規範。
  • 協助專案擁有者及其團隊快速發展,無需擔心違規。

與 Identity and Access Management 的差異

Identity and Access Management 著重於,也就是可以讓管理員根據權限,授權使用者對特定資源執行操作。

機構政策著重於,可讓管理員針對特定資源設定限制,以決定其配置方式。

可用的機構政策類型清單

在此版本的 GDC 中,您可以使用下列政策類型。

GDCHRestrictedService

GDCHRestrictedService 政策類型可讓您限制在 GDC 上使用的服務。套用後,這項政策會禁止使用其參照的 API。舉例來說,您可以使用這類政策,限制特定專案使用特定服務。您也可以使用這項政策完全限制對新 GDC 服務的存取權,在允許團隊使用前先進行測試。

在與服務資源相同的叢集中建立這項政策。您可以為不同服務或專案建立多個這項政策的執行個體。

這項政策的範本如下:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: POLICY_NAME
spec:
  match:
    MATCH_SCHEMA
  parameters:
    disabledOperations:
      - DISABLED_OPERATION

更改下列內容:

  • POLICY_NAME:機構政策的名稱。

  • MATCH_SCHEMA:要比對此限制的資源。詳情請參閱「在叢集內定義組織政策的範圍」一節。

  • DISABLED_OPERATION:這項政策禁止的作業群組。允許的值為 CREATEUPDATEdisabledOperations 欄位的預設值為 *

GDCHRestrictedService 政策僅支援 UPDATECREATE 作業。如要限制 GETLISTDELETE 作業,建議您使用 IAM 指派角色。

GDCHRestrictedService 政策僅支援 GDC 上的下列可用服務子集。

服務 API 群組 種類
Marketplace marketplace.gdc.goog MarketplaceService
Vertex AI Workbench aiplatform.gdc.goog Notebook
資料庫服務 - Postgres postgresql.dbadmin.gdc.goog
  • DBCluster
  • BackupPlan
  • Import
  • Restore
資料庫服務 - Oracle oracle.dbadmin.gdc.goog
  • DBCluster
  • BackupPlan
  • Import
Transfer Appliance system.gpc.gke.io TransferApplianceRequest
備份 backup.gdc.goog BackupRepositoryManager
Dataproc Container for Spark (Marketplace 服務) sparkoperator.k8s.io SparkApplication

您不必為特定服務指定所有種類。您只能指定對應種類,藉此限制使用部分服務功能。

舉例來說,如要限制市集服務的更新,請建立下列政策:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: no-update-to-marketplace-service
spec:
  match:
    kinds:
    - apiGroups:
      - "marketplace.gdc.goog"
      kinds:
      - MarketplaceService
  parameters:
    disabledOperations:
      - "UPDATE"

這項政策會禁止對任何 marketplace.gdc.goog API 群組執行任何 UPDATE 作業,且其種類的值為 MarketplaceService。這項政策實際上會禁止任何人修改任何 Marketplace 服務。

如要完全停用服務,請在 disabledOperations 參數中列出 CREATEUPDATE,並列出此處記錄的所有種類。

授予 IAM 角色來管理機構政策

每項機構政策都與 IAM 角色相關聯。將 IAM 角色授予要管理特定組織政策的使用者和群組。如要授權使用者或群組建立、更新或刪除 GDCHRestrictedService 類型的政策,請將 gdchrestrictedservice-policy-manager IAM 角色指派給該使用者或群組。

定義叢集內的機構政策範圍

定義機構政策時,請決定政策應影響所有命名空間、僅影響特定命名空間,還是影響除了指定清單以外的所有命名空間。如要達成這個目標,請一併使用政策定義的 .spec.match.excludedNamespaces.spec.match.namespaceSelector.spec.match.namespaces.spec.match.scope 參數。

請參閱機構政策比對部分頁面,進一步瞭解這些參數。舉例來說,如要只允許在具有 owner: dba-team 標籤的命名空間中建立資料庫,請建立下列政策:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: db-restricted-to-dbas
spec:
  match:
    scope: Namespaced
    namespaceSelector:
      matchExpressions:
      # We are restricting the use of the service in namespaces that
      # don't have the owner: dba-team label
      - key: owner
        operator: NotIn
        values:
        - dba-team
    kinds:
    - apiGroups:
      - "postgresql.dbadmin.gdc.goog"
      kinds:
      - DBCluster
      - BackupPlan
      - Import
      - Restore
    - apiGroups:
      - "oracle.dbadmin.gdc.goog"
      kinds:
      - DBCluster
      - BackupPlan
      - Import
  parameters:
    disabledOperations:
      - "UPDATE"
      - "CREATE"

復原現有政策

如要停止強制執行現有政策,請使用 kubectl CLI 刪除政策。使用可讓您存取叢集的 kubeconfig 檔案,該叢集定義了政策和 gdchrestrictedservice-policy-manager IAM 角色。

如要刪除機構政策,請執行:

kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
    GDCHRestrictedService/POLICY_NAME

更改下列內容:

  • CLUSTER_KUBECONFIG:機構政策所在叢集的 kubeconfig 檔案。

  • POLICY_NAME:要刪除的機構政策名稱。

在稽核模式下測試政策

您可以測試政策,不必強制執行。測試政策,確保政策不會破壞現有系統,再推出政策,或估算某種行為的普遍程度。如要新增測試,請在政策定義中加入 enforcementAction。這個參數有三個可能的值:

  • deny:政策已強制執行。這是預設設定。
  • dryrun:系統允許這項操作,但您可以在稽核記錄和政策狀態中看到政策違規情形。使用 kubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME 檢查違規情形。
  • warn:與 dryrun 相同,但測試也會在回應中顯示警告,指出要求觸發了政策違規。

舉例來說,如要測試停用 Marketplace 的政策,請建立下列政策:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
  name: disable-marketplace-service-project-alice
Spec:
  enforcementAction: warn
  match:
    kinds:
      - apiGroups: ["marketplace.gdc.goog"]
        kinds: ["MarketplaceService"]