Las políticas de la organización te proporcionan un control programático y centralizado sobre los recursos de tu organización. Como administrador de políticas de la organización, puedes configurar políticas en toda la organización.
En esta versión de Google Distributed Cloud (GDC) air-gapped, no hay interfaz de usuario ni CLI para las políticas de la organización. Debes usar la API o la CLI kubectl para gestionarlas.
Ventajas
Configurar políticas de la organización ofrece varias ventajas:
- Centralizar el control para configurar restricciones sobre cómo usar los recursos de la organización.
- Definir y establecer límites para que los equipos de desarrollo cumplan los requisitos.
- Ayudar a los propietarios de proyectos y a sus equipos a avanzar rápidamente sin incumplir los requisitos.
Diferencias con respecto a 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 la organización se centran en qué y permiten al administrador establecer 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 determinado a ciertos 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 del servicio. Puedes crear varias instancias de esta política para diferentes servicios o proyectos.
A continuación, se muestra una plantilla de 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 la organización.MATCH_SCHEMA: los recursos que deben coincidir con esta restricción. Consulta más información en la sección Definir el alcance de una política de la organización en un clúster.DISABLED_OPERATION: los grupos de operaciones que bloquea esta política. Los valores permitidos sonCREATE,UPDATEyDELETE. El valor predeterminado del campodisabledOperationses*.
La política GDCHRestrictedService solo admite las operaciones UPDATE, CREATE y DELETE. Para restringir las operaciones GET, LIST y DELETE,
te recomendamos que uses 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 Marketplace, 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 UPDATE en cualquier grupo de APIs marketplace.gdc.goog con el valor MarketplaceService para su tipo. En la práctica, esta política impide que nadie modifique ningún servicio de Marketplace.
Para inhabilitar por completo un servicio, incluye CREATE, UPDATE y DELETE en el parámetro disabledOperations, así como todos los tipos que se documentan aquí.
Conceder 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 la organización específica. Para permitir que un usuario o grupo cree, actualice o elimine políticas de tipo GDCHRestrictedService, asigna al usuario o grupo el rol de Gestión de Identidades y Accesos gdchrestrictedservice-policy-manager.
Definir el alcance de una política de la organización en un clúster
Al definir una política de la organización, decide si debe afectar a todos los espacios de nombres, solo a espacios de nombres 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
página de la sección de coincidencia de políticas de la 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"
- "DELETE"
Restaurar una política existente
Para dejar de aplicar una política, elimínala con la CLI kubectl. Usa un archivo kubeconfig que te dé acceso al clúster donde 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 lo siguiente:
kubectl --kubeconfig CLUSTER_KUBECONFIG delete \
GDCHRestrictedService/POLICY_NAME
Haz los cambios siguientes:
CLUSTER_KUBECONFIG: el archivo kubeconfig del clúster donde reside la política de la organización.POLICY_NAME: el nombre de la política de la 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 interrumpa los sistemas existentes antes de implementarla o para hacerte una idea de la frecuencia de un comportamiento. Para añadir una prueba, añade enforcementAction a la definición de la política. Este parámetro puede tener tres valores:
deny: la política se aplica. Esta es la configuración predeterminada.dryrun: la acción se permite, 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 provocado una infracción de la política.
Por ejemplo, para probar una política que inhabilita Marketplace, 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"]