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 appliance isolado do Google Distributed Cloud (GDC) oferece criptografia em trânsito e autenticação 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 são quem afirmam ser.

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

Antes de começar

Para receber as permissões necessárias para gerenciar recursos personalizados do MonitoringTarget, peça ao administrador do IAM da organização ou do projeto para conceder a você uma das funções associadas do MonitoringTarget.

Dependendo do nível de acesso e das permissões necessárias, você pode receber papéis de criador, editor ou leitor para esse recurso em uma organização ou um projeto. Para mais informações, consulte Preparar permissões do IAM.

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

  1. Implante o servidor de métricas.
  2. Colete 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 veja métricas nos 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 veicular métricas de um servidor HTTP habilitado para mTLS. Você pode 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 seguinte rótulo à 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