etcd ピア TLS の証明書・キー設定の確認

etcd のピア証明書、キー、相互 TLS 設定を合わせて確認してください。

説明

etcd のピア通信は、メンバー間のデータ複製と合意形成に使用されます。信頼する証明書と対応する秘密鍵で接続を暗号化し、相手ノードの身元も検証する必要があります。

証明書とキーのパスだけでは相互 TLS の構成は完了しません。HTTPS のピア URL、信頼する CA、ピア証明書の検証を合わせて設定してください。

想定される影響

  • 保護されていないピア通信経路を傍受されると、データを読み取られたり改ざんされたりするおそれがあります。
  • 証明書・キーの誤りや期限切れによりピア接続が失敗し、クラスターの可用性に影響する可能性があります。

対処方法

  • 証明書を手動設定する場合は、対応する証明書とキーを --peer-cert-file と --peer-key-file に指定してください。秘密鍵へのアクセスを制限してください。
  • ピアの待ち受け URL と通知する URL に HTTPS を使い、--peer-trusted-ca-file と --peer-client-cert-auth で信頼するピア証明書を検証してください。
  • 証明書の名前、有効期間、更新手順を確認し、変更後にピア接続とクラスターの状態を検証してください。クライアント接続の TLS は別途確認してください。

例

過去の etcd 3.2.18 コンテナー引数の抜粋です。Deployment 全体、ファイルのマウント、ピア URL は省略しています。新規デプロイではサポートされるバージョンを使用してください。

変更前

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-etcd-deployment
spec:
  template:
    spec:
      containers:
        - name: database
          image: gcr.io/google_containers/etcd:v3.2.18
          command:
            - "etcd"
          args:
            - "--peer-cert-file=/etc/env/file.crt"

ピア証明書だけを指定し、対応する秘密鍵を指定していません。意図した手動 TLS 構成を完成させるにはキーが必要です。

変更後

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-etcd-deployment
spec:
  template:
    spec:
      containers:
        - name: database
          image: gcr.io/google_containers/etcd:v3.2.18
          command:
            - "etcd"
          args:
            - "--peer-cert-file=/etc/env/file.crt"
            - "--peer-key-file=/etc/env/file2.key"

ピア証明書とキーを両方指定します。相互認証されたピア通信には、HTTPS URL、信頼する CA、相手の証明書検証も必要です。

参考資料