Cifrar métricas de tus aplicaciones

Todos los datos de métricas deben cifrarse en tránsito para garantizar la seguridad. El componente de monitorización de Google Distributed Cloud (GDC) air-gapped proporciona cifrado y autenticación en tránsito mediante el protocolo Seguridad en la capa de transporte mutua (mTLS). El método mTLS verifica la identidad de ambas partes en una conexión de red y confirma que son quienes dicen ser.

En esta página se explica cómo configurar mTLS para tu servidor de métricas.

Antes de empezar

Para gestionar recursos personalizados MonitoringTarget, debes tener los permisos necesarios.

Solicitar roles de gestión de identidades y accesos de la organización

Ponte en contacto con el administrador de gestión de identidades y accesos de tu organización para solicitar los siguientes roles:

  • Creador de PA de MonitoringTarget (monitoringtarget-pa-creator): crea recursos personalizados MonitoringTarget.
  • Editor de PA de MonitoringTarget (monitoringtarget-pa-editor): edita o modifica recursos personalizados MonitoringTarget.
  • Visor de PA de MonitoringTarget (monitoringtarget-pa-viewer): ve recursos personalizados MonitoringTarget.

Solicitar roles de gestión de identidades y accesos del proyecto

Ponte en contacto con el administrador de gestión de identidades y accesos de tu proyecto para solicitar los siguientes roles:

  • Editor de MonitoringTarget (monitoringtarget-editor): edita o modifica recursos personalizados MonitoringTarget en el espacio de nombres del proyecto.
  • Visor de MonitoringTarget (monitoringtarget-viewer): ve recursos personalizados MonitoringTarget en el espacio de nombres del proyecto.

Después de obtener los permisos necesarios, sigue estos pasos antes de habilitar el cifrado de métricas:

  1. Implementa tu servidor de métricas.
  2. Recoge métricas de tus cargas de trabajo.
  3. Asegúrate de que tu recurso personalizado MonitoringTarget muestre el 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 ve métricas en los paneles de control para confirmar que tu servidor de métricas envía los datos esperados.

Montar el certificado

Tu carga de trabajo debe usar un certificado que se genera automáticamente cuando habilitas mTLS en el recurso personalizado MonitoringTarget. Añade un volumen y un montaje 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"
  [...]

Haz los cambios siguientes:

  • SERVICE_NAME: el nombre de tu objeto Deployment o StatefulSet.
  • CONTAINER_NAME: el nombre del contenedor en el que vas a añadir el montaje de volumen.
  • MONITORING_TARGET_NAME: el nombre de tu recurso personalizado MonitoringTarget. El nombre del secreto se basa en este nombre. Por ejemplo, un my-mon-target recurso crea un my-mon-target-cert nombre secreto.

Publicar métricas

Tu servidor de métricas debe publicar métricas desde un servidor HTTP habilitado para mTLS. Es posible que quieras cifrar métricas en uno de los dos casos siguientes:

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

Habilitar la recogida de métricas mTLS

Añade la siguiente etiqueta a la sección metadata de tu recurso personalizado MonitoringTarget para habilitar la recogida de métricas cifradas:

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

El recurso personalizado debe tener el siguiente aspecto:

  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 has habilitado la autenticación mTLS, comprueba que tu recurso personalizado MonitoringTarget muestre el 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