PowerShell

【PowerShell】実行ポリシーを変更する

2018年4月27日


Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

こんにちは!SE ブログの相馬です。

 

 

 

検証環境を作っているうちに、PowerShell の実行ポリシーを変更する内容がいくつか出てきましたので、PowerShell の実行ポリシーの変更方法を記事毎に書くよりも、纏めて記事にリンクさせるほうが良いかなと思い書きました。

 

 

 

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

 

 

PowerShell でスクリプトを実行する上で、どの程度まで実行する事を許可するかを設定する事ができるポリシーになります。

 

 

つまり、コマンドレットのみ実行を許可させるのか、デジタル署名が付いている場合のみ許可するのか、或いは全てのスクリプトを警告なしに実行させるのかといった事になります。

 

 

また、一見セキュリティの機能に見えますが、PowerShell の実行ポリシーはセキュリティの機能では無いようです。ついでにですが、PowerShell のセキュリティについては Microsoft のサイトにあります。

 

 

Windows PowerShell Script Security | Microsoft TechNet

 

 

 

PowerShell を使い始める前にする事

 

 

PowerShell を使い始める際にまずする事は、実行ポリシーを選択する事かと思います。

 

 

実行ポリシーが厳しすぎるとスクリプトが実行できませんし、逆に甘すぎると、セキュリティ的に問題が発生する可能性が出てきます。

 

 

ですので、この実行ポリシーを適切なレベルに設定する必要があります。

 

 

マイクロソフトのサイトにも書いてありますが(以下引用です)、実行ポリシーを甘すぎる設定にする事は余り良くはないと思います。

 

 

実行ポリシーはユーザーの操作を制限するセキュリティ システムではありません。たとえば、ユーザーはスクリプトを実行できないとき、コマンド ラインでスクリプトの内容を入力すると、容易にポリシーを回避できます。一方で、実行ポリシーを使用して基本的な規則を設定することで、意図せずに違反することを防止することができます。

 

引用元:about_Execution_Policies | Microsoft Developers Network

 

 

とはいえ、デフォルトは Restricted ではスクリプトを実行する事ができません。

 

 

という事で早速みてゆきましょう。

 

 

 

PowerShell の実行ポリシーを確認する

 

 

現在の実行ポリシーの種類を確認します。

 

[code language="powershell"]
PS C:\WINDOWS\system32> Get-ExecutionPolicy
[/code]

実行ポリシーの種類

 

実行ポリシー 説明 安全性

(個人的見解)

Restricted 個別のコマンドは許可しますが、スクリプトは実行できません。

(Windows Server 2012 R2 を除く全てのバージョンでのデフォルトになります。)

但しスクリプトは動作しません。

AllSigned スクリプトは実行できますが、デジタル署名が付いてなければなりません。

(そのスクリプトをローカル PC で書いても同じです。)

未署名のスクリプトを実行すると、実行を許可するか拒否するか確認ダイアログが表示されます。

(ユーザーが許可を選べば実行します。)

RemoteSigned スクリプトは実行できますが、以下の条件下になります。

インターネットからダウンロードしたスクリプト或いはコンフィグファイル、メールの添付ファイルに含まれているものも含めてデジタル署名が付いていなければなりません。(或いは、ユーザーがUnblock-File コマンド、またはファイルのプロパティからファイルのブロックを解除していなければなりません。)

ローカルコンピューターで書かれたスクリプトは実行できます。

(Windows Server 2012 R2 のデフォルトになります。)

Unrestricted 未署名のスクリプトでも実行できます。

インターネットからダウンロードしたファイルがブロック解除されていなければ、実行時に警告が表示されます。

(ユーザーが実行を許可すれば実行できます。)

Bypass 警告やユーザーへの確認なしに、全てのスクリプトが実行ができます。

 

 

 

PowerShell の実行ポリシーを変更する

 

 

では、実行ポリシーを変更してみます。ここでは、RemoteSigned に変更する事とします。

 

[code language="powershell"]
PS C:\WINDOWS\system32> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
[/code]

 

 

 

まとめ

 

 

 

以上になります。いかがでしょうか。

 

 

実際は「とりあえず Bypass にしてしまおうという」という考え方よりも、「まずは RemoteSigned に設定し、スクリプトが動く状態にする」といった感じでしょうか。

 

 

とはいえ、余り無いかもしれませんが企業のセキュリティポリシーにも抵触する部分でもあるかもしれませんので、気を付けたほうが良いかもしませんね。

 

 

また、別の記事にはなりますが、スクリプトに署名を入れる事もできます。スクリプトに署名を付けて、特定のスクリプトのみ動作させる事もできますので、ご興味がある方は見ていただけますと嬉しいです。

 

 

 

 

では最後までお読みいただきありがとうございました!

 

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りな性格です。

人気記事

1

こんにちは!そーまんです。 今回は、PC に適用されている GPO を確認する方法について書きました。 本題に入る前に、一応参考までにGPOの適用タイミングについての記事をここに貼りましたので、必要に ...

2

こんにちは!そーまんです。 今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは前置きからです。 まずはじめに 組織では PC のラ ...

3

こんにちは!そーまんです。 今回は、グループポリシー (GPO) を使って、特定のコンピューターに対して、ドメインユーザーに ローカル管理者権限 (以下は特権と記載) を付与する方法について書きました ...

4

こんにちは!そーまんです。 今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 Windows 10 の検証環境をいじってたらサイン ...

5

こんにちは!そーまんです。 今回は、ユーザープロファイルを削除する方法について書いてみました。 企業の場合よくあることですが、1 台の PC を共有 PC として複数人で使ったり、また余り無いかもしれ ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!そーまんです。 今回は、Windows Server 2019 で NTP サーバーと同期する方法について書きました。 NTP サーバーの必要性や時刻同期の重要性を理解することは社内のシス ...

-PowerShell
-,


Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637

Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637

Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637