暗号化秘密鍵の管理

パスワードフィールドの暗号化には暗号化秘密鍵が必要になります。 この暗号化秘密鍵はシステムの初回起動時にランダムに自動生成されて秘密鍵ファイルに記録されています。

ここでは、この秘密鍵の管理手順について示します。

秘密鍵の変更

パスワードフィールドの暗号化に使用する秘密鍵を変更するには、管理コマンド manage.py change_secretkey を実行したあとに、kompira および kengine コンテナを再起動します。

注意: 秘密鍵を変更した後は kompira および kengine コンテナを再起動する必要があります。そのため、実行中のジョブフローがある場合は全て異常終了することに注意してください。可能であれば実行中のジョブフローが存在しないときに実施するようにしてください。

change_secretkey の実行

change_secretkey を実行すると、データベースに暗号化されて保存されている全てのパスワードデータを、新しい秘密鍵で再暗号化して保存し直します。

change_secretkey コマンドの形式は以下の通りです。新しい秘密鍵は文字列で <new_secretkey> の部分に指定してください。

$ docker exec $(docker ps -q -f name=kompira) manage.py change_secretkey [options...] <new_secretkey>

change_secretkey コマンドには以下のオプションがあります。

オプション説明
--no-backup変更前の鍵をバックアップしません。
--force途中で再暗号化に失敗したパスワードデータがあっても、再暗号化を続行します。

注釈: 秘密鍵の文字列はコンテナから見える /var/opt/kompira/.secret_key に保存されますが、ホスト上では構成によって異なるパスに存在することになります。

秘密鍵変更後のコンテナ再起動

秘密鍵を変更した後は、kompira および kengine コンテナを再起動してください。 この手順を実行すると kengine コンテナが再起動するため、実行中のジョブフローは全て異常終了することに注意してください。

シングル構成の場合

シングル構成においては、以下の手順で kompira, kengine コンテナを再起動してください。

$ docker restart $(docker ps -q -f name=kompira -f name=kengine)

クラスタ構成の場合

Swarm クラスタ構成においては、いずれかの Swarm マネージャノード上で、以下の手順で全ノードの kompira, kengine コンテナを再起動してください。

[ke2-server1]$ docker service update --force ke2_kompira
[ke2-server1]$ docker service update --force ke2_kengine