説明
TLS を有効にしていても、安全でない暗号スイートを許可すると通信の保護が弱まるおそれがあります。サポート対象のバージョンで安全でないと分類される組み合わせを、API サーバーと kubelet の設定から除いてください。
一覧の省略時は実装の既定値が使われるため、省略自体が弱い暗号化を意味するわけではありません。この設定は TLS 1.3 の暗号スイートを制御しません。
想定される影響
- 安全でない組み合わせが選ばれると、暗号化通信の保護が弱まる可能性があります。
- 非対応の組み合わせだけを残すと、正常なクライアントが接続できなくなる可能性があります。
対処方法
- 使用バージョンの推奨一覧に従い、AES-GCM や ChaCha20-Poly1305 など適切な暗号スイートを選んでください。
- TLS の最低バージョン、証明書の種類、クライアント互換性を合わせて確認してください。
- 変更後の TLS ネゴシエーションと正常接続を試験し、安全でない組み合わせが許可されないことを確認してください。
例
kubelet と過去の API サーバーの暗号スイート引数をそれぞれ示す抜粋です。同じプロセスの完全な置換例ではないため、実際のバージョン・証明書・実行イメージを適用してください。
変更前
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: foo/bar
command: ["kubelet"]
args:
[
"--tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
]
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 を許可しています。現在の Kubernetes リファレンスは、この組み合わせを安全でない暗号スイートに分類しています。
変更後
yaml
apiVersion: v1
kind: Pod
metadata:
name: command-demo
spec:
containers:
- name: command-demo-container
image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
command: ["kube-apiserver"]
args:
[
"--tls-cipher-suites=TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
]
AES-GCM の組み合わせを指定しています。使用バージョンとサーバー証明書・クライアントが対応することを確認してください。