6.3. Kubernetes KMS v2 の無効化
KMS 暗号化を無効にしてローカルの etcd 暗号化に移行することで、運用を簡素化したり、外部 KMS 接続の問題を解決したりできます。
Kubernetes KMS v2 はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
6.3.1. KMS 暗号化の無効化 リンクのコピーリンクがクリップボードにコピーされました!
KMS 暗号化を無効にしてローカル暗号化に移行するか、暗号化を完全に無効にすることで、操作を簡素化したり、接続の問題を解決したりできます。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - etcd のバックアップを作成した。
暗号化の種類を変更すると、etcd のすべてのデータが再暗号化されます。
手順
以下のコマンドを入力して、
APIServerカスタムリソースを編集します。$ oc edit apiserver cluster以下の例を参考に、暗号化タイプを変更し、
kmsセクションを削除してください。apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: encryption: type: <encryption><encryption>は、aescbc、aesgcm、またはidentityに置き換えます。aescbcおよびaesgcmタイプは、ローカルで管理される暗号鍵を使用します。このアイデンティティータイプでは、すべての暗号化が無効になり、データは平文として保存されます。暗号化タイプがKMSでない場合、API は kms セクションを拒否するため、kmsセクション全体を削除する必要があります。保存して終了します。
OpenShift Container Platform は etcd のデータを移行します。KMS プラグインは、移行が完了するまで読み取り専用プロバイダーとして動作します。
以下のコマンドを入力して、移行の進行状況を監視します。
$ oc get kubeapiserver cluster -o jsonpath='{.status.conditions[?(@.type=="Encrypted")]}' | jq .暗号化完了の理由が表示されるまで待ちます。kube-apiserverは通常、最後に完了します。以下のコマンドを入力して、
kube-apiserverPod がロールアウトされたことを確認してください。$ oc get pods -n openshift-kube-apiserver -l app=openshift-kube-apiserver移行が完了したら、以下の手順に従って KMS プロバイダーのリソースをクリーンアップしてください。
以下のコマンドを入力して、認証情報シークレットを削除してください。
$ oc delete secret vault-approle-secret -n openshift-configオプション: 以下のコマンドを入力して、CA バンドル config map を削除します。
$ oc delete configmap vault-ca-bundle -n openshift-config- バックアップの保持期間が経過したら、KMS キーを無効化してください。
検証
暗号化タイプを確認するには、以下のコマンドを入力します。
$ oc get apiserver cluster -o jsonpath='{.spec.encryption.type}'テスト用のシークレットが新しい暗号化タイプを使用していることを確認します。
以下のコマンドを入力して、テスト用のシークレットを作成します。
$ oc create secret generic encryption-test --from-literal=key=value -n default以下のコマンドを入力して、etcd Pod 名を取得します。
$ oc get pods -n openshift-etcd -l app=etcd -o name | head -1以下のコマンドを入力して、暗号化のプレフィックスを確認します。
$ oc exec -n openshift-etcd <etcd_pod_name> -- etcdctl get /kubernetes.io/secrets/default/encryption-test --print-value-only | hexdump -C | head -1出力は
k8s:enc:aescbc:v1:、k8s:enc:aesgcm:v1:で始まるか、またはアイデンティティーに対して読みやすい JSON が表示されます。以下のコマンドを入力して、テスト用のシークレットを削除します。
$ oc delete secret encryption-test -n default
移行が完了するまで、KMS キーを削除しないでください。