アプリケーションの指標を暗号化する

セキュリティを確保するため、すべての指標データは転送時に暗号化する必要があります。Google Distributed Cloud(GDC)エアギャップのモニタリング コンポーネントは、相互 Transport Layer Security(mTLS)による転送中の暗号化と認証を提供します。mTLS 方式では、ネットワーク接続の両端の ID を確認し、それぞれの身元が正しいことを確認します。

このページでは、指標サーバーの mTLS を設定する方法について説明します。

始める前に

MonitoringTarget カスタム リソースを管理するために必要な権限を取得するには、関連する MonitoringTarget ロールのいずれかを付与するよう組織 IAM 管理者またはプロジェクト IAM 管理者に依頼してください。

必要なアクセスレベルと権限に応じて、組織またはプロジェクトでこのリソースの作成者、編集者、閲覧者のロールを取得できます。詳細については、IAM 権限を準備するをご覧ください。

必要な権限を取得したら、指標の暗号化を有効にする前に次の手順を完了します。

  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 サーバーから指標を提供する必要があります。指標を暗号化する必要があるのは、次の 2 つのシナリオのいずれかです。

  • 所有しているアプリケーションの場合: 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