次の方法で共有


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 リモート処理でのデータ転送のセキュリティ保護

PowerShell v7.6-preview5 より前のバージョンでは、 Session_Key を使用して SecureString を暗号化してから PowerShell リモート セッションを送信します。 PowerShell リモート処理プロトコル (PSRP) は、 SecureString オブジェクトを転送する必要がある場合に、クライアントとサーバーの間でキー交換を実行します。 交換には、次の手順が含まれます。

  1. クライアント側は公開キーと秘密キーのペアを生成し、公開キーをサーバーに送信します。
  2. サーバーは、対称暗号化用のセッション キーを生成します。
  3. サーバーは公開キーを使用してセッション キーを暗号化し、クライアントに送信します。
  4. クライアントとサーバーの両方で、新しいセッション キーを使用して SecureString オブジェクトを暗号化します。

PowerShell リモート処理プロトコル (PSRP) は、キー交換中に RSAEncryptionPadding.Pkcs1 アルゴリズムを使用します。 アルゴリズムはセキュリティで保護 されていないため 、キー交換では追加のセキュリティは提供されません。

Important

PSRP 経由で安全なデータ転送を確保するには、セキュリティで保護されたトランスポート層を使用する必要があります。

PowerShell v7.6-preview.5 以降、キー交換は非推奨となりました。 PSRP のバージョンが v2.4 にインクリメントされ、次の変更が含まれています。

  • クライアントとサーバーの両方が v2.4 以降の場合、次の PSRP メッセージは非推奨となります。

    • PUBLIC_KEY
    • PUBLIC_KEY_REQUEST
    • ENCRYPTED_SESSION_KEY
  • クライアントとサーバーの両方が v2.4 以上の場合、 SecureString の暗号化と復号化の手順はスキップされます。

この変更は下位互換性があります。

  • 古いクライアントまたはサーバー (v2.3 以下) の場合、キー交換は必要に応じて引き続き使用されます。
  • PSRP は、クライアントとサーバーの両方が同じコンピューター上にある場合に、名前付きパイプ リモート セッションを使用できます。 リモート クライアントが名前付きパイプに接続でき、データがセッション キーで暗号化されなくなったため、名前付きパイプ ( Enter-PSHostProcessに使用) はリモート クライアントを拒否します。

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

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

セキュリティ機能

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

多層防御機能

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