Encripta las métricas de tus aplicaciones

El componente de supervisión del dispositivo aislado de Google Distributed Cloud (GDC) te permite encriptar y autenticar las métricas de la aplicación en tránsito con la seguridad de la capa de transporte mutua (mTLS). Configurar mTLS en un recurso personalizado MonitoringTarget verifica la identidad de tu servidor de métricas y la canalización de supervisión para proteger la recopilación de métricas en las cargas de trabajo del proyecto.

Antes de comenzar

Para administrar los recursos personalizados de MonitoringTarget, solicita los permisos necesarios a tu administrador.

Roles de IAM obligatorios

Comunícate con el administrador de IAM de tu proyecto para solicitar los siguientes roles:

  • Creador de MonitoringTarget (monitoringtarget-creator):Crea recursos personalizados de MonitoringTarget en el espacio de nombres del proyecto.
  • Editor de MonitoringTarget (monitoringtarget-editor): Edita o borra recursos personalizados de MonitoringTarget en el espacio de nombres del proyecto.
  • Visualizador de MonitoringTarget (monitoringtarget-viewer): Permite ver los recursos personalizados de MonitoringTarget en el espacio de nombres del proyecto.

Después de obtener los permisos necesarios, completa estos pasos antes de habilitar la encriptación de métricas:

  1. Implementa tu servidor de métricas.
  2. Recopila métricas de tus cargas de trabajo.
  3. Asegúrate de que tu recurso personalizado MonitoringTarget muestre un estado Ready, como en el siguiente ejemplo:

    apiVersion: monitoring.gdc.goog/v1
    kind: MonitoringTarget
    [...]
    status:
      conditions:
      - lastTransitionTime: "2023-10-27T15:27:51Z"
        message: ""
        observedGeneration: 1
        reason: Ready
        status: True
        type: Ready
    
  4. Consulta y visualiza métricas en los paneles para confirmar que tu servidor de métricas envía los datos esperados.

Activa el certificado

Tu carga de trabajo debe usar un certificado que se genera automáticamente cuando habilitas mTLS en el recurso personalizado MonitoringTarget. Agrega un volumen y una activación de volumen para este certificado con la siguiente plantilla:

apiVersion: apps/v1
kind: Deployment # or StatefulSet
metadata:
  name: "SERVICE_NAME"
spec:
  template:
    spec:
      containers:
        - name: "CONTAINER_NAME"
          volumeMounts:
          - mountPath: "/etc/ssl/MONITORING_TARGET_NAME-cert"
            name: "MONITORING_TARGET_NAME-cert"
            readOnly: true
      volumes:
      - name: "MONITORING_TARGET_NAME-cert"
        secret:
          secretName: "MONITORING_TARGET_NAME-cert"
  [...]

Reemplaza lo siguiente:

  • SERVICE_NAME: Es el nombre de tu objeto Deployment o StatefulSet.
  • CONTAINER_NAME: Es el nombre del contenedor en el que agregarás la activación del volumen.
  • MONITORING_TARGET_NAME: Es el nombre de tu recurso personalizado MonitoringTarget. El nombre del Secret se basa en este nombre. Por ejemplo, un recurso my-mon-target crea un nombre de secreto my-mon-target-cert.

Métricas de entrega

Tu servidor de métricas debe entregar métricas desde un servidor HTTP habilitado para mTLS. Es posible que quieras encriptar las métricas en una de las siguientes dos situaciones:

  • Para las aplicaciones de tu propiedad: Modifica el código fuente para que admita mTLS y configura el servidor de métricas con el certificado de mTLS.
  • Para las aplicaciones que no son de tu propiedad: Consulta la documentación de la aplicación para habilitar un extremo de métricas HTTPS. Aplica la configuración necesaria, como configurar argumentos de línea de comandos o implementar un archivo config.

Habilita la recopilación de métricas de mTLS

Agrega la siguiente etiqueta a la sección metadata de tu recurso personalizado MonitoringTarget para habilitar la recopilación de métricas encriptadas:

monitoring.gdc.goog/enable-mtls: "true"

El recurso personalizado debe verse como el siguiente ejemplo:

  apiVersion: monitoring.gdc.goog/v1
  kind: MonitoringTarget
  metadata:
    namespace: my-project-namespace
    name: "SERVICE_NAME"
    labels:
      monitoring.gdc.goog/enable-mtls: "true" # Enable mTLS metrics collection
  spec:
    [...]

Para verificar que habilitaste la autenticación de mTLS, comprueba que tu recurso personalizado MonitoringTarget muestre un estado Ready para el certificado y el secreto del certificado, como en el siguiente ejemplo:

apiVersion: monitoring.gdc.goog/v1
kind: MonitoringTarget
[...]
status:
  conditions:
  - lastTransitionTime: "2023-11-09T11:15:10Z"
    message: "admin,user-vm-1,user-vm-2,org-1-system"
    observedGeneration: 2
    reason: Ready
    status: "True"
    type: Ready
  - lastTransitionTime: "2023-11-09T11:14:43Z"
    message: "Certificate is ready"
    observedGeneration: 2
    reason: Ready
    status: "True"
    type: CertificateReady
  - lastTransitionTime: "2023-11-09T11:15:10Z"
    message: "Successfully created secret"
    observedGeneration: 2
    reason: Ready
    status: "True"
    type: CertificateSecretReady