機構政策可讓您透過程式以集中方式控管機構資源。身為組織政策管理員,您可以設定整個機構的政策。
在這個版本的 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
:這項政策禁止的作業群組。允許的值為CREATE
和UPDATE
。disabledOperations
欄位的預設值為*
。
GDCHRestrictedService
政策僅支援 UPDATE
和 CREATE
作業。如要限制 GET
、LIST
和 DELETE
作業,建議您使用 IAM 指派角色。
GDCHRestrictedService
政策僅支援 GDC 上的下列可用服務子集。
服務 | API 群組 | 種類 |
---|---|---|
Marketplace | marketplace.gdc.goog |
MarketplaceService
|
Vertex AI Workbench | aiplatform.gdc.goog |
Notebook
|
資料庫服務 - Postgres | postgresql.dbadmin.gdc.goog |
|
資料庫服務 - Oracle | oracle.dbadmin.gdc.goog |
|
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
參數中列出 CREATE
和 UPDATE
,並列出此處記錄的所有種類。
授予 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"]