VBA・マクロが既定でブロックされました
2022年4月にMicrosoft OfficeのVBAおよびマクロの実行に関して、2013〜のバージョン全てに対して、既定でブロックするアプデが配信されています。結果、これまで社内で普通に利用できていたVBAとマクロが、突如として動作しなくなります。
ことの発端は、Emotetが流行しいよいよMicrosoftも現状の改善に踏み出した結果なのですが、かといって完全動作しないでは困ります。実際今回の対処は、完全封鎖の為ではなく、より一層のセキュリティの強化の為であり、VBAとマクロを動かす運用方法が変わっています。
手順
マクロセキュリティの変更
VBAの設定は、セキュリティセンターを開き、マクロの設定にて「デジタル署名されたマクロを除き、すべてのマクロを無効にする」を選択し、会社内の担当部署が、動作許可を与えるVBA込みのファイルに対して、生成もしくは購入した証明書を持って、署名をするように運用方法変更が必要です。
証明書の作成
元々、VBAに備わっていた「秘密鍵の証明書で署名」「公開鍵の証明書が入ってるPCで動作許可」の仕組みで、通常社内では運用をオススメします。次項の信頼できる場所への追加は、動作はしますが、ウイルスも遠慮なく動作してしまいます。
PowerShellおよびOpenSSLの2つで自己署名証明書は作成可能ですが、外部企業からコード署名用の証明書を導入して運用するほうが尚良いでしょう。
PowerShellの場合、証明書の生成は管理者権限で実行し、以下のコマンドで作成する事が可能です。この際に生成された秘密鍵を持って、コード署名をし、クライアント側には公開鍵を配布してインストールしておきます。
New-SelfSignedCertificate -DnsName ここに適当な名称 -Type CodeSigning -CertStoreLocation cert:\CurrentUser\My -KeyLength 4096 -KeyExportPolicy Exportable -NotAfter (Get-Date).AddYears(5)
信頼できる場所への追加
Accessなどはコード署名が出来ません。よって、このアプリを動かしたい場合は、極めて限定的に許可したフォルダに対してだけ、信頼できる場所として追加し、そこにaccdbファイルを配置することで動作するようになります。
詳細や応用編はこちら
より詳細な証明書の作成法や運用方法は以下のエントリーに記載しています。