「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

企業環境で PowerShell スクリプトを運用する場合、デジタル署名の有無はセキュリティ・統制の観点で非常に重要です。
特に以下のようなケースでは、署名対応がほぼ必須になります。

  • 実行ポリシーを AllSigned / RemoteSigned にしている

  • 情報セキュリティ監査・内部統制(J-SOX 等)がある

  • バッチサーバ・運用サーバで定常実行している

  • スクリプト改ざんリスクを低減したい

本記事では、企業利用を前提にした PowerShell スクリプトのデジタル署名方法を、証明書の考え方から実践手順・運用上の注意点まで網羅的に解説します。
署名付きスクリプトの概念図


PowerShell の実行ポリシーと署名の関係

まず前提として、PowerShell には Execution Policy(実行ポリシー) があります。

ポリシー内容
Restrictedスクリプト実行不可
RemoteSigned外部取得スクリプトのみ署名必須
AllSignedすべてのスクリプトに署名必須
Unrestricted制限なし

企業環境では RemoteSigned または AllSigned が一般的です。
この設定下では、署名のない ps1 ファイルは実行できません。


デジタル署名で何が保証されるのか

PowerShell のデジタル署名は、次の2点を保証します。

  1. 改ざんされていないこと(完全性)

  2. 誰が作成したスクリプトか(真正性)

つまり、

「信頼できる発行元が作成し、その後変更されていない」

ことを PowerShell が検証できるようになります。


使用する証明書の種類(企業向け)

推奨される証明書

証明書種別用途
社内CA発行のコードサイニング証明書最推奨(企業利用)
商用コードサイニング証明書外部配布向け
自己署名証明書検証・個人用途のみ

自己署名証明書は本番運用には非推奨
(各サーバで信頼登録が必要になり管理が煩雑)


コードサイニング証明書の確認方法

まず、署名に使える証明書を確認します。

  • 有効期限内

  • 「コード署名」用途が含まれている

これらを満たす証明書が表示されれば OK です。


PowerShell スクリプトに署名する手順

① 署名対象スクリプトを用意

例:


② 証明書を変数に格納

※ 複数ある場合は Where-Object で発行元やサムプリント指定推奨


③ Set-AuthenticodeSignature で署名

成功すると Status : Valid が表示されます。


④ 署名状態の確認

Status意味
Valid正常
NotSigned未署名
HashMismatch改ざん検知
UnknownError証明書問題

署名後にやってはいけないこと

署名後にファイルを編集すると署名は無効になります。

❌ NG例

  • 1文字でも修正

  • 改行追加

  • エンコード変更

変更した場合は 必ず再署名 が必要です。


企業運用でのベストプラクティス

✔ 開発・署名・配布を分離

  • 開発者:ps1 作成

  • 署名担当:リリース時に署名

  • 実行環境:AllSigned で実行


✔ 実行サーバに証明書を信頼登録

  • 「信頼された発行元」

  • 「信頼されたルート証明機関」

に社内 CA を登録しておく


✔ CI / バッチ化も可能


よくあるエラーと対処

実行できない(署名済みなのに)

  • 証明書が信頼されていない

  • 実行ポリシーが厳しすぎる

  • 有効期限切れ


HashMismatch が出る

  • 署名後に編集されている

  • ファイル転送時に文字コードが変わった


実行ポリシーの確認・設定

一時的に変更する場合(非推奨)


まとめ

PowerShell のデジタル署名は、
企業システムにおけるスクリプト運用の安全性を大きく高める必須要素です。

  • AllSigned 環境では必須

  • 社内 CA 証明書の利用が現実的

  • 署名後の変更は禁止

  • 運用ルール化が重要

「とりあえず動く」から
「監査・統制・セキュリティに耐える運用」へ
一段レベルを上げたい場合、必ず導入しておきましょう。

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x