App Control for Business を使用したスクリプトの適用

App Control for Business の一部の機能は、特定の Windows バージョンでのみ使用できます。 アプリ制御機能の可用性について詳しくは、こちらをご覧ください。

重要

オプション 11 無効:スクリプトの適用は、Windows Server 2016または Windows 10 1607 LTSB ではサポートされていないため、これらのプラットフォームでは使用しないでください。 これを行うと、予期しないスクリプトの適用動作が発生します。

スクリプトの適用の概要

既定では、ポリシーでオプション 11 Disabled:Script Enforcement が設定されていない限り、すべてのアプリ制御ポリシーに対してスクリプトの適用が有効になります。 App Control スクリプトの適用には、PowerShell などの対応するスクリプト ホストとアプリコントロールの間のハンドシェイクが含まれます。 ただし、スクリプト ホストは実際の強制動作を処理します。 Microsoft HTML アプリケーション ホスト (mshta.exe) などの一部のスクリプト ホストは、アプリコントロール UMCI ポリシーがアクティブな場合、すべてのコード実行をブロックします。 ほとんどのスクリプト ホストは、まず、現在アクティブなアプリ制御ポリシーに基づいてスクリプトの実行を許可するかどうかを App Control に要求します。 その後、スクリプト ホストは、ユーザーとデバイスを最適に保護するために、スクリプトの実行 方法 をブロック、許可、または変更します。

署名されたスクリプトの検証は、 WinVerifyTrust API を使用して行われます。 検証に合格するには、署名ルートがデバイス上の信頼されたルート ストアに存在し、アプリ制御ポリシーで許可する必要があります。 この動作は、ルート証明書のインストールを必要としない実行可能ファイルの App Control 検証とは異なります。

App Control は、すべてのスクリプト適用イベントの AppLocker - MSI イベント ログと スクリプト イベント ログを共有します。 スクリプトを許可するかどうかをスクリプト ホストがアプリ コントロールに要求するたびに、スクリプト ホストに返された応答 App Control でイベントがログに記録されます。 App Control スクリプトの適用イベントの詳細については、「 App Control イベントについて」を参照してください。

ポリシーで許可されていないスクリプトを実行すると、アプリコントロールはスクリプトが "ブロック" されたことを示すイベントを発生させます。ただし、実際のスクリプトの適用動作はスクリプト ホストによって処理され、ファイルの実行が実際に完全にブロックされない場合があります。

また、一部のスクリプト ホストは、アプリ制御ポリシーが監査モードの場合にのみ動作を変更する可能性があることに注意してください。 この記事のスクリプト ホスト固有の情報を確認し、環境内で十分にテストして、実行する必要があるスクリプトが正しく動作していることを確認する必要があります。

Windows の一部である Enlightened スクリプト ホスト

PowerShell

アプリコントロール ポリシーでは、すべての PowerShell スクリプト (.ps1)、モジュール (.psm1)、マニフェスト (.psd1) を完全言語権限で実行できるようにする必要があります。

アプリ制御ポリシーでは、許可されたモジュールによって読み込まれる 依存モジュール も許可する必要があります。また、App Control が適用されている場合は、モジュール関数を名前で明示的にエクスポートする必要があります。 エクスポートされた関数 (エクスポート名リストなし) を指定しないモジュールは引き続き読み込まれますが、モジュール関数にはアクセスできません。 名前にワイルドカード (*) を使用するモジュールは読み込みに失敗します。

App Control ポリシーで許可されていない PowerShell スクリプトは引き続き実行されますが、制約付き言語モードでのみ実行されます。

PowerShell のドット ソーシング は推奨されません。 代わりに、スクリプトは PowerShell モジュールを使用して共通の機能を提供する必要があります。 許可されたスクリプト ファイルでドット ソースのスクリプト ファイルを実行しようとすると、それらのスクリプト ファイルもポリシーに合格する必要があります。

アプリコントロールは、アプリコントロール UMCI ポリシーが適用され、アクティブなアプリコントロールポリシーによってスクリプトの適用が有効になっている場合、そのポリシーが監査モードである場合でも、対話型の PowerShell を制約付き言語モードにします。 完全な言語権限を持つ対話型 PowerShell を実行するには、 すべての ポリシーに対してスクリプトの適用を無効にする必要があります。

詳細については、「 言語モード制約付き言語モードについて」を参照してください。

VBscript、cscript、jscript

アプリ制御ポリシーでは、Windows ベースのスクリプト ホスト (wscript.exe) または Microsoft コンソール ベースのスクリプト ホスト (cscript.exe) を使用して、すべてのスクリプトの実行を許可する必要があります。 そうでない場合、スクリプトはブロックされます。

Microsoft HTML アプリケーション ホスト (MSHTA) と MSXML

MSHTA または MSXML を使用するすべてのコード実行は、そのポリシーが監査モードであっても、スクリプトの適用を伴うアプリ制御ポリシーがアクティブな場合はブロックされます。

COM オブジェクト

アプリコントロールは、アプリコントロールポリシーが拡張またはさらに制限できるCOMオブジェクトに対して制限付き許可リストを追加で適用します。 COM オブジェクト の適用は、 オプション 11 Disabled:Script Enforcement の影響を受けません。 COM オブジェクトを許可または拒否する方法の詳細については、「COM オブジェクトの登録を許可する」を参照してください。

アプリ コントロールによって直接制御されないスクリプト

アプリ コントロールは、/.cmd スクリプト ファイルを含め、Windows コマンド プロセッサ (cmd.exe) を介して実行されるコード .bat直接制御しません。 ただし、このようなバッチ スクリプトの実行を試みるものは、App Control コントロールの対象となります。 cmd.exe を実行する必要がない場合は、完全にブロックするか、呼び出し元のプロセスに基づいて例外によってのみ許可することをお勧めします。 「App Control for Business ポリシーを使用して特定のプラグイン、アドイン、モジュールを制御する」を参照してください。

App Control では、多くのサード パーティの Java エンジンや Python エンジンなど、未対応のスクリプト ホストを介して実行されるスクリプトは制御されません。 アプリ制御ポリシーで、更新されていないスクリプト ホストの実行が許可されている場合は、そのホストを介してすべてのスクリプトの実行を暗黙的に許可します。 Microsoft 以外のスクリプト ホストの場合は、スクリプト ホストが App Control ポリシーに対応しているかどうかをソフトウェア ベンダーにチェックする必要があります。