目次
説明
PowerShellの実行ポリシー:構成ファイルの読み込み、スクリプト実行を制御する安全機能。
悪意のあるスクリプトの実行を防止する。
Windowsでは、
- ローカルコンピューター
- 現在のユーザー
- 特定のセッション
に対して実行ポリシーを設定できる。
- グループポリシー設定をして、コンピューターとユーザーの実行ポリシーも設定可能。
ローカルコンピューターと現在のユーザーの実行ポリシー:レジストリに保存される。
PowerShellプロファイルに実行ポリシーを設定する必要はない。
特定のセッションの実行ポリシー:メモリのみに格納。セッションが閉じられると失われる。
実行ポリシーの種類
下記のポリシーの適用は、Windows上でのみ。
AllSigned
- スクリプトは実行可能。
- 信頼された発行元によって署名されている必要がある。
- 「信頼済み」または「信頼されていない」に分類していない発行元からのスクリプトを実行する際、
プロンプトが表示される。 - 符号付きではあるが、悪意のあるスクリプトを実行するリスクがある。
Bypass
- ブロックしない。警告やプロンプトも表示されない。
- PowerShellスクリプトが大規模なアプリに組み込まれているとき、
PowerShellに独自のセキュリティモデルがあるプログラムのときのために設計されている。
Default
- 規定の実行ポリシー。
- Windowsクライアントに対するRestricted。
- Windowsサーバーに対するRemoteSigned。
RemoteSigned
- Windowsサーバーに対する規定の実行ポリシー。
- インターネットからダウンロードされるスクリプトや構成ファイルには信頼できる発行者からのデジタル署名が必要。
- ローカルコンピューターに書かれたスクリプトにはデジタル署名は不要。
- スクリプトのブロックが解除された場合、ダウンロードされた符号なしのスクリプトは実行可能。
unblock-Fileコマンドレット使用 - インターネット以外からの符号なしのスクリプトや、悪意のある可能性のある符号のあるスクリプトを実行するリスクがある。
Restricted
- Windowクライアントコンピューター向けの規定の実行ポリシー。
- 個々のコマンドは許可。スクリプトは不許可。
- すべてのスクリプトファイル(.ps1、.ps1xml、.psm1)の実行を防止。
Undefined
- 現在のスコープに実行ポリシーが設定されていない。
- すべてのスコープでの実行ポリシーがUndefinedの場合、
有効な実行ポリシーは、
Windowsクライアント:Restricted
Windows Server:RemoteSigned
になる。
Unrestricted
- Windows以外の規定の実行ポリシー。変更はできない。
- 符号なしのスクリプトは実行可能。悪意のあるスクリプトが実行されるリスクがある。
- ローカルイントラネットゾーン以外のスクリプトや構成ファイルを実行する前に、警告が表示される。
※符号付きスクリプト、符号なしスクリプト:
ブラウザがダウンロードされるファイルに別のデータストリームを追加します。
これは、ファイルが「インターネットから取得した」ことを示す。
実行ポリシーのスコープ
特定のスコープでのみ有効な実行ポリシーを設定できる。
- MachinePolicy
- UserPolicy
- Process
- CurrentUser
- LocalMachine
LocalMachineは実行ポリシーを設定する場合の規定値。
MachinePolicy
- グループ ポリシーによってコンピューターのすべてのユーザーに対して設定する。
UserPolicy
- グループ ポリシーによってコンピューターの現在のユーザーに対して設定する。
Process
- Processスコープは、現在の PowerShell セッションのみに影響する。
実行ポリシーは、環境変数$env:PSExecutionPolicyPreferenceに保存される。
PowerShellセッションが閉じられると、変数と値は削除される。
CurrentUser
- 実行ポリシーは、現在のユーザーのみ。
HKEY_CURRENT_USER レジストリ サブキーに格納される。
LocalMachine
- 実行ポリシーは、現在のコンピューターのすべてのユーザーに影響する。
HKEY_LOCAL_MACHINE レジストリ サブキーに格納される。
実行ポリシーの管理
有効な実行ポリシーを取得。
Get-ExecutionPolicy
現在のセッションに影響するすべての実行ポリシーを取得。
Get-ExecutionPolicy -List
実行結果。
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Restricted
実行ポリシーを変更する
実行ポリシーを変更する。
Set-Executionpolicyコマンドレットを使用する。
変更内容はすぐに反映される。再起動の必要なし。
スコープLocalMachine、CurrentUserの実行ポリシーを設定した場合、
変更はレジストリに保存されもう一度実行するまで有効。
Processスコープに設定しても、レジストリに保存されず、
現在のプロセスと子プロセスが閉じられるまで保持される。
# Set-ExecutionPolicy -ExecutionPolicy <PolicyName>
# 例)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
特定のスコープの実行ポリシーを設定する。
# Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>
# 例)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
実行ポリシーの削除
実行ポリシーを削除する。
実行ポリシーを Undefined に設定する。
# 例) ローカルコンピューターの全てのユーザーに対する実行ポリシーを削除する
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine
# 例) Scope に対する実行ポリシーを削除する
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
※今はこれで十分かな? サーバーとか必要になったら加筆する。
実行方法は別にするか、加筆をする。
実行ポリシーについて – PowerShell
PowerShell の実行ポリシーについて説明し、その管理方法について説明します。
コメント