AES 暗号化
この方法では、パスワードの暗号化に使用するアルゴリズムを選択できる AlgorithmCipher
を使用します。
始める前に: JSON オブジェクトの準備
JSON オブジェクトで、パスワードの暗号化に必要なすべての引数を指定します。以下の情報と例を使用して事前に用意しておきます。
フィールド | 説明 |
---|---|
plainTextPassword | プレーンテキストのパスワード |
algorithm | 以下のアルゴリズムから1つ選択します。
|
algorithmKey | アルゴリズム キーは上記で選択したアルゴリズムと一致している必要があります。
|
ステップ 1: パスワードの暗号化
<Jira-installation-directory>/bin
に移動します。次のコマンドを実行してパスワードを暗号化します。以下に示すオプションのパラメータを使用することもできます。
java -cp "./*" com.atlassian.secrets.cli.db.DbCipherTool -c com.atlassian.secrets.store.algorithm.AlgorithmSecretStore
- コマンドを実行すると、JSON オブジェクトに必要な引数を指定するように求められます。「始める前に」に記載されている手順に基づいて準備します。
暗号化ツールによって、パスワードの暗号化に使用された 3 つのファイルが生成され、後に dbconfig.xml
ファイルに追加する出力 JSON オブジェクトが出力されました。
ステップ 2: 生成されたファイルの保護
ツールによって生成されたファイルを安全な場所に移動し、読み取り専用に変更します。Jira では、パスワードを復号化してデータベースに接続するために、これらにアクセスして読み取ることができる必要があります。
次のファイルが生成されています。
javax.crypto.SealedObject_[timestamp]
暗号化されたパスワードを持つファイル。
javax.crypto.spec.SecretKeySpec_[timestamp]
パスワードの暗号化に使用されるキー。このファイルは、パスワードを復号化するために必要です。
java.security.AlgorithmParameters_[timestamp]
パスワードの暗号化に使用されたアルゴリズム パラメーター。このファイルは、暗号化されたパスワードを再生成する場合にのみ必要です。
Change the permissions on the files generated by the tool so that they are `read-only` to the user running Jira.
ステップ 3: (オプション) ファイル パスを環境変数として格納
この手順は任意ですが、セキュリティを強化するために実行することをおすすめします。
生成されたファイルへのパスを環境変数として格納できます。パスが dbconig.xml
ファイルに存在しない場合、Jira は自動的に特定の環境変数でパスを検索します。この方法では、ファイル パスが dbconfig.xml
ファイルに格納されず、暗号化に使用されるファイルを見つけることが困難になります。
生成されたファイルの 2 つを環境変数として格納します。Jira ではパスワードの復号化にアルゴリズム パラメータは使用しないため、アルゴリズム パラメータのファイルを追加する必要はありません。以下の環境変数を使用する必要があります。
com_atlassian_db_config_password_ciphers_algorithm_javax_crypto_spec_SecretKeySpec com_atlassian_db_config_password_ciphers_algorithm_javax_crypto_SealedObject
例:export com_atlassian_db_config_password_ciphers_algorithm_javax_crypto_spec_SecretKeySpec=/home/jira/javax.crypto.spec.SecretKeySpec_123456789 export com_atlassian_db_config_password_ciphers_algorithm_javax_crypto_SealedObject=/home/jira/javax.crypto.SealedObject_123456789
ステップ 1: パスワードの暗号化からの出力を編集し、ファイルへのパスを削除します。最終的な出力は以下の JSON オブジェクトに似たものになります。
<atlassian-password-cipher-provider>com.atlassian.secrets.store.algorithm.AlgorithmSecretStore</atlassian-password-cipher-provider> <password>{}</password>
ステップ 4: 暗号化されたパスワードを dbconfig.xml に追加
出力された JSON オブジェクトを dbconfig.xml
ファイルに追加し、現在のパスワードを置き換えます。
- Jira ホーム ディレクトリに移動し、
dbconfig.xml
ファイルをバックアップします。Jira サーバーの外部の安全な場所にバックアップを移動します。 dbconfig.xml
ファイルを編集します。<password>
タグを出力された JSON オブジェクトに置き換えます。環境変数を使用したかどうかに応じて、JSON オブジェクトを以下のいずれかの例に合わせます。ファイル パスを環境変数として保存した場合、出力からパスを削除します。以下の例のようになります。
<atlassian-password-cipher-provider>com.atlassian.secrets.store.algorithm.AlgorithmSecretStore</atlassian-password-cipher-provider> <password>{}</password>
環境変数を使用せずに
dbconfig.xml
ファイルのファイル パスを使用する場合、ファイルを安全な場所に移動した後で更新していることを確認します。出力は次の例のようになります。<atlassian-password-cipher-provider>com.atlassian.secrets.store.algorithm.AlgorithmSecretStore</atlassian-password-cipher-provider> <password>{"sealedObjectFilePath":"/home/jira/javax.crypto.SealedObject_123456789","keyFilePath":"/home/jira/javax.crypto.spec.SecretKeySpec_123456789"}</password>
WINDOWS JSON のパース エラーを回避するには、ファイル パスをエスケープし、パスを囲む二重引用符 (”) を一重引用符 (’) に変更する必要があります。パスは以下の例のようになります。
<atlassian-password-cipher-provider>com.atlassian.secrets.store.algorithm.AlgorithmSecretStore</atlassian-password-cipher-provider> <password>{"sealedObjectFilePath":'C:\\jira\\javax.crypto.SealedObject_123456789',"keyFilePath":"'C:\\jira\\javax.crypto.spec.SecretKeySpec_123456789'"}</password>
- Jira を再起動します。
パスワードの復号化
パスワードを復号化するには、-m decrypt パラメータを使用してコマンドを拡張します。
java -cp "./*" com.atlassian.secrets.cli.db.DbCipherTool -c com.atlassian.secrets.store.algorithm.AlgorithmSecretStore -m decrypt
JSON オブジェクトを求められたら、dbconfig.xml
ファイルのいずれかのオブジェクトを指定します。
{"sealedObjectFilePath":"/home/jira/javax.crypto.SealedObject_123456789","keyFilePath":"/home/jira/javax.crypto.spec.SecretKeySpec_123456789"}
{}
暗号化されたパスワードの再作成
暗号化したパスワードを紛失してプレーンテキスト パスワードを再暗号化した場合、新たに暗号化されたパスワードは元のパスワードと外観が異なります。これは同じプレーンテキスト パスワードを引き続き表しているため、問題はありません。ただし、暗号化されたパスワードをすべての Jira Data Center ノードに格納するなど、一貫性を維持したい要件がある場合があります。
以前とまったく同じ方法でパスワードを暗号化するには、元のパスワードの暗号化に使用したキーとアルゴリズム パラメータが必要です。いずれもも暗号化ツールによって生成され、以下のファイルに保存されています。
- キー:
javax.crypto.spec.SecretKeySpec_[timestamp]
- アルゴリズム パラメータ:
java.security.AlgorithmParameters_[timestamp]
これらのファイルを見つけたら、JSON オブジェクトで 2 つの追加フィールドを使用して暗号化ツールでその場所を指すことができます。これらのフィールドの説明とサンプル JSON オブジェクトは次のとおりです。
フィールド | 説明 |
---|---|
| 元のパスワードの暗号化に使用されたキーを含むファイルへのパス。例: ファイル パスを環境変数として保存した場合、このパラメータを省略できます。 |
| 元のパスワードの暗号化に使用されたアルゴリズム パラメータを含むファイルへのパス。例: |
パスワードを暗号化するには、「ステップ1: パスワードの暗号化」に従い、JSON オブジェクトをキーとアルゴリズム パラメータで使用します。