server.xml のパスワードを暗号化
Jira インスタンスのセキュリティを強化するために、Tomcat の server.xml ファイルでコネクタの設定に使用するパスワードを暗号化できます。
はじめる前に
productEncryptionKey を用いたプロトコルと暗号化されたパスワードを利用しますが、Tomcat の server.xml の設定にはパスワードの復号化に必要な情報がすべて含まれるため、完全なセキュリティは保証されません。攻撃者が Jira になりすましてパスワードへのアクセス権を取得できてしまう可能性があります。セキュリティを強化するために、Jira と productEncryptionKey が配置されているサーバーを保護することをお勧めします。
パスワード暗号化のサポートによって Tomcat プロトコルを拡張する次のプロトコルが Jira には用意されています。
プロトコル クラス | プロトコル クラスのベースになる Tomcat プロトコル | パスワード暗号化がサポートされている属性 |
|---|---|---|
com.atlassian.secrets.tomcat.protocol.Http11NioProtocolWithPasswordEncryption | Http11NioProtocol |
|
com.atlassian.secrets.tomcat.protocol.Http11Nio2ProtocolWithPasswordEncryption | Http11Nio2Protocol |
|
com.atlassian.secrets.tomcat.protocol.Http11AprProtocolWithPasswordEncryption | Http11AprProtocol |
|
com.atlassian.secrets.tomcat.protocol.AjpNioProtocolWithPasswordEncryption | AjpNioProtocol |
|
com.atlassian.secrets.tomcat.protocol.AjpNio2ProtocolWithPasswordEncryption | AjpNio2Protocol |
|
com.atlassian.secrets.tomcat.protocol.AjpAprProtocolWithPasswordEncryption | AjpAprProtocol |
|
単一のパスワードの暗号化
<Jira-installation-directory>/binに移動します。次のコマンドを実行してパスワードを暗号化します。
java -cp "./*" com.atlassian.secrets.cli.tomcat.TomcatEncryptionTool
以下に示すオプションの引数を使用することもできます。プロンプトが表示されたら、パスワードを入力します。暗号化ツールによって
encryptedPasswordとencryptionKeyの 2 つのファイルが生成されます。これらのファイルを安全な場所に移動してください。必要に応じて、ファイルの名前を変更することもできます。
1 つのコネクタの複数のパスワードの暗号化
1 つのコネクタで複数のパスワードを暗号化する場合は、すべてのパスワードに同じ暗号化キーを使用する必要があります。最初のパスワードを暗号化したら、生成された encryptionKey を使って、キーのパスを暗号化ツールに渡すことで 2 つ目以降のパスワードを暗号化します。
java -cp "./*" com.atlassian.secrets.cli.tomcat.TomcatEncryptionTool /path/to/encryptionKey
encryptedPassword ファイルのみが生成されます。
コネクタ設定における暗号化されたパスワードの使用
例外的なエラー
Jira 9.11.0 では、catalina.out ファイルで例外的なエラーが発生する可能性があります。現在、修正に取り組んでおり、今後のバグ修正リリースの一部として提供する予定です。一時的な回避策は次のとおりです。
<Jira-installation-directory>に移動します。atlassian-secrets-apiライブラリを Tomcatlib/ディレクトリにコピーするには、次のコマンドを実行します:cp atlassian-jira/WEB-INF/lib/atlassian-secrets-api-<version>.jar lib/
この課題は、 JRASERVER-76246 - 課題情報を取得中... ステータス で追跡できます。
コネクタ設定で暗号化されたパスワードを使用するには、次のプロパティを設定する必要があります。
protocol-上記のいずれかのプロトコル クラスを使用productEncryptionKey-encryptionKeyファイルのパスを指定
次に、コネクタ設定で、プレーン テキストのパスワードの代わりに適切な encryptedPassword ファイルのパスを使用できます。
たとえば、Jira ではキーストアとキー パスワードが暗号化された Http11Nio2 コネクタの conf/server.xml 構成が次のようになります。
<Connector
protocol="com.atlassian.secrets.tomcat.protocol.Http11Nio2ProtocolWithPasswordEncryption"
port="8443"
(...)
keystoreFile="/var/secrets/keystore/keystore"
keystorePass="/var/secrets/keystore/encryptedKeystorePass"
keyPass="/var/secrets/keystore/encryptedKeyPass"
productEncryptionKey="/var/secrets/encryptionKey"
/>
productEncryptionKey が 1 つだけ指定されているため、keystorePass と keyPass の両方を同じキーで暗号化する必要がありました。