애플리케이션의 측정항목 암호화

보안을 보장하려면 모든 측정항목 데이터를 전송 중에 암호화해야 합니다. Google Distributed Cloud (GDC) 에어 갭의 모니터링 구성요소는 상호 전송 계층 보안 (mTLS)을 통해 전송 중 암호화 및 인증을 제공합니다. mTLS 메서드는 네트워크 연결에서 양 당사자의 ID를 확인하여 요청한 대상이 맞음을 확인합니다.

이 페이지에서는 측정항목 서버에 mTLS를 설정하는 방법을 설명합니다.

시작하기 전에

MonitoringTarget 커스텀 리소스를 관리하려면 필요한 권한이 있어야 합니다.

IAM 조직 역할 요청

조직 IAM 관리자에게 문의하여 다음 역할을 요청하세요.

  • MonitoringTarget PA Creator (monitoringtarget-pa-creator): MonitoringTarget 커스텀 리소스를 만듭니다.
  • MonitoringTarget PA Editor (monitoringtarget-pa-editor): MonitoringTarget 커스텀 리소스를 수정합니다.
  • MonitoringTarget PA Viewer (monitoringtarget-pa-viewer): MonitoringTarget 커스텀 리소스를 봅니다.

IAM 프로젝트 역할 요청

프로젝트 IAM 관리자에게 문의하여 다음 역할을 요청하세요.

  • MonitoringTarget Editor (monitoringtarget-editor): 프로젝트 네임스페이스에서 MonitoringTarget 커스텀 리소스를 수정합니다.
  • MonitoringTarget Viewer (monitoringtarget-viewer): 프로젝트 네임스페이스에서 MonitoringTarget 커스텀 리소스를 봅니다.

필요한 권한을 얻은 후 측정항목 암호화를 사용 설정하기 전에 다음 단계를 완료합니다.

  1. 측정항목 서버를 배포합니다.
  2. 워크로드에서 측정항목을 수집합니다.
  3. 다음 예시와 같이 MonitoringTarget 커스텀 리소스에 Ready 상태가 표시되는지 확인합니다.

    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. 대시보드에서 측정항목을 쿼리하고 확인 하여 측정항목 서버가 예상 데이터를 전송하는지 확인합니다.

인증서 마운트

워크로드는 MonitoringTarget 커스텀 리소스에서 mTLS를 사용 설정할 때 자동으로 생성되는 인증서를 사용해야 합니다. 다음 템플릿을 사용하여 이 인증서의 볼륨 및 볼륨 마운트를 추가합니다.

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

다음을 바꿉니다.

  • SERVICE_NAME: Deployment 또는 StatefulSet 객체의 이름입니다.
  • CONTAINER_NAME: 볼륨 마운트를 추가하는 컨테이너의 이름입니다.
  • MONITORING_TARGET_NAME: MonitoringTarget 커스텀 리소스의 이름입니다. 보안 비밀 이름은 이 이름을 기반으로 합니다. 예를 들어 my-mon-target 리소스는 my-mon-target-cert 보안 비밀 이름을 만듭니다.

측정항목 제공

측정항목 서버는 mTLS가 사용 설정된 HTTP 서버에서 측정항목을 제공해야 합니다. 다음 두 가지 시나리오 중 하나에서 측정항목을 암호화할 수 있습니다.

  • 소유한 애플리케이션의 경우: mTLS를 지원하도록 소스 코드를 수정하고 mTLS 인증서로 측정항목 서버를 구성합니다.
  • 소유하지 않은 애플리케이션의 경우: 애플리케이션의 문서를 참조하여 HTTPS 측정항목 엔드포인트를 사용 설정합니다. 명령줄 인수 구성 또는 config 파일 배포와 같이 필요한 구성을 적용합니다.

mTLS 측정항목 수집 사용 설정

암호화된 측정항목 수집을 사용 설정하려면 MonitoringTarget 커스텀 리소스의 metadata 섹션에 다음 라벨을 추가합니다.

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

커스텀 리소스는 다음 예시와 같이 표시되어야 합니다.

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

mTLS 인증을 사용 설정했는지 확인하려면 다음 예시와 같이 MonitoringTarget 커스텀 리소스에 인증서 및 인증서 보안 비밀의 Ready 상태가 표시되는지 확인합니다.

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