Criptografar métricas dos seus aplicativos

O componente de monitoramento do dispositivo do Google Distributed Cloud (GDC) com isolamento físico permite criptografar e autenticar métricas de aplicativos em trânsito usando o Transport Layer Security (mTLS) mútuo. Configurar o mTLS em um recurso personalizado MonitoringTarget verifica a identidade do servidor de métricas e do pipeline de monitoramento para proteger a coleta de métricas em todas as cargas de trabalho do projeto.

Antes de começar

Para gerenciar recursos personalizados do MonitoringTarget, peça as permissões necessárias ao administrador.

Papéis necessários do IAM

Entre em contato com o administrador do IAM do projeto para solicitar os seguintes papéis:

  • Criador de MonitoringTarget (monitoringtarget-creator):cria recursos personalizados MonitoringTarget no namespace do projeto.
  • Editor do MonitoringTarget (monitoringtarget-editor): editar ou excluir recursos personalizados MonitoringTarget no namespace do projeto.
  • Leitor do MonitoringTarget (monitoringtarget-viewer): visualizar recursos personalizados MonitoringTarget no namespace do projeto.

Depois de receber as permissões necessárias, conclua estas etapas antes de ativar a criptografia de métricas:

  1. Implante o servidor de métricas.
  2. Coletar métricas das suas cargas de trabalho.
  3. Verifique se o recurso personalizado MonitoringTarget mostra um status Ready, como no exemplo a seguir:

    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. Consulte e visualize métricas em painéis para confirmar se o servidor de métricas está enviando os dados esperados.

Montar o certificado

Sua carga de trabalho precisa usar um certificado gerado automaticamente quando você ativa o mTLS no recurso personalizado MonitoringTarget. Adicione um volume e uma montagem de volume para esse certificado usando o seguinte modelo:

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"
  [...]

Substitua:

  • SERVICE_NAME: o nome do objeto Deployment ou StatefulSet.
  • CONTAINER_NAME: o nome do contêiner em que você está adicionando a montagem de volume.
  • MONITORING_TARGET_NAME: o nome do recurso personalizado MonitoringTarget. O nome do secret é baseado nesse nome. Por exemplo, um recurso my-mon-target cria um nome de secret my-mon-target-cert.

Exibir métricas

O servidor de métricas precisa exibir métricas de um servidor HTTP com mTLS ativado. Talvez você queira criptografar métricas em um dos dois cenários a seguir:

  • Para aplicativos de sua propriedade: modifique o código-fonte para oferecer suporte ao mTLS e configure o servidor de métricas com o certificado mTLS.
  • Para aplicativos que não são seus: consulte a documentação do aplicativo para ativar um endpoint de métricas HTTPS. Aplique a configuração necessária, como configurar argumentos de linha de comando ou implantar um arquivo config.

Ativar a coleta de métricas de mTLS

Adicione o rótulo a seguir à seção metadata do recurso personalizado MonitoringTarget para ativar a coleta de métricas criptografadas:

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

O recurso personalizado precisa ser semelhante ao exemplo a seguir:

  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 se você ativou a autenticação mTLS, confira se o recurso personalizado MonitoringTarget mostra um status Ready para o certificado e o secret do certificado, como no exemplo a seguir:

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