この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

k3s シークレット暗号化

K3s は、静止状態でのシークレット暗号化の有効化をサポートしています。詳細については、シークレット暗号化をご覧ください。

シークレット暗号化ツール

バージョンゲート

v1.21.8+k3s1 から利用可能

K3s には、次の操作を自動的に制御する CLI ツール secrets-encrypt が含まれています:

  • シークレット暗号化の無効化/有効化

  • 新しい暗号化キーの追加

  • 暗号化キーのローテーションと削除

  • シークレットの再暗号化

暗号化キーのローテーションに関する適切な手順に従わないと、クラスターが永久に破損する可能性があります。注意して進めてください。

暗号化キーのローテーション

バージョンゲート

2024年9月のリリースから利用可能:v1.30.5+k3s1、v1.31.1+k3s1。

  • 1つのサーバ

  • 高可用性

単一サーバークラスターでシークレット暗号化キーをローテーションするには:

  1. フラグ --secrets-encryption を使用して K3s サーバーを起動します。

    暗号化なしで K3s を起動し、後で有効にすることは現在 サポートされていません

  2. シークレット暗号化キーをローテーションする

    k3s secrets-encrypt rotate-keys
  3. 再暗号化が完了するまで待機してください。サーバーログを監視するか、次を待ってください:

    $ k3s secrets-encrypt status
    Encryption Status: Enabled
    Current Rotation Stage: reencrypt_finished

高可用性セットアップでシークレット暗号化キーをローテーションするには:

  1. `--secrets-encryption`フラグを使用して、すべてのK3sサーバーを起動します。簡潔にするため、サーバーはS1、S2、S3と呼ばれます。

    暗号化なしで K3s を起動し、後で有効にすることは現在 サポートされていません

  2. S1でシークレット暗号化キーをローテーションします。

    k3s secrets-encrypt rotate-keys
  3. 再暗号化が完了するまで待機してください。サーバーログを監視するか、次を待ってください:

    $ k3s secrets-encrypt status
    Encryption Status: Enabled
    Current Rotation Stage: reencrypt_finished

    K3sは1秒あたり約5つのシークレットを再暗号化します。多数のシークレットを持つクラスターは、再暗号化に数分かかることがあります。サーバーログで進捗を追跡できます。

  4. 同じ引数でS1のK3sを再起動します。K3sをサービスとして実行している場合:

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  5. S1が起動したら、S2とS3のK3sを再起動します。

レガシー暗号化キーのローテーション

新しい手順

K3sのバージョンv1.30以上を使用している場合は、代わりに暗号化キーのローテーションを使用することをお勧めします。

  • 1つのサーバ

  • 高可用性

単一サーバークラスターでシークレット暗号化キーをローテーションするには:

  1. フラグ --secrets-encryption を使用して K3s サーバーを起動します。

    暗号化なしで K3s を起動し、後で有効にすることは現在 サポートされていません

  2. 準備

    k3s secrets-encrypt prepare
  3. 同じ引数でK3sサーバーを停止して再起動します。K3s をサービスとして実行している場合:

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  4. [回転]

    k3s secrets-encrypt rotate
  5. 同じ引数で K3s サーバーを停止して再起動します。

  6. 再暗号化

    K3sは1秒あたり約5つの秘密を再暗号化します。
    多数のシークレットを持つクラスターは、再暗号化に数分かかることがあります。

    k3s secrets-encrypt reencrypt

手順は、組み込みDBと外部DBクラスターの両方で同じです。

HAセットアップでの秘密の暗号化キーを回転させるには:

  1. `--secrets-encryption`フラグを使用して、すべてのK3sサーバーを起動します。簡潔にするため、サーバーはS1、S2、S3と呼ばれます。

    • 暗号化なしで K3s を起動し、後で有効にすることは現在 サポートされていません

    • 必須ではありませんが、secrets-encrypt コマンドを実行するために 1 つのサーバーノードを選択することをお勧めします。

  2. S1 を準備します。

    k3s secrets-encrypt prepare
  3. 同じ引数で S1 を停止して再起動します。K3sをサービスとして実行している場合:

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  4. S1 が起動したら、S2 と S3 を停止して再起動します。

  5. S1 でローテーションします。

    k3s secrets-encrypt rotate
  6. 同じ引数で S1 を停止して再起動します。

  7. S1 が起動したら、S2 と S3 を停止して再起動します。

  8. S1 で再暗号化します。

    K3sは1秒あたり約5つの秘密を再暗号化します。
    多数の秘密を持つクラスターは、再暗号化に数分かかることがあります。

    k3s secrets-encrypt reencrypt
  9. 同じ引数で S1 を停止して再起動します。

  10. S1 が起動したら、S2 と S3 を停止して再起動します。

シークレット暗号化の無効化/再有効化

  • 1つのサーバ

  • 高可用性

--secrets-encryption フラグを使用してサーバーを起動した後、シークレット暗号化を無効にすることができます。

単一ノードクラスターでシークレット暗号化を無効にするには:

  1. 無効化

    k3s secrets-encrypt disable
  2. 同じ引数で K3s サーバーを停止して再起動します。K3sをサービスとして実行している場合:

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  3. フラグを使用して再暗号化します。

    k3s secrets-encrypt reencrypt --force --skip

単一ノードクラスターでシークレット暗号化を再有効化するには:

  1. 有効化

    k3s secrets-encrypt enable
  2. 同じ引数で K3s サーバーを停止して再起動します。

  3. フラグを使用して再暗号化します。

    k3s secrets-encrypt reencrypt --force --skip

--secrets-encryption フラグを使用して HA クラスターを起動した後、シークレット暗号化を無効にすることができます。

必須ではありませんが、secrets-encrypt コマンドを実行するために 1 つのサーバーノードを選択することをお勧めします。

簡潔にするために、このガイドで使用される 3 つのサーバーは S1、S2、S3 と呼ばれます。

HA クラスターでシークレット暗号化を無効にするには:

  1. S1 で無効にします。

    k3s secrets-encrypt disable
  2. 同じ引数で S1 を停止して再起動します。K3sをサービスとして実行している場合:

    # If using systemd
    systemctl restart k3s
    # If using openrc
    rc-service k3s restart
  3. S1 が起動したら、S2 と S3 を停止して再起動します。

  4. S1 でフラグを使用して再暗号化します。

    k3s secrets-encrypt reencrypt --force --skip

HA クラスターでシークレット暗号化を再有効化するには:

  1. S1 で有効にします。

    k3s secrets-encrypt enable
  2. 同じ引数で S1 を停止して再起動します。

  3. S1 が起動したら、S2 と S3 を停止して再起動します。

  4. S1 でフラグを使用して再暗号化します。

    k3s secrets-encrypt reencrypt --force --skip

シークレット暗号化の状態

シークレット暗号化ツールには、ノード上のシークレット暗号化の現在の状態に関する情報を表示する`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

各セクションの詳細は以下の通りです:

  • 暗号化状態:ノード上で秘密の暗号化が無効または有効であるかどうかが表示されます。

  • 現在の回転段階:ノード上の現在の回転段階を示します。
    段階は次の通りです:startpreparerotatereencrypt_requestreencrypt_activereencrypt_finished

  • サーバー暗号化ハッシュ:HAクラスタに役立ち、すべてのサーバーがローカルファイルで同じ段階にあるかどうかを示します。これを使用して、次の段階に進む前にサーバーの再起動が必要かどうかを特定できます。上記のHAの例では、ノード-1とノード-2は異なるハッシュを持ち、現在同じ暗号化構成を持っていないことを示しています。サーバーを再起動すると、設定が同期されます。

  • キーテーブル:ノード上で見つかったシークレット暗号化キーに関する情報を要約します。

    • アクティブ:"*"は、現在シークレット暗号化に使用されているキーがある場合、それを示します。アクティブなキーは、Kubernetesによって新しいシークレットを暗号化するために使用されます。

    • 鍵の種類:このツールを使用するすべてのキーは`AES-CBC`タイプです。詳細情報はhttps://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/#providers[こちらをご覧ください。]

    • 名前:暗号化キーの名前。