Windows でセキュリティー関係を見ているのですが、とあるPCでmsinfo32で確認すると"デバイス暗号化のサポート"で"許可されていない dma 対応バス/デバイスが検出されました"と出ていました。このPCの場合、それ以外はOK(なにも表示されない)だったのですが、ネットでしらべるとMSのドキュメントではハードウェアベンダーに問い合わせるなどと敷居が高く具体的にどこが引っかかっているかわかりません。そこでほかに方法はないかとしらべやってみたところ、"前提条件をみたしています"まで持って行けたので、本稿を挙げた次第です。
具体的には、以下のようにします。
1-a. 許可するDMA対応バス・デバイスを指定するレジストリの所有権と書き込み設定をおこなう。
以下のレジストリキーの所有者を自分自身(管理ユーザ)のものにし、フルコントロール権を付与する。
1-b. MicrosoftよりPsExecをダウンロードし、System権限でRegeditを立ち上げ編集する。
Microsoftより、https://docs.microsoft.com/en-us/sysinternals/downloads/psexec にある こちら をダウンロードし、解凍する。解凍すると、x64の場合、PsExec64.exeがあるので、管理者権限で以下を実行し、システム権限でregeditを立ち上げることが出来るようになる。
以下のパワーシェルスクリプトを作成する。たとえばDocuments\allow-dma-bus-device.ps1として作成する。(こちらの記事のものを使用させていただきました: Thank you!)
前述のスクリプトを実行すると、このPCの場合、以下のようになりました。
4-a. レジストリキーを一つずつ削除しつつ、msinfo32で確認する
レジストリーキーをひとつづつ削除し、削除の都度msinfo32を起動して、"許可されていない..."とでると、そのキーがビンゴ(許可されていないdma対応バス/デバイス)です。 なお、このPCの場合、二つビンゴがありました。
イベントビューアーで、"アプリケーションとサービスログ" >> Microsoft >> Windows >> BitLocker-API >> "Management"でイベントID4122に、ビンゴのバス/デバイスが記録されているので、それをもとに不要なレジストリーキーを削除する。
ここまでくると、デバイス暗号化の前提条件がみたされ、registryで自動暗号化する設定
具体的には、以下のようにします。
1-a. 許可するDMA対応バス・デバイスを指定するレジストリの所有権と書き込み設定をおこなう。
以下のレジストリキーの所有者を自分自身(管理ユーザ)のものにし、フルコントロール権を付与する。
HKLM\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBusesもしくは
1-b. MicrosoftよりPsExecをダウンロードし、System権限でRegeditを立ち上げ編集する。
Microsoftより、https://docs.microsoft.com/en-us/sysinternals/downloads/psexec にある こちら をダウンロードし、解凍する。解凍すると、x64の場合、PsExec64.exeがあるので、管理者権限で以下を実行し、システム権限でregeditを立ち上げることが出来るようになる。
cd Downloads\PSTools .\PsExec64.exe -sid C:\Windows\regedit.exe2-a. パワーシェルスクリプトを実行し、PnPデバイスのうちインスタンスがPCIで始まるものを"AllowedBuses"に追加する。
以下のパワーシェルスクリプトを作成する。たとえばDocuments\allow-dma-bus-device.ps1として作成する。(こちらの記事のものを使用させていただきました: Thank you!)
$tmpfile = "$($env:TEMP)\AllowBuses.reg" 'Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses]'` | Out-File $tmpfile (Get-PnPDevice -InstanceId PCI* ` | Format-Table -Property FriendlyName,InstanceId -HideTableHeaders -AutoSize ` | Out-String -Width 300).trim() ` -split "`r`n" ` -replace '&SUBSYS.*', '' ` -replace '\s+PCI\\', '"="PCI\\' ` | Foreach-Object{ "{0}{1}{2}" -f '"',$_,'"' } ` | Out-File $tmpfile -Append regedit /s $tmpfile1-aの場合は管理ユーザで、以下のように実行する。
Set-ExecutionPolicy unrestricted .\Documents\allo-dma-bus-device.ps1 Set-ExecutionPolicy restricted1-bの場合はシステム権限で、以下のように実行する。(YouIDの所は読み替えてください。)
Set-ExecutionPolicy unrestricted Downloads\PSTools\PsExec64.exe -sid PowerShell -File C:\Users\YourID\Documents\allow-dma-bus-device.ps1 Set-ExecutionPolicy restricted3. msinfo32でデバイス暗号化のサポートが"前提条件を満たしています"を確認。
前述のスクリプトを実行すると、このPCの場合、以下のようになりました。
dir C:\Users\Owner\AppData\Local\Temp\AllowBuses.reg Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DmaSecurity\AllowedBuses] "Intel(R) 100 Series/C230 Series Chipset Family PMC - A121"="PCI\\VEN_8086&DEV_A121" "Intel Chipset SATA RAID Controller"="PCI\\VEN_8086&DEV_2822" "Intel(R) HD Graphics 610"="PCI\\VEN_8086&DEV_5902" "Intel(R) USB 3.0 eXtensible Host Controller - 1.0 (Microsoft)"="PCI\\VEN_8086&DEV_A12F" "Intel(R) 100 Series/C230 Series Chipset Family SMBus - A123"="PCI\\VEN_8086&DEV_A123" "イーサネット コントローラー"="PCI\\VEN_8086&DEV_1528" "イーサネット コントローラー"="PCI\\VEN_8086&DEV_1528" "Intel(R) Active Management Technology - SOL (COM3)"="PCI\\VEN_8086&DEV_A13D" "Intel(R) 100 Series/C230 Series Chipset Family Thermal subsystem - A131"="PCI\\VEN_8086&DEV_A131" "High Definition Audio コントローラー"="PCI\\VEN_8086&DEV_A170" "Intel(R) Management Engine Interface"="PCI\\VEN_8086&DEV_A13A" "Intel(R) Xeon(R) E3 - 1200/1500 v5/6th Gen Intel(R) Core(TM) PCIe Controller (x16) - 1901"="PCI\\VEN_8086&DEV_1901" "Intel(R) 100 Series/C230 Series Chipset Family LPC Controller (C236) - A149"="PCI\\VEN_8086&DEV_A149" "Intel(R) Ethernet Connection (2) I219-LM"="PCI\\VEN_8086&DEV_15B7" "Intel(R) Host Bridge/DRAM Registers - 590F"="PCI\\VEN_8086&DEV_590F"基本的にはここまでで、”前提条件を満たしています”まで持ってくることはできますが、すべて許可するのはアレなので、以下のようにどこが引っかかっているのか、ひとつづつ確認するか、もしくは、ほかの前提条件がない場合、イベントビューアで許可されていないデバイスが記録されているので、それをもとに不要なレジストリーキーを削除します。
4-a. レジストリキーを一つずつ削除しつつ、msinfo32で確認する
レジストリーキーをひとつづつ削除し、削除の都度msinfo32を起動して、"許可されていない..."とでると、そのキーがビンゴ(許可されていないdma対応バス/デバイス)です。 なお、このPCの場合、二つビンゴがありました。
"Intel(R) 100 Series/C230 Series Chipset Family LPC Controller (C236) - A149"="PCI\\VEN_8086&DEV_A149" "Intel(R) Xeon(R) E3 - 1200/1500 v5/6th Gen Intel(R) Core(TM) PCIe Controller (x16) - 1901"="PCI\\VEN_8086&DEV_1901"4-b. イベントビューアの記録を参照し、不要なレジストリキーを削除する
イベントビューアーで、"アプリケーションとサービスログ" >> Microsoft >> Windows >> BitLocker-API >> "Management"でイベントID4122に、ビンゴのバス/デバイスが記録されているので、それをもとに不要なレジストリーキーを削除する。
ここまでくると、デバイス暗号化の前提条件がみたされ、registryで自動暗号化する設定
サブキー: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BitLocker 値: PreventDeviceEncryption が False (0) 種類: REG_DWORDになっていると、自動で以下のようになりますが、自動で暗号化させたくない場合、前述のPreventDeviceEncryptionの値をTrue(1)にしてください。 今回は以上です。それでは。
コメント
コメントを投稿