加密應用程式的指標

Google Distributed Cloud (GDC) 實體隔離方案設備的監控元件,可讓您使用相互傳輸層安全標準 (mTLS),加密及驗證傳輸中的應用程式指標。在 MonitoringTarget 自訂資源上設定 mTLS,可驗證指標伺服器和監控管道的身分,確保專案工作負載的指標收集作業安全無虞。

事前準備

如要管理 MonitoringTarget 自訂資源,請向管理員要求必要權限。

必要的 IAM 角色

請與專案 IAM 管理員聯絡,要求下列角色:

  • MonitoringTarget 建立者 (monitoringtarget-creator):在專案命名空間中建立 MonitoringTarget 自訂資源。
  • MonitoringTarget 編輯者 (monitoringtarget-editor):編輯或刪除專案命名空間中的 MonitoringTarget 自訂資源。
  • MonitoringTarget 檢視者 (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