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 personalizadosMonitoringTargetno namespace do projeto. - Editor do MonitoringTarget (
monitoringtarget-editor): editar ou excluir recursos personalizadosMonitoringTargetno namespace do projeto. - Leitor do MonitoringTarget (
monitoringtarget-viewer): visualizar recursos personalizadosMonitoringTargetno namespace do projeto.
Depois de receber as permissões necessárias, conclua estas etapas antes de ativar a criptografia de métricas:
- Implante o servidor de métricas.
- Coletar métricas das suas cargas de trabalho.
Verifique se o recurso personalizado
MonitoringTargetmostra um statusReady, 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: ReadyConsulte 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 objetoDeploymentouStatefulSet.CONTAINER_NAME: o nome do contêiner em que você está adicionando a montagem de volume.MONITORING_TARGET_NAME: o nome do recurso personalizadoMonitoringTarget. O nome do secret é baseado nesse nome. Por exemplo, um recursomy-mon-targetcria um nome de secretmy-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