组织政策可让您以编程方式集中控制组织的资源。作为组织政策管理员,您可以为整个组织配置政策。
在此版本的 Google Distributed Cloud (GDC) air-gapped 中,没有组织政策的界面或 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 |
您不必为给定的服务指定所有种类。您可以通过仅指定相应的种类来限制对服务的部分功能的使用。
例如,如需限制对 Marketplace 服务的更新,请创建以下政策:
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
操作,前提是该 API 组的 kind 值为 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 将其删除。使用可让您访问定义政策的集群和 gdchrestrictedservice-policy-manager
IAM 角色的 kubeconfig 文件。
如需删除组织政策,请运行以下命令:
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"]