次の方法で共有


PowerShell のセキュリティ機能

PowerShell には、お客様のスクリプト環境のセキュリティを向上するために設計された機能がいくつかあります。

実行ポリシー

PowerShell の実行ポリシーは、PowerShell が構成ファイルを読み込み、スクリプトを実行する条件を制御する安全機能です。 この機能は、悪意のあるスクリプトの実行を防止します。 コンピューターとユーザーの実行ポリシーを設定するには、グループ ポリシー設定を使用できます。 実行ポリシーは、Windows プラットフォームにのみ適用されます。

詳細については、about_Execution_Policiesを参照してください。

SecureString クラスの使用

PowerShell には、System.Security.SecureString クラスの使用をサポートするいくつかのコマンドレットがあります。 また、他の .NET クラスと同様に、独自のスクリプト SecureString を使用できます。 ただし、Microsoft では、新しい開発において SecureString を使用することはお勧めしません。 Microsoft では、パスワードの使用を避け、証明書や Windows 認証など、他の認証方法に依存することをお勧めします。

PowerShell では、下位互換性のために引き続き SecureString クラスをサポートします。 SecureString の使用は、プレーンテキスト文字列を使用するよりも安全です。 PowerShell は、コンソールまたはログにコンテンツが誤って公開されないように、 SecureString 型に引き続き依存しています。 SecureString はプレーン テキスト文字列に簡単に変換できるため、慎重に使用してください。 SecureString の使用についての完全な議論は、「System.Security.SecureString クラス」ドキュメントを参照してください。

モジュールとスクリプト ブロックのログ記録

モジュール ログを使用すると、選択した PowerShell モジュールのログを記録できます。 この設定は、コンピューターのすべてのセッションで有効です。 PowerShell は、指定されたモジュールのパイプライン実行イベントを Windows PowerShell イベント ログに記録します。

スクリプト ブロックのログ記録を使用すると、対話形式で起動されたか自動的に呼び出されたかにかかわらず、コマンド、スクリプト ブロック、関数、スクリプトの処理がログに記録されます。 PowerShell は、この情報を Microsoft-Windows-PowerShell/Operational イベント ログに記録します。

詳細については、次の記事をご覧ください。

AMSI サポート

Windows Antimalware Scan Interface (AMSI) は、Windows Defender などのマルウェア対策スキャナにアプリケーションからアクションを渡し、悪意のあるペイロードをスキャンできるようにする API です。 PowerShell 5.1 以降、Windows 10 (以降) で実行される PowerShell では、すべてのスクリプト ブロックが AMSI に渡されます。

PowerShell 7.3 は、検査のために AMSI に送信するデータを拡張します。 すべての .NET メソッド呼び出しが含まれるようになりました。

AMSI の詳細については、AMSI が役立つしくみに関する記事を参照してください。

制約付き言語モード

ConstrainedLanguage モードでは、PowerShell セッションで使用できるコマンドレットと .NET 型を制限して、システムを保護することができます。 詳細については、「about_Language_モードs」を参照してください。

アプリケーションの制御

Windows 10 には、 アプリケーションの制御に使用できる App Control for BusinessAppLocker の 2 つのテクノロジが含まれています。 PowerShell は、システム全体のアプリケーション制御ポリシーが適用されているかどうかの検出します。 このポリシーは、スクリプト ブロック、スクリプト ファイル、またはモジュール ファイルの読み込みを実行するときに特定の動作を適用して、システムで任意のコードが実行しないようにします。

App Control for Business は、Microsoft Security Response Center (MSRC) によって定義されたサービス条件の下でセキュリティ機能として設計されています。 アプリ コントロールは、Windows に推奨されるアプリケーション 制御システムです。

PowerShell が AppLocker とアプリ制御をサポートする方法の詳細については、「アプリコントロールを使用して PowerShell をセキュリティで保護する」を参照してください

ソフトウェア部品表 (SBOM)

PowerShell 7.2 以降、ソフトウェア部品表 (SBOM) はすべてのインストール パッケージに含まれています。 PowerShell チームでは、自身で所有のモジュールの SBOM も作成していますが、PowerShell とは別に出荷しています。

SBOM ファイルは、次の場所にあります。

  • PowerShell の、$PSHOME/_manifest/spdx_2.2/manifest.spdx.json で SBOM を見つけます。
  • モジュールの場合、_manifest/spdx_2.2/manifest.spdx.json の下のモジュールのフォルダ内の SBOM を見つけます。

SBOM の作成と発行は、連邦政府機関のサイバーセキュリティを改革し、ソフトウェア サプライ チェーンのセキュリティを強化するための最初のステップです。 この取り組みの詳細については、「Microsoft における SPDX を使用した SBOM 生成」をご覧ください。

セキュリティ サービス提供の基準

PowerShell は、「Windows での Microsoft セキュリティ サービス提供の基準」に従っています。 セキュリティ機能のみがサービスの条件を満たします。

セキュリティ機能

  • App Control for Business を使用したシステム ロックダウン
  • App Control for Business を使用した制約付き言語モード

多層防御機能

  • システム ロックダウン - AppLocker を使用
  • 制約付き言語モード - AppLocker を使用
  • 実行ポリシー