The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.
このページを編集

プロキシーレジストリーの使用

preview

このガイドの項目:

  • グローバルプロキシーの設定方法

  • 名前付きプロキシーの設定方法

  • クレデンシャルプロバイダーとの統合方法

はじめに

プロキシーは、アプリケーションと外部サービスの間で仲介役として機能します。アプリケーションは、リモートホストに直接接続する代わりに、プロキシーサーバーを経由してリクエストを送信します。その後、プロキシーサーバーはリクエストを宛先に転送します。

Java アプリケーションでは、プロキシーは、直接的なアウトバウンドネットワークアクセスが制限されている環境で一般的に必要とされます。これは、企業ネットワークや、厳格なセキュリティールールを持つクラウド環境で典型的です。また、トラフィックの検査と監査を必要とする本番システムでも頻繁に要求されます。

プロキシーは一般的に次の目的で使用されます。

  • アウトバウンドネットワークアクセスを制御および制限する

  • セキュリティーおよびネットワークポリシーを適用する

  • 外部接続に認証を提供する

  • 発信トラフィックを監視およびログに記録する

プロキシー設定

多くの Java アプリケーションは、プロキシーサポートを有効にするために JVM システムプロパティーまたはクライアント固有の設定に依存しています。このアプローチは、設定の重複やクライアント間での一貫性のない動作につながる可能性があります。

Quarkus は、プロキシーレジストリーを使用してプロキシーを設定する一元的な方法を提供します。すべてのプロキシー設定は、quarkus.proxy 設定ルートの下で定義されます。

以下を設定できます。

  • デフォルト (グローバル) プロキシー

  • エクステンションが参照できる 1 つ以上の名前付きプロキシー

Quarkus プロキシーレジストリーとすでに統合されている Quarkus エクステンションには、以下が含まれます。

デフォルトプロキシーの設定

デフォルト (グローバル) プロキシーを設定するには、application.properties に以下のプロパティーを追加します。

quarkus.proxy.host=localhost (1)
quarkus.proxy.port=8443 (2)
quarkus.proxy.type=HTTP (3)
  1. プロキシーホスト

  2. プロキシーポート

  3. プロキシータイプ。可能な値は HTTP (デフォルト)、SOCKS4、および SOCKS5 です。

プロキシーレジストリーを認識するエクステンションは、名前付きプロキシーがエクステンションの設定で明示的に参照されない限り、デフォルトプロキシーを使用します。

名前付きプロキシーの設定

名前付きプロキシーを使用すると、異なるクライアントまたはエクステンションで異なるプロキシー設定を使用できます。

次の例では、2 つの名前付きプロキシーを定義しています。

quarkus.proxy.local.host=localhost
quarkus.proxy.local.port=3333
quarkus.proxy.local.type=SOCKS5

quarkus.proxy.my-proxy.host=localhost
quarkus.proxy.my-proxy.port=8443
quarkus.proxy.my-proxy.type=HTTP
quarkus.proxy.my-proxy.non-proxy-hosts=proxy.mycompany.com,proxy.org.acme (1)
  1. プロキシーをバイパスする必要があるホスト名または IP アドレス

この例では、localmy-proxy という 2 つの名前付きプロキシーが設定されています。エクステンションは必要に応じてこれらのプロキシーを名前で参照できます。

クレデンシャルの使用

プロキシー認証は、username および password プロパティーを使用して直接設定できます。

quarkus.proxy.my-proxy.host=localhost
quarkus.proxy.my-proxy.port=8443
quarkus.proxy.my-proxy.type=HTTP
quarkus.proxy.my-proxy.non-proxy-hosts=proxy.mycompany.com,proxy.org.acme

quarkus.proxy.my-proxy.username=${PROXY_USERNAME}
quarkus.proxy.my-proxy.password=${PROXY_PASSWORD}

クレデンシャルは環境変数を使用して外部化できます。クレデンシャルは、他のサポートされている Quarkus 設定ソースを使用しても外部化できます。

クレデンシャルプロバイダーを介したクレデンシャルの提供

設定でクレデンシャルを直接定義する代わりに、Quarkus クレデンシャルプロバイダーと統合できます。これにより、クレデンシャルを外部システム (Vault やシークレットマネージャーなど) から安全に取得できます。

この機能は、クレデンシャルプロバイダー 機能に依存しています。

プロキシー認証用のクレデンシャルプロバイダーを設定するには、次のプロパティーを使用します。

quarkus.proxy.host=localhost
quarkus.proxy.port=3838

quarkus.proxy.credentials-provider.name=credential
quarkus.proxy.credentials-provider.bean-name=credentialBean
quarkus.proxy.credentials-provider.username-key=userKey
quarkus.proxy.credentials-provider.password-key=passwordKey

プロキシーレジストリーはクレデンシャルを自動的に取得し、プロキシー設定に適用します。

クレデンシャルが適用される方法

プロキシーがクレデンシャルプロバイダーで設定されている場合、プロキシーレジストリーは起動時にクレデンシャルを自動的に取得します。取得されたクレデンシャルはプロキシー設定に適用されます。

