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/
コネクタ設定で暗号化されたパスワードを使用するには、次のプロパティを設定する必要があります。
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
の両方を同じキーで暗号化する必要がありました。