概要 |
|
Windows では、システムリソースおよびシステム関連タスクへのアクセスは、アクセストークンと 呼ばれるオブジェクトに保持されている特権を使用して制御できます。 ユーザーに代わって Wrapper が実行されると、プロセスはユーザーの特権を含むアクセストークンのコピーを受け取ります。 Wrapper プロフェッショナル版では、これらの特権をさまざまなレベルで調整できます。
セキュリティのため、アプリケーションは必要な特権のみを有効にすることをお勧めします。 特権が時折り使用される可能性がある場合、またはその子プロセスの一部で使用する必要が ある場合は、その特権を無効にして、後の段階で再度有効にする機能を保持することができます。 ただし、アプリケーションまたはその子プロセスによって特権が再度有効にならないようにするには、 特権を完全に削除するのが最も安全な方法です。 Windows サービスに必要な特権が指定されていない場合、サービスコントロールマネージャーは 起動時にサービスのアクセストークンを変更せず、デフォルトで割り当てられた特権、 つまりサービスアカウントが属する ユーザーとグループが保持する特権をそのまま残します。 サービスを実行するユーザーには、通常、次の特権が割り当てられます。
一般に、上記の特権は Wrapper プロセスに適切 (場合によっては必要) であるため、 ほとんどの場合、特権を変更する必要はありません。 ただし、アプリケーションの使用法によっては、イベントに応答して実行される Java プロセスまたは 子プロセスのアクセストークンから一部の特権を削除する方がセキュリティ上望ましい場合があります。 注意Wrapper ver. 3.7.0 以降、バックエンドタイプが「PIPE」(デフォルト)の場合、接続する Java プロセスの SID を検証するために、利用可能な場合はインパーソネーション(偽装)が利用されます。 これにより、Java プロセスの識別情報を厳密に確認できるようになり、Windows 上でのプロセス間通信において最も堅牢な認証レベルを実現します。 ID 検証は最大限のセキュリティを提供しますが、JVM との安全な通信に必ずしも必要ではありません。システムは、暗号鍵認証や PID 検証など、複数の独立したレイヤー(層)によって保護されています。 警告「SeImpersonatePrivilege」特権には特に注意を払う必要があります。Windows サービスではデフォルトで有効になっていますが、Java アプリケーションがユーザーに 任意のコマンドを実行する特権を与えている場合、この特権が悪用され、ローカルアカウントから NT AUTHORITY\SYSTEM に昇格される可能性があります。 このような場合は、Java プロセスから「SeImpersonatePrivilege」特権を削除することを強くお勧めします。 これは、イベントコマンドにも同様に適用されます。 ターゲットプログラムまたはスクリプトが変更または置換されないように、 適切なファイル特権が設定されていることを常に確認する必要があります。 ただし、さらに、設定されたコマンドによってユーザーが独自のコマンドを実行したりコンソールを 開いたりできる場合は、「SeImpersonatePrivilege」も削除する必要があります。 NT AUTHORITY\SYSTEM は、Windows の管理者よりも多くの特権を持つ 強力なアカウントです。 このアカウントにアクセスすると、マシンをほぼ完全に制御できるようになるため、 安全性が懸念されます。
Wrapper プロセスの偽装を制御する方法の詳細については、「wrapper. 特権を設定するために使用できるプロパティは以下にあります。
|
Windows サービスに必要な特権 |
||||||||||||
|
Wrapper プロセス実行時の特権 |
||||||||||||||||||||||||||||||||||||||||||||||||
|
次のプロパティは、Wrapper プロセスの特権を調整するために使用されます。 Wrapper プロセスのアクセストークンに存在する特権のみを調整できます。 デフォルトでは、アクセストークンには Wrapper を実行しているユーザーが保持する特権と、 このユーザーが属するグループの特権が含まれます。 Windows サービスの場合、必要な特権のリストを設定することで、デフォルトの特権を上書きできます。 特権が不足している場合は、「wrapper.ntservice.required_privileges」リストに追加して、 サービスを再インストールまたは更新することができます。 次回の起動時に、Wrapper のアクセストークンに特権が含まれるようになります。 これらのプロパティは最初のコンフィグレーションの読み込み時にのみ有効になり、コンフィギュレーションが再読み込みされた場合は無視されることに注意してください。
|
Java プロセス実行時の特権 |
||||||||||||||||||||||||
|
次のプロパティは、Java プロセスの特権を調整するために使用されます。 これらのプロパティのいずれかが設定されている場合、Wrapper プロセスのアクセストークンが複製され、 指定された特権がトークンのコピーで調整されます。 その後、この新しいトークンによって表されるセキュリティコンテキストで Java プロセスが起動されます。 Java プロセスのアクセストークン内に存在する (したがって、Wrapper プロセスのトークン内にも存在する) 特権のみを調整できます。 Java プロセスが起動される前に、特権のリストは 2 つのレベルで変更される可能性があることに留意してください。 必要な特権が指定されている場合に Windows サービスをインストールするとき、または Wrapper 起動時に 1 つ以上の特権が削除された場合です。 新しい JVM が起動するたびに、特権は再調整されます。 コンフィギュレーションファイルの再読み込みが許可されている場合は、これらのプロパティを変更して、次回の JVM 呼び出し時に異なる特権設定を使用できます。
|
イベントコマンド実行時の特権 |
||||||||||||||||||||||||||||||||||||||||||||
|
次のプロパティは、特定のイベントに応じて起動されるコマンドの特権を調整するために使用されます。 これらのプロパティのいずれかが設定されている場合、Wrapper プロセスのアクセストークンが複製され、 指定された特権がトークンのコピーで調整されます。 その後、この新しいトークンによって表されるセキュリティコンテキストでイベントコマンドが起動されます。 イベントコマンドのアクセストークン内に存在する (したがって、Wrapper プロセスのトークン内にも存在する) 特権のみを調整できます。 イベントコマンドが起動される前に、特権のリストは 2 つのレベルで変更される可能性があることに留意してください。 必要な特権が指定されている場合に Windows サービスをインストールするとき、または Wrapper 起動時に 1 つ以上の特権が削除された場合です。 注意プロセスが起動されるときに異なるレベルで特権を制御できるため、次のような構成が可能になります。 イベントコマンドの特定の特権を有効にするには、その特権が Wrapper プロセスにも存在している必要があります。 ただし、Java プロセスはこの特権を完全に削除できるため、Java アプリケーションやその子プロセスによって この特権が使用されないようにすることができます。
|
ログ記録 |
||||||||||||
|
Windows サービスの特権を照会する |
||||||||||||
Windows サービスに必要な特権、および Wrapper プロセスとその子プロセスの実行時特権を、1つのコマンド「.\wrapper.exe -qr .
-qr オプションに「=」とサービス名(-qr=サービス名)を追加することで、 別のサービスの特権を照会することもできます。
|