動作は次のとおりです。

  • usernamepassword が明示的に設定されている場合は、それらが使用されます。

  • それ以外の場合、クレデンシャルプロバイダーが設定されている場合は、プロバイダーからクレデンシャルが取得されます。

  • クレデンシャルが設定されていない場合、プロキシーは認証なしで使用されます。

username または password のいずれかのみが定義されている場合、アプリケーションは起動時に失敗します。クレデンシャルがプロバイダーから取得できない場合も、アプリケーションは失敗します。どちらの場合も、設定エラーが報告されます。

これにより、プロキシー設定が早期に検証されます。この検証は、すべてのクライアントとエクステンションで一貫しています。

設定リファレンス

ビルド時に固定される設定プロパティー - 他のすべての設定プロパティーは実行時にオーバーライド可能

Configuration property

タイプ

デフォルト

Proxy host.

Environment variable: QUARKUS_PROXY_HOST

Show more

string

Proxy port

Environment variable: QUARKUS_PROXY_PORT

Show more

int

Name of the credential bucket to retrieve from the CredentialsProvider. If not set, the credentials provider will not be used.

A credentials provider offers a way to retrieve the key store password as well as alias password. Note that the credentials provider is only used if the username and password are not set in the configuration.

Environment variable: QUARKUS_PROXY_CREDENTIALS_PROVIDER_NAME

Show more

string

Name of the bean providing the credentials provider.

The name is used to select the credentials provider to use. The credentials provider must be exposed as a CDI bean and with the @Named annotation set to the configured name to be selected.

If not set, the default credentials provider is used.

Environment variable: QUARKUS_PROXY_CREDENTIALS_PROVIDER_BEAN_NAME

Show more

string

The key used to retrieve the username from the credentials provider.

If username, password or both cannot be retrieved from the credentials provider, an exception is thrown.

Environment variable: QUARKUS_PROXY_CREDENTIALS_PROVIDER_USERNAME_KEY

Show more

string

user

The key used to retrieve the password from the credentials provider.

If username, password or both cannot be retrieved from the credentials provider, an exception is thrown.

Environment variable: QUARKUS_PROXY_CREDENTIALS_PROVIDER_PASSWORD_KEY

Show more

string

password

Proxy username.

See also credentials-provider

Environment variable: QUARKUS_PROXY_USERNAME

Show more

string

Proxy password

See also credentials-provider

Environment variable: QUARKUS_PROXY_PASSWORD

Show more

string

Hostnames or IP addresses to exclude from proxying

Environment variable: QUARKUS_PROXY_NON_PROXY_HOSTS

Show more

文字列のリスト

Proxy connection timeout.

Environment variable: QUARKUS_PROXY_PROXY_CONNECT_TIMEOUT

Show more

Duration 

10s

The proxy type. Possible values are: HTTP (default), SOCKS4 and SOCKS5.

Environment variable: QUARKUS_PROXY_TYPE

Show more

http, socks4, socks5

http

Proxy host.

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__HOST

Show more

string

Proxy port

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__PORT

Show more

int

Name of the credential bucket to retrieve from the CredentialsProvider. If not set, the credentials provider will not be used.

A credentials provider offers a way to retrieve the key store password as well as alias password. Note that the credentials provider is only used if the username and password are not set in the configuration.

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__CREDENTIALS_PROVIDER_NAME

Show more

string

Name of the bean providing the credentials provider.

The name is used to select the credentials provider to use. The credentials provider must be exposed as a CDI bean and with the @Named annotation set to the configured name to be selected.

If not set, the default credentials provider is used.

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__CREDENTIALS_PROVIDER_BEAN_NAME

Show more

string

The key used to retrieve the username from the credentials provider.

If username, password or both cannot be retrieved from the credentials provider, an exception is thrown.

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__CREDENTIALS_PROVIDER_USERNAME_KEY

Show more

string

user

The key used to retrieve the password from the credentials provider.

If username, password or both cannot be retrieved from the credentials provider, an exception is thrown.

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__CREDENTIALS_PROVIDER_PASSWORD_KEY

Show more

string

password

Proxy username.

See also credentials-provider

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__USERNAME

Show more

string

Proxy password

See also credentials-provider

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__PASSWORD

Show more

string

Hostnames or IP addresses to exclude from proxying

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__NON_PROXY_HOSTS

Show more

文字列のリスト

Proxy connection timeout.

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__PROXY_CONNECT_TIMEOUT

Show more

Duration 

10s

The proxy type. Possible values are: HTTP (default), SOCKS4 and SOCKS5.

Environment variable: QUARKUS_PROXY__NAMED_PROXY_CONFIGS__TYPE

Show more

http, socks4, socks5

http

期間フォーマットについて

期間の値を書くには、標準の java.time.Duration フォーマットを使います。 詳細は Duration#parse() Java API documentation を参照してください。

数字で始まる簡略化した書式を使うこともできます:

  • 数値のみの場合は、秒単位の時間を表します。

  • 数値の後に ms が続く場合は、ミリ秒単位の時間を表します。

その他の場合は、簡略化されたフォーマットが解析のために java.time.Duration フォーマットに変換されます:

  • 数値の後に hms が続く場合は、その前に PT が付けられます。

  • 数値の後に d が続く場合は、その前に P が付けられます。

関連コンテンツ