アトラシアン アプリケーションにアウトバウンド HTTP/HTTPS プロキシを構成する方法
プラットフォームについて: サーバーと Data Center のみ。この記事は、サーバーおよび Data Center プラットフォームのアトラシアン製品にのみ適用されます。
このページの内容は、Jira アプリケーションでサポートされていないプラットフォームに関連しています。したがって、アトラシアンは、そのためのサポートの提供を保証できません 。この資料は情報提供のみを目的としているため、お客様自身の責任でご使用ください。
目的
このページでは、アトラシアン アプリケーションを設定し、アウトバウンド プロキシを経由して外部とやり取りできるようにします。この構成は、 Atlassian Marketplace などの、製品がホストされているネットワークの外部にあるサーバーにアクセスするために必要です。
ソリューション
基本的な構成
HTTP(S) アウトバウンド プロキシのサポートは、アトラシアン アプリケーションの起動時に特定のシステム プロパティを Java 仮想マシン (JVM) に渡すことで構成されます。アトラシアン アプリケーションはこれらのパラメーターを使用し、アウトバウンド リクエストをプロキシ経由で送信します。
これらの基本的なプロパティは Oracle で定義された規則に従います。
http.proxyHost
http.proxyPort
(既定: 80)http.nonProxyHosts
(既定: <none>)https.proxyHost
https.proxyPort
HTTP プロキシを構成する場合は http.proxyHost
プロパティ、HTTPS プロキシの場合は https.proxyHost
を定義する必要があります。
http.proxyHost
および http.proxyPort
プロパティは、HTTP プロトコル ハンドラが使用するプロキシ サーバーとポートを示します。例:
-Dhttp.proxyHost=proxy.example.org -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example.org -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts=localhost
http.nonProxyHosts
プロパティは、プロキシ サーバーを経由しない、直接接続されるホストを示します。
値は、"|" で区切られたホストの一覧です。ワイルドカード "*" を照合に使用できます。例:
-Dhttp.nonProxyHosts=*.foo.com|localhost|confluence|crowd
「Java オプション "-Dhttp.nonProxyHosts" が動作しない」ナレッジベース記事にあるように、Linux ではパイプ文字 (|) をエスケープする必要がある可能性があります。
システム プロパティの設定の詳細については、「起動時にプロパティおよびオプションを設定する」ドキュメントをご参照ください。
認証の設定
プロキシで認証が必要な場合、次のプロパティを Java に渡すことで構成します。詳細については「起動時にプロパティおよびオプションを設定する」ドキュメントをご参照ください。
http.proxyUser
http.proxyPassword
https.proxyUser
https.proxyPassword
例:
-Dhttp.proxyUser=atlaspirate -Dhttp.proxyPassword=yarrrrr -Dhttps.proxyUser=atlaspirate -Dhttps.proxyPassword=yarrrrr
Crowd を使用する場合の特別な考慮事項
たとえば、Bamboo をアウトバウンド プロキシで使用していて、ユーザー リポジトリとして Crowd を使用したい場合、Bamboo が Crowd とやり取りできるように次の変更を行う必要があります。
ファイル <bamboo-home-directory>/xml-data/configuration/crowd.properties を編集し、次の構成を追加します。
http.proxy.port=<http-proxy-port>
https.proxy.port=<https-proxy-port>
http.proxy.host=<http-proxy-host>
https.proxy.host=<https-proxy-host>
上述の例は、Bamboo でアウトバウンド プロキシを使用しているときに Crowd をユーザー リポジトリとして使用するコンテキストのためのものです。ただし、アウトバウンド プロキシを使用しているときに Crowd との接続を確立したい場合、他のアトラシアン アプリケーションでもこれらの構成を参照できます。
注: これらの変更を行ったあとは Bamboo を再起動する必要があります。
アプリケーション リンクの考慮事項
http.nonProxyHosts
プロパティが構成されていない場合、すべての web リクエストがプロキシを経由します。これはアプリケーション リンクを破損させる可能性があります。たとえば、アプリケーション リンクを使用して Confluence と Jira アプリケーションを接続している場合、このプロパティを使用してプロキシをバイパスし、内部ネットワークで通信するようにすることをおすすめします。リンクの IP 検証を考慮した場合、プロキシ経由での転送では、トラフィックの転送形式によってはサーバーのソース IP が変更されてしまい、予期せぬ結果となる可能性があります。
たとえば Jira と Confluence との間の接続の場合、Confluence 側で構成される http.nonProxyHosts
では少なくとも localhost と Jira のベース URL を除外する必要があります。これを行わない場合、特定の機能が意図したように動作しない可能性があります (Jira が自身に接続しようとし、HTTP リクエストがタイムアウトするかプロキシによってブロックされる)。
例:
-Dhttp.nonProxyHosts=localhost|jira.mycompany.com
または
-Dhttp.nonProxyHosts=localhost|*.mycompany.com
同様に、反対側から Jira を構成できます。
例:
-Dhttp.nonProxyHosts=localhost|confluence.mycompany.com
または
-Dhttp.nonProxyHosts=localhost|*.mycompany.com
Microsoft ISA NTLM 認証
NTLM はアトラシアン アプリケーションのサポート対象外です。次のような公開されている課題をご確認ください。
- - UPM-1104Getting issue details... STATUS
- - STASH-7694Getting issue details... STATUS
- - JRA-2398課題詳細を取得中... ステータス
回避策
Ctnlm というソフトウェアを使用して成功したお客様の事例を確認しています。JRA-2398 - Support NTLM authentication のコメントや「Atlassian Marketplace への接続で問題が発生する」をご確認ください。
大まかな手順は次のようになります。
- アトラシアン アプリケーションが実行されているサーバーのローカルに Cntlm Authentication Proxy をインストールします
構成およびテストを行って "Cntlm" が企業の NTLM で動作することを確認したら、次のパラメーターを使用します
cntlm.ini
でユーザー、ドメイン、およびプロキシ情報を更新し、次のコマンドでプロキシをテストします (Cntlm のインストール フォルダで実行します)。cntlm -c cntlm.ini -I -M http://google.ro
パスワードが確認され、必要な認証情報が表示されるはずです。これは
cntlm.ini
に保存する必要があります。cntlm.ini
の例Username user Domain domain # provide actual value if autodetection fails # Workstation pc-name Proxy my_proxy_server.com:80 NoProxy 127.0.0.*, 192.168.* Listen 127.0.0.1:54321 Listen 192.168.1.42:8080 Gateway no SOCKS5Proxy 5000 # provide socks auth info if you want it # SOCKS5User socks-user:socks-password # printed authentication info from the previous step Auth NTLMv2 PassNTLMv2 98D6986BCFA9886E41698C1686B58A09
注: Linux の場合、構成ファイルは
cntlm.conf
です- HTTP プロキシ パラメーターに記載した構成が NTLM ではなく "Cntlm" プロキシを示すようにし、"Cntlm" が NTLM とのやり取りを行います。