グループポリシー(GPO)でMicrosoft Excel のマクロを一元的に制御する方法

ExcelのVBAマクロをGPOで一元制御する場合、原則はインターネット由来ファイルのマクロをブロックし、マクロ不要ユーザーは通知なしで無効、必要ユーザーは信頼できる発行元の署名済みマクロだけを許可します。「すべてのマクロを有効」はマルウェアやランサムウェアの入口になるため選びません。業務マクロの棚卸し、コード署名、証明書配布、パイロットを先に行います。

Trusted Locationを広いネットワーク共有へ設定すると、そこへ書き込める攻撃者のマクロも信頼されます。信頼場所は最小化し、書き込み権限、所有者、監査、期限を管理してください。

目次

Microsoftの推奨を基準にする

Microsoftはインターネットから取得したOfficeファイルのVBAマクロを既定でブロックし、セキュリティベースラインでも「Block macros from running in Office files from the Internet」を推奨しています。メール添付やブラウザーダウンロードにはMark of the Webが付与され、信頼判断に使われます。

マクロが必要な利用者には、VBA Macro Notification Settingsを有効にし、「デジタル署名されたマクロを除きすべて無効」と「信頼できる発行元による署名を必須」を組み合わせる案が公式に示されています。署名証明書を管理者がTrusted Publishersへ配布します。

導入前の棚卸し

  • xlsm、xlam、xltm、古いxls等の所有者、用途、利用人数、保存場所
  • VBA、Excel 4.0マクロ、アドイン、COM連携、外部データの有無
  • 社内作成かベンダー提供か、ソースコードと署名可否
  • メール、SharePoint、Teams、ファイルサーバー、Webからの入手経路
  • マクロ不要ユーザー、署名必須ユーザー、例外業務の分類
  • 停止時の代替手順、月次処理、締め日、パイロット期間

利用者へ「マクロを使いますか」と聞くだけでは漏れます。最近使ったファイル、共有フォルダー、アドイン一覧、業務マニュアル、プロセス所有者を確認します。見つかったマクロを全て許可せず、不要なものは廃止し、Power Query、Office Scripts、業務アプリ等への移行も評価します。

Office管理テンプレートを準備する

  1. Microsoft公式から最新のOffice Administrative Templates(ADMX/ADML)を取得します。
  2. 中央ストアをバックアップし、Office版、言語、既存テンプレートとの差分を確認します。
  3. office16.admx、excel16.admx等と対応ADMLを同版でステージングします。表示名の2016はMicrosoft 365 Appsでも使われることがあります。
  4. 検証用管理端末のGPMCでMicrosoft Excel 2016→Excel Options→Security→Trust Centerを確認します。

テンプレート更新とマクロポリシー変更を同時に行わず、まずGPMCに正しく表示されることを確認します。Microsoft 365 Apps for business等では使える管理方式が異なる場合があるため、ライセンスとCloud Policy、Intune、GPOの適用条件を確認します。

基本GPOを設計する

  • Block macros from running in Office files from the Internet: 有効
  • ExcelのMacro Notification Settings: マクロ不要者は通知なしで無効
  • 必要者: 署名済みマクロ以外を無効+信頼できる発行元の署名必須
  • Excel 4.0マクロ: 業務要件がなければ無効化を検討
  • Trusted Locations: 最小限、ネットワーク場所は原則避ける
  • Trusted Documentsやユーザーによる信頼追加: 管理方針に合わせて制限

ポリシー名はOfficeテンプレート版と言語で表記が違うため、記事の画面文字だけで判断せず説明タブを読みます。コンピューターではなくユーザー構成側にある設定が多く、対象ユーザー、端末、ループバックの関係をテストします。

署名済みマクロを許可する

  1. マクロ所有者とコードレビュー担当を決め、VBAプロジェクトを改ざんのないビルド工程で署名します。
  2. コード署名証明書の発行元、用途、有効期限、秘密鍵保護、失効手順を決めます。
  3. 公開証明書だけをGPOのComputer Configuration→Windows Settings→Security Settings→Public Key Policies→Trusted Publishersへ配布します。
  4. Excel側ポリシーで署名済みマクロのみ許可し、ユーザーが勝手に発行元を追加できない構成を検討します。
  5. 署名後にコードを変更すると署名が無効になることを確認し、更新・再署名・配布工程を手順化します。

信頼できる発行元へ証明書を入れると、その証明書で正しく署名された全マクロを信頼することになります。秘密鍵を共有フォルダーや開発者PCに放置せず、アクセス、バックアップ、失効を管理します。自己署名証明書を全社恒久運用へ安易に使いません。

Mark of the Webを理解する

インターネット由来ファイルのブロックは、NTFS上のZone.Identifier等で出所を判断します。ZIP内のファイルやTeams/SharePointからの取得方法、ネットワーク共有のゾーン判定で挙動が変わるため、実際の配布経路でテストします。

利用者へ右クリックの「許可する」やUnblock-Fileを常用させると、出所保護を外す運用になります。例外ファイルは所有者が検証し、署名または管理された配布場所へ移します。IPアドレスで共有へ接続するとInternet Zone扱いになる場合もあるためFQDNとゾーン設計を確認します。

パイロット検証

  • マクロ不要ユーザーでxlsmを開き、実行されず編集・閲覧要件を満たす
  • インターネット由来の未署名マクロがブロックされる
  • 正しい署名、期限、有効な信頼チェーンの社内マクロだけが動く
  • 署名後にコード変更したファイルが拒否される
  • 古い月次帳票、xlam、テンプレート、外部データ、印刷が動く
  • gpresultとOfficeポリシー、イベント・Defenderログを保存する

本番データを使わず匿名化コピーでテストし、マクロが書き込むファイル、メール送信、データベース更新を隔離します。機能テストとセキュリティテストの両方を担当者が承認してから対象を広げます。

障害と切り戻し

業務マクロが止まっても「すべて有効」へ戻しません。ファイルの出所、署名、証明書チェーン、失効、有効期限、ポリシー、Trusted Location、ゾーンを確認します。例外が必要なら対象グループ、ファイル、期間、責任者を限定します。

切り戻しは直前GPOバックアップへ戻すか、検証GPOのリンクを外し、gpresultとExcel再起動で確認します。信頼証明書を削除する場合は他の署名コードへの影響を調べます。既に信頼済み文書となったファイルが自動的に未信頼へ戻るとは限らないため、Trusted Documentsも検討します。

継続運用

マクロ一覧、所有者、署名証明書、有効期限、最終レビュー、利用者、例外を四半期ごとに棚卸しします。担当者退職や証明書更新で止まらないよう、秘密鍵と署名工程を組織管理します。Defender検知やブロック件数を見て、フィッシング教育と例外削減へつなげます。

一元制御の完成条件は、全マクロを止めることでも、警告を消すことでもありません。不要なマクロは実行されず、必要なレビュー済みコードだけが検証可能な署名で動き、事故時に証明書失効とGPO切り戻しを実行できる状態です。

公式情報・参考資料

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次