Configurar políticas de organización

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 son CREATE, UPDATE y DELETE. El valor predeterminado del campo disabledOperations es *.

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
  • DBCluster
  • BackupPlan
  • Import
  • Restore
Servicio de base de datos - Oracle oracle.dbadmin.gdc.goog
  • DBCluster
  • BackupPlan
  • Import
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 con kubectl --kubeconfig CLUSTER_KUBECONFIG get POLICY_TYPE/POLICY_NAME.
  • warn: es equivalente a dryrun, 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"]