k3s secrets-encrypt
K3sは、保存時のシークレット暗号化を有効にすることをサポートしています。詳細については、Secrets Encryptionを参照してください。
シークレット暗号化ツール
バージョンゲート
v1.21.8+k3s1から利用可能 |
K3sには、以下の自動制御を可能にするCLIツールsecrets-encrypt
が含まれています:
-
シークレット暗号化の無効化/有効化
-
新しい暗号化キーの追加
-
暗号化キーのローテーションと削除
-
シークレットの再暗号化
暗号化キーのローテーションの適切な手順に従わないと、クラスターが永久に破損する可能性があります。慎重に進めてください。 |
新しい暗号化キーのローテーション(実験的)
バージョンゲート
v1.28.1+k3s1から利用可能。この新しいバージョンのツールは、現在ベータ版のK8s 自動設定リロードを利用しています。GAはv1.29.0で予定されています。 古いリリースについては、Encryption Key Rotation Classicを参照してください。 |
-
Single-Server
-
High-Availability
シングルサーバークラスターでシークレット暗号化キーをローテーションするには:
-
フラグ
--secrets-encryption
を使用してK3sサーバーを起動します。暗号化なしでK3sを起動し、後で有効にすることは現在サポートされていません。
-
シークレット暗号化キーをローテーションします。
k3s secrets-encrypt rotate-keys
-
再暗号化が完了するのを待ちます。サーバーログを監視するか、以下を待ちます:
$ k3s secrets-encrypt status Encryption Status: Enabled Current Rotation Stage: reencrypt_finished
HAセットアップでシークレット暗号化キーをローテーションするには:
-
すべてのK3sサーバーを
--secrets-encryption
フラグで起動します。簡略化のため、サーバーをS1、S2、S3と呼びます。暗号化なしでK3sを起動し、後で有効にすることは現在サポートされていません。
-
S1でシークレット暗号化キーをローテーションします。
k3s secrets-encrypt rotate-keys
-
再暗号化が完了するのを待ちます。サーバーログを監視するか、以下を待ちます:
$ k3s secrets-encrypt status Encryption Status: Enabled Current Rotation Stage: reencrypt_finished
K3sは1秒あたり約5つのシークレットを再暗号化します。シークレットの数が多いクラスターでは、再暗号化に数分かかることがあります。サーバーログで進行状況を確認できます。
-
同じ引数でS1のK3sを再起動します。K3sをサービスとして実行している場合:
# systemdを使用している場合 systemctl restart k3s # openrcを使用している場合 rc-service k3s restart
-
S1が起動したら、S2とS3のK3sを再起動します。
暗号化キーのローテーションクラシック
-
Single-Server
-
High-Availability
シングルサーバークラスターでシークレット暗号化キーをローテーションするには:
-
フラグ
--secrets-encryption
を使用してK3sサーバーを起動します。暗号化なしでK3sを起動し、後で有効にすることは現在サポートされていません。
-
準備します。
k3s secrets-encrypt prepare
-
同じ引数でK3sサーバーを再起動します。K3sをサービスとして実行している場合:
# systemdを使用している場合 systemctl restart k3s # openrcを使用している場合 rc-service k3s restart
-
ローテーションします。
k3s secrets-encrypt rotate
-
同じ引数でK3sサーバーを再起動します。
-
再暗号化します。
K3sは1秒あたり約5つのシークレットを再暗号化します。
シークレットの数が多いクラスターでは、再暗号化に数分かかることがあります。k3s secrets-encrypt reencrypt
埋め込みDBと外部DBクラスターの両方で手順は同じです。
HAセットアップでシークレット暗号化キーをローテーションするには:
-
すべてのK3sサーバーを
--secrets-encryption
フラグで起動します。簡略化のため、サーバーをS1、S2、S3と呼びます。-
暗号化なしでK3sを起動し、後で有効にすることは現在サポートされていません。
-
必須ではありませんが、
secrets-encrypt
コマンドを実行するサーバーノードを1つ選ぶことをお勧めします。
-
-
S1で準備します。
k3s secrets-encrypt prepare
-
同じ引数でS1を再起動します。K3sをサービスとして実行している場合:
# systemdを使用している場合 systemctl restart k3s # openrcを使用している場合 rc-service k3s restart
-
S1が起動したら、S2とS3を再起動します。
-
S1でローテーションします。
k3s secrets-encrypt rotate
-
同じ引数でS1を再起動します。
-
S1が起動したら、S2とS3を再起動します。
-
S1で再暗号化します。
K3sは1秒あたり約5つのシークレットを再暗号化します。
シークレットの数が多いクラスターでは、再暗号化に数分かかることがあります。k3s secrets-encrypt reencrypt
-
同じ引数でS1を再起動します。
-
S1が起動したら、S2とS3を再起動します。
シークレット暗号化の無効化/再有効化
-
Single-Server
-
High-Availability
--secrets-encryption
フラグを使用してサーバーを起動した後、シークレット暗号化を無効にすることができます。
シングルノードクラスターでシークレット暗号化を無効にするには:
-
無効化します。
k3s secrets-encrypt disable
-
同じ引数でK3sサーバーを再起動します。K3sをサービスとして実行している場合:
# systemdを使用している場合 systemctl restart k3s # openrcを使用している場合 rc-service k3s restart
-
フラグを使用して再暗号化します。
k3s secrets-encrypt reencrypt --force --skip
シングルノードクラスターでシークレット暗号化を再有効化するには:
-
有効化します。
k3s secrets-encrypt enable
-
同じ引数でK3sサーバーを再起動します。
-
フラグを使用して再暗号化します。
k3s secrets-encrypt reencrypt --force --skip
--secrets-encryption
フラグを使用してHAクラスターを起動した後、シークレット暗号化を無効にすることができます。
必須ではありませんが、 |
簡略化のため、このガイドで使用する3つのサーバーをS1、S2、S3と呼びます。
HAクラスターでシークレット暗号化を無効にするには:
-
S1で無効化します。
k3s secrets-encrypt disable
-
同じ引数でS1を再起動します。K3sをサービスとして実行している場合:
# systemdを使用している場合 systemctl restart k3s # openrcを使用している場合 rc-service k3s restart
-
S1が起動したら、S2とS3を再起動します。
-
S1でフラグを使用して再暗号化します。
k3s secrets-encrypt reencrypt --force --skip
HAクラスターでシークレット暗号化を再有効化するには:
-
S1で有効化します。
k3s secrets-encrypt enable
-
同じ引数でS1を再起動します。
-
S1が起動したら、S2とS3を再起動します。
-
S1でフラグを使用して再暗号化します。
k3s secrets-encrypt reencrypt --force --skip
シークレット暗号化のステータス
secrets-encryptツールには、ノード上のシークレット暗号化の現在のステータスに関する情報を表示するstatus
コマンドが含まれています。
シングルサーバーノードでのコマンドの例:
$ k3s secrets-encrypt status
Encryption Status: Enabled
Current Rotation Stage: start
Server Encryption Hashes: All hashes match
Active Key Type Name
------ -------- ----
* AES-CBC aescbckey
HAクラスターでの別の例、キーをローテーションした後、サーバーを再起動する前:
$ k3s secrets-encrypt status
Encryption Status: Enabled
Current Rotation Stage: rotate
Server Encryption Hashes: hash does not match between node-1 and node-2
Active Key Type Name
------ -------- ----
* AES-CBC aescbckey-2021-12-10T22:54:38Z
AES-CBC aescbckey
各セクションの詳細は以下の通りです:
-
Encryption Status: ノード上でシークレット暗号化が無効か有効かを表示します。
-
Current Rotation Stage: ノード上の現在のローテーションステージを示します。
ステージは:start
、prepare
、rotate
、reencrypt_request
、reencrypt_active
、reencrypt_finished
です。 -
Server Encryption Hashes: HAクラスターに役立ちます。これは、すべてのサーバーがローカルファイルと同じステージにあるかどうかを示します。次のステージに進む前にサーバーの再起動が必要かどうかを確認するために使用できます。上記のHAの例では、node-1とnode-2のハッシュが異なり、現在同じ暗号化設定を持っていないことを示しています。サーバーを再起動すると、設定が同期されます。
-
Key Table: ノード上で見つかったシークレット暗号化キーに関する情報を要約します。
-
Active: "*"は、現在シークレット暗号化に使用されているキーを示します。アクティブなキーは、Kubernetesが新しいシークレットを暗号化するために使用します。
-
Key Type: このツールを使用するすべてのキーは
AES-CBC
タイプです。詳細はこちらを参照してください。 -
Name: 暗号化キーの名前。
-