PowerShellの「実行ポリシー」とは何か?

OS Powershell Windows ツール

WindowsのPowerShellには「実行ポリシー」という設定があります。
これについて説明します。

PowerShellの実行ポリシーとは何か

PowerShellでは悪意のあるスクリプトの実行を防ぐために、デフォルトでスクリプトの実行を無効にする設定になっています。

このスクリプトの実行を許可したり禁止したりする設定を「実行ポリシー」と呼びます。

設定は簡単に変更できるので、セキュリティのためというよりはあくまで「意図しない実行を防ぐ」ために使われる機能となります。

PowerShellスクリプトとは何か

PowerShellのスクリプトとは、拡張子「.ps1」で定義されるバッチファイルのようなものです。

この拡張子のファイルはデフォルト状態ではPowerShell上で実行できず、実行ポリシーによって実行を許可する必要があります。

PowerShellスクリプトの実行ポリシーの確認

「get-executionpolicy」コマンドで実行ポリシーの状態を確認できます。

> get-executionpolicy
Restricted

Restrictedはデフォルトのポリシーで、全てのスクリプトが実行禁止という状態です。

PowerShellスクリプトの実行ポリシーの設定

「set-executionpolicy」で実行ポリシーを設定できます。

PowerShellを管理者モードで起動してコマンドを実行します。

> set-executionpolicy -ExecutionPolicy AllSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y

確認メッセージが表示されるので「Y」を入力してEnterを押せば設定完了します。

実行ポリシーの種類

実行ポリシーの種類は以下です。

ポリシー名概要
AllSigned署名付きスクリプトのみ実行可能。
Bypass 全てのスクリプトが 一切の警告無く実行可能。
RemoteSignedダウンロードされたスクリプトの実行には署名が必要。
ローカルのスクリプトは署名無しで実行可能。
Restricted全てのスクリプトの実行禁止。
Unrestricted 全てのスクリプトが実行できるが、リモートスクリプトの実行時に確認が入る。

about_Execution_Policies – PowerShell | Microsoft Docs

ローカルスクリプトと非ローカルスクリプト

PowerShellスクリプトは「ローカルスクリプト」と「非ローカルスクリプト」の2種類で区別されています。

ローカルスクリプトローカルマシン上で作られたスクリプト。
非ローカルスクリプトインターネットでダウンロードしてきたスクリプト。

非ローカルスクリプトのほうが危険な可能性があるため、実行ポリシーも非ローカルスクリプトに対する制限が強いものが多くなっています。

実行ポリシーのスコープ

実行ポリシーを設定する時に、設定のスコープを設定できます。

Set-ExecutionPolicyコマンドの-Scopeオプションで以下のように指定します。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

全てのユーザーに対して設定したり、ログイン中のユーザーにのみ設定するといったイメージです。

以下がスコープの種類です。

スコープ名概要
MachinePolicy全てのユーザーに対してグループポリシーによって実行ポリシーを設定する
UserPolicy現在のユーザーに対してグループポリシーによって実行ポリシーを設定する
Process実行中のPowerShellセッションにのみ実行ポリシーを設定する。
CurrentUser現在のユーザーに対して実行ポリシーを設定する
LocalMachine全てのユーザーに対して実行ポリシーを設定する

実行ポリシーの説明は以上です。

コメント/ピンバック

  1. […] 実行ポリシーについてはこちら。 […]

タイトルとURLをコピーしました