Criptografar métricas dos seus aplicativos

Todos os dados de métricas precisam ser criptografados em trânsito para garantir a segurança. O componente de monitoramento do Google Distributed Cloud (GDC) com isolamento físico fornece criptografia e autenticação em trânsito por meio do Transport Layer Security (mTLS) mútuo. O método mTLS verifica a identidade de ambas as partes em uma conexão de rede, confirmando que elas são quem afirmam ser.

Nesta página, explicamos como configurar o mTLS para o servidor de métricas.

Antes de começar

Para gerenciar recursos personalizados do MonitoringTarget, é preciso ter as permissões necessárias.

Solicitar papéis da organização do IAM

Entre em contato com o admin. da organização do IAM para solicitar os seguintes papéis:

  • Criador de PA do MonitoringTarget (monitoringtarget-pa-creator): cria recursos personalizados MonitoringTarget.
  • Editor de PA do MonitoringTarget (monitoringtarget-pa-editor): edita ou modifica recursos personalizados MonitoringTarget.
  • Leitor de PA do MonitoringTarget (monitoringtarget-pa-viewer): confira os recursos personalizados do MonitoringTarget.

Solicitar papéis do IAM para o projeto

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

  • Editor do MonitoringTarget (monitoringtarget-editor): editar ou modificar 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 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