Encripte as métricas das suas aplicações

Todos os dados de métricas têm de ser encriptados em trânsito para garantir a segurança. O componente de monitorização do Google Distributed Cloud (GDC) air-gapped oferece encriptação em trânsito e autenticação através do Transport Layer Security (mTLS) mútuo. O método mTLS valida a identidade de ambas as partes numa ligação de rede, confirmando que são quem afirmam ser.

Esta página explica como configurar o mTLS para o seu servidor de métricas.

Antes de começar

Para receber as autorizações necessárias para gerir recursos personalizados, peça ao administrador de IAM da organização ou ao administrador de IAM do projeto que lhe conceda uma das funções associadas.MonitoringTargetMonitoringTarget

Consoante o nível de acesso e as autorizações de que precisa, pode obter as funções de criador, editor ou leitor para este recurso numa organização ou num projeto. Para mais informações, consulte o artigo Prepare as autorizações de IAM.

Depois de obter as autorizações necessárias, conclua estes passos antes de ativar a encriptação de métricas:

  1. Implemente o servidor de métricas.
  2. Recolha métricas das suas cargas de trabalho.
  3. Certifique-se de que o recurso personalizado MonitoringTarget mostra um estado Ready, como no exemplo seguinte:

    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 de controlo para confirmar que o servidor de métricas está a enviar os dados esperados.

Monte o certificado

A sua carga de trabalho tem de usar um certificado gerado automaticamente quando ativa o mTLS no recurso personalizado MonitoringTarget. Adicione um volume e uma montagem de volume para este certificado através do 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 o seguinte:

  • SERVICE_NAME: o nome do seu objeto Deployment ou StatefulSet.
  • CONTAINER_NAME: o nome do contentor onde está a adicionar a montagem de volume.
  • MONITORING_TARGET_NAME: o nome do seu recurso personalizado MonitoringTarget. O nome do segredo baseia-se neste nome. Por exemplo, um recurso my-mon-target cria um nome secreto my-mon-target-cert.

Publicar métricas

O seu servidor de métricas tem de publicar métricas a partir de um servidor HTTP com mTLS ativado. É recomendável encriptar as métricas num dos dois cenários seguintes:

  • Para aplicações que lhe pertencem: modifique o código-fonte para suportar o mTLS e configure o servidor de métricas com o certificado mTLS.
  • Para aplicações que não lhe pertencem: consulte a documentação da aplicação para ativar um ponto final de métricas HTTPS. Aplique a configuração necessária, como configurar argumentos da linha de comandos ou implementar um ficheiro config.

Ative a recolha de métricas mTLS

Adicione a seguinte etiqueta à secção metadata do seu MonitoringTarget recurso personalizado para ativar a recolha de métricas encriptadas:

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

O recurso personalizado tem de ser semelhante ao seguinte exemplo:

  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 ativou a autenticação mTLS, verifique se o seu recurso personalizado MonitoringTarget mostra um estado Ready para o certificado e o segredo do certificado, como no exemplo seguinte:

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