Las políticas de organización te permiten controlar los recursos de tu organización de forma centralizada y programática. Como administrador de políticas de la organización, puedes configurar políticas en toda tu organización.
En esta versión de Google Distributed Cloud (GDC) con air gap, no hay interfaz de usuario ni CLI para las políticas de la organización. Debes usar la API o la CLI de kubectl
para gestionarlos.
Ventajas
Configurar políticas de organización ofrece varias ventajas:
- Centraliza el control para configurar restricciones sobre cómo usar los recursos de tu organización.
- Define y establece directrices para que tus equipos de desarrollo se mantengan dentro de los límites de cumplimiento.
- Ayuda a los propietarios de proyectos y a sus equipos a avanzar rápidamente sin incumplir las normativas.
Diferencias con Gestión de Identidades y Accesos
Gestión de Identidades y Accesos se centra en quién y permite al administrador autorizar quién puede realizar acciones en recursos específicos en función de los permisos.
Las políticas de organización se centran en qué y permiten que el administrador establezca restricciones en recursos específicos para determinar cómo configurarlos.
Lista de tipos de políticas de la organización disponibles
En esta versión de GDC, puedes usar el siguiente tipo de política.
GDCHRestrictedService
El tipo de política GDCHRestrictedService
te permite restringir qué servicio puedes usar en GDC. Cuando se aplica, la política impide el uso de las APIs a las que hace referencia. Por ejemplo, puedes usar este tipo de política para restringir el uso de un servicio concreto a determinados proyectos. También puedes usar la política para restringir por completo el acceso a un nuevo servicio de GDC en el que quieras hacer pruebas antes de permitir que tus equipos lo usen.
Crea esta política en el mismo clúster que los recursos de servicio. Puedes crear varias instancias de esta política para diferentes servicios o proyectos.
A continuación, se muestra una plantilla para esta política:
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: GDCHRestrictedService
metadata:
name: POLICY_NAME
spec:
match:
MATCH_SCHEMA
parameters:
disabledOperations:
- DISABLED_OPERATION
Haz los cambios siguientes:
POLICY_NAME
: el nombre de la política de organización.MATCH_SCHEMA
: los recursos que deben coincidir con esta restricción. Consulta la sección Definir el ámbito de una política de organización en un clúster para obtener más información.DISABLED_OPERATION
: los grupos de operaciones que bloquea esta política. Los valores permitidos sonCREATE
yUPDATE
. El valor predeterminado del campodisabledOperations
es*
.
La política GDCHRestrictedService
solo admite las operaciones UPDATE
y CREATE
. Para restringir las operaciones GET
, LIST
y DELETE
, te recomendamos que uses la gestión de identidades y accesos para asignar roles.
La política GDCHRestrictedService
solo admite el siguiente subconjunto de los servicios disponibles en GDC.
Servicio | Grupo de APIs | tipos |
---|---|---|
Marketplace | marketplace.gdc.goog |
MarketplaceService
|
Vertex AI Workbench | aiplatform.gdc.goog |
Notebook
|
Servicio de base de datos - Postgres | postgresql.dbadmin.gdc.goog |
|
Servicio de base de datos - Oracle | oracle.dbadmin.gdc.goog |
|
Transfer Appliance | system.gpc.gke.io |
TransferApplianceRequest |
Copia de seguridad | backup.gdc.goog |
BackupRepositoryManager |
Contenedor de Dataproc para Spark (servicio de Marketplace) | sparkoperator.k8s.io |
SparkApplication |
No es necesario que especifiques todos los tipos de un servicio determinado. Puedes restringir el uso de un subconjunto de las funciones de un servicio especificando solo los tipos correspondientes.
Por ejemplo, para restringir las actualizaciones de los servicios de mercado, crea la siguiente política:
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"
Esta política impide cualquier operación de UPDATE
en cualquier grupo de APIs de marketplace.gdc.goog
con el valor MarketplaceService
en su tipo. En la práctica, esta política impide que nadie modifique ningún servicio de Marketplace.
Para inhabilitar completamente un servicio, incluya CREATE
y UPDATE
en el parámetro disabledOperations
, así como todos los tipos que se indican en este artículo.
Otorgar roles de gestión de identidades y accesos para gestionar políticas de la organización
Cada política de la organización tiene un rol de gestión de identidades y accesos asociado. Concede el rol de gestión de identidades y accesos a los usuarios y grupos que quieras que gestionen esa política de organización específica. Para permitir que un usuario o un grupo cree, actualice o elimine políticas de tipo GDCHRestrictedService
, asigna al usuario o al grupo el rol de IAM gdchrestrictedservice-policy-manager
.
Definir el ámbito de una política de organización en un clúster
Al definir una política de organización, decide si debe afectar a todos los espacios de nombres, solo a algunos específicos o a todos los espacios de nombres excepto a una lista determinada. Para ello, usa una combinación de los parámetros .spec.match.excludedNamespaces
, .spec.match.namespaceSelector
, .spec.match.namespaces
y .spec.match.scope
de la definición de la política.
Consulta la sección Coincidencia de la política de organización para obtener más información sobre estos parámetros. Por ejemplo, para permitir la creación de bases de datos solo en espacios de nombres que tengan la etiqueta owner: dba-team
, crea la siguiente política:
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"
Restaurar una política
Para dejar de aplicar una política, elimínela con la CLI de kubectl
. Usa un archivo kubeconfig que te dé acceso al clúster en el que se define la política y al rol de gestión de identidades y accesos gdchrestrictedservice-policy-manager
.
Para eliminar una política de la organización, ejecuta el siguiente comando:
kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
GDCHRestrictedService/POLICY_NAME
Haz los cambios siguientes:
CLUSTER_KUBECONFIG
: el archivo kubeconfig del clúster en el que reside la política de la organización.POLICY_NAME
: el nombre de la política de organización que se va a eliminar.
Probar una política en modo de auditoría
Puedes probar una política sin aplicarla. Prueba una política para asegurarte de que no afecte a los sistemas actuales antes de implementarla o para obtener una estimación de la frecuencia de un comportamiento. Para añadir una prueba, añade un enforcementAction
a la definición de tu política. Este parámetro puede tener tres valores:
deny
: se aplica la política. Esta es la configuración predeterminada.dryrun
: la acción está permitida, pero puedes ver que hay una infracción de la política tanto en los registros de auditoría como en el estado de la política. Examina la infracción conkubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME
.warn
: es equivalente adryrun
, pero la prueba también muestra una advertencia en respuesta a la solicitud que ha activado una infracción de las políticas.
Por ejemplo, para probar una política que inhabilite el mercado, crea la siguiente política:
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"]