Todos los datos de métricas deben cifrarse en tránsito para garantizar la seguridad. El componente de monitorización del dispositivo air-gapped de Google Distributed Cloud (GDC) proporciona cifrado en tránsito y autenticación mediante 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 obtener los permisos que necesitas para gestionar recursos personalizados de MonitoringTarget
, pide a tu administrador de gestión de identidades y accesos de la organización o del proyecto que te conceda uno de los roles de MonitoringTarget
asociados.
En función del nivel de acceso y de los permisos que necesites, puedes obtener los roles de creador, editor o lector de este recurso en una organización o en un proyecto. Para obtener más información, consulta Preparar permisos de gestión de identidades y accesos.
Una vez que haya obtenido los permisos necesarios, siga estos pasos antes de habilitar el cifrado de métricas:
- Implementa tu servidor de métricas.
- Recoge métricas de tus cargas de trabajo.
Asegúrate de que tu recurso personalizado
MonitoringTarget
muestre el estadoReady
, 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
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 genere automáticamente cuando habilites la autenticación mutua de TLS 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 objetoDeployment
oStatefulSet
.CONTAINER_NAME
: el nombre del contenedor en el que vas a añadir el montaje del volumen.MONITORING_TARGET_NAME
: el nombre de tu recurso personalizadoMonitoringTarget
. El nombre del secreto se basa en este nombre. Por ejemplo, un recursomy-mon-target
crea un nombre de secretomy-mon-target-cert
.
Métricas de servicio
Tu servidor de métricas debe servir métricas desde un servidor HTTP con mTLS habilitado. Puede que quieras cifrar las 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 de 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
del certificado y del 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