Windows Server 2012 / 2012 R2 におけるセキュア ブート関連のコマンドレット (Set-SecureBootUEFI) について

スポンサーリンク

Windows Server 2012 / 2012 R2 では「セキュア ブート」と呼ばれるコンピューター起動時にブートコードなどが改ざんされていないことが保証される機能を利用することができ、また PowerShell コマンドレットなどの関連ツールを提供しています。

セキュア ブート関連の PowerShell コマンドレットのヘルプに関しては英語のみとなっており、日本語による情報はあまり公開されていません。

ここでは、セキュア ブートに関する PowerShell コマンドレットの 1 つである「Set-SecureBootUEFI」について、日本語の情報として纏めてみました ((他の PowerShell コマンドレットについては、「Windows Server 2012 / 2012 R2 におけるセキュア ブート関連のコマンドレットについて」を参照)。

※Windows Server 2012 / 2012 R2 と比較した際、内容の相違がほとんどないことから、Windows Server 2012 R2 (内容については「Get-Help」コマンドレットの -Full オプションを用いて実行した結果を編集したものとなります) の情報を元に編集、意訳したものとなります。

■名前

Set-SecureBootUEFI

■概要

プラットフォーム キー (PK)、キー交換キー (KEK)、署名データベース (DB) および禁止された署名データベース (DBX) のようなセキュア ブートに関連する UEFI 変数を設定します。

■構文

Set-SecureBootUEFI [-AppendWrite] [-OutputFilePath <String>] [-SignedFilePath <String>] -Name <String> -Time <String> [<CommonParameters>]

Set-SecureBootUEFI [-Content <Byte[]>] [<CommonParameters>]

Set-SecureBootUEFI [-ContentFilePath <String>] [<CommonParameters>]

■説明

Set-SecureBootUEFI コマンドレットは、Format-SecureBootUEFI コマンドレットおよび署名済ファイルを実行して作成されたフォーマットされたコンテンツ オブジェクトを受け取ります。また補数を組み合わせて、セキュア ブート変数の1つにぱっけーしを設定しようと試みます。サポートされるセキュア ブート変数は、プラットフォーム キー (PK)、キー交換キー (KEK)、署名データベース (DB) および禁止された署名データベース (DBX) が含まれます。

このコマンドレットは、成功の場合に UEFIEnvironmentVariable オブジェクトを返し、そうでない場合にはエラーを表示します。

このコマンドレットは、UEFI および BIOS (UEFI ではない) の両方のコンピューター上で実行されます。コンピューターがセキュア ブートをサポートしていない、もしくは UEFI ではないコンピューターの場合、このコマンドレットは、次のエラーを表示します: Cmdlet not supported on this platform.

Windows PowerShell が管理者モードで実行されていない場合、このコマンドレットは、次のエラーを表示します: Unable to set proper privileges. Access was denied.

このコマンドレットに供給された署名済ファイルが有効でない場合、このコマンドレットは、次のエラーを表示します: Incorrect authentication data.

■パラメーター

-AppendWrite [<SwitchParameter>]
上書きの代わりに付与された現在の変数のコンテンツを示します。

必須false
位置named
既定値none
パイプライン入力を許可するTrue (ByPropertyName)
ワイルドカード文字を許可するfalse

-Content <Byte[]>
設定される変数のバイト コンテンツを指定します。

必須false
位置named
既定値none
パイプライン入力を許可するTrue (ByPropertyName)
ワイルドカード文字を許可するfalse

-ContentFilePath <String>
環境変数へ設定されるコンテンツが含まれるファイルを指定します。

名前が指定されたのみの場合、ファイルは現在の作業ディレクトリ内である必要があります。そうでなければファイルのフル パスを指定する必要があります。

必須false
位置named
既定値none
パイプライン入力を許可するfalse
ワイルドカード文字を許可するfalse

-Name <String>
UEFI 環境変数名を指定します。このパラメーターに対する利用可能な値: PK、KEK、DB、もしくは DBX

必須true
位置named
既定値none
パイプライン入力を許可するTrue (ByPropertyName)
ワイルドカード文字を許可するfalse

-OutputFilePath <String>
設定されているコンテンツが含まれて作成されたファイル名を指定します。このパラメーターが指定された場合、コンテンツは実際には設定される、このファイルへ単に格納されます。

ファイルは、指定したパスの場所に作成されます。

必須false
位置named
既定値none
パイプライン入力を許可するfalse
ワイルドカード文字を許可するfalse

-SignedFilePath <String>
環境変数へ設定されるコンテンツと対になっている署名済データを指定します。

名前が指定されたのみの場合、ファイルは現在の作業ディレクトリ内である必要があります。そうでなければファイルのフル パスを指定する必要があります。

必須false
位置named
既定値none
パイプライン入力を許可するfalse
ワイルドカード文字を許可するfalse

-Time <String>
署名で使用されるタイムスタンプを指定します。This このパラメーター値は、DateTime オブジェクトによって許容されるために次のようにフォーマットする必要があります。”2011-11-01T13:30:00Z”

必須true
位置named
既定値none
パイプライン入力を許可するTrue (ByPropertyName)
ワイルドカード文字を許可するfalse

<CommonParameters>
このコマンドレットは、次の共通パラメーターをサポートします: –Verbose、-Debug、-ErrorAction-ErrorVariable、-WarningAction、-WarningVariable、-OutBuffer、-PipelineVariable、および -OutVariable。詳細については、about_CommonParameters を参照してください。

■入力

  • Microsoft.SecureBoot.Commands.UEFIFormattedVariable
    UEFIFormattedVariable オブジェクトは、Name、Time、Content、および AppendWrite パラメーターに対する情報が含まれます。

■出力

  • Microsoft.SecureBoot.Commands.UEFIEnvironmentVariable
    UEFIEnvironmentVariable オブジェクトは以下のプロパティが含まれます:
    • Name
    • Guid
    • Bytes
    • Attributes

■メモ

  • 詳細については、「Get-Help Set-SecureBootUEFI -detailed」と入力してください。
  • 技術情報については、「Get-Help Set-SecureBootUEFI -full」と入力してください。

■エイリアス

  • なし

■例

例 1:

$objectFromFormat = ( Format-SecureBootUEFI -Name DBX -SignatureOwner 12345678-1234-1234-1234-123456789abc -Algorithm SHA256 -Hash 0011223344556677889900112233445566778899001122334455667788990011 -SignableFilePath GeneratedFileToSign.bin -Time 2011-11-01T13:30:00Z -AppendWrite )
.\signtool.exe sign /fd sha256 /p7 .\ /p7co 1.2.840.113549.1.7.1 /p7ce DetachedSignedData /a /f PrivateKey.pfxGeneratedFileToSign.bin<br>$objectFromFormat | Set-SecureBootUEFI -SignedFilePath GeneratedFileToSign.bin.p7
Name       : dbx
Bytes      : {161, 89, 192, 165…}
Attributes : NON VOLATILE
             BOOTSERVICE ACCESS
             RUNTIME ACCESS
             TIME BASED AUTHENTICATED WRITE ACCESS

この例は、DBX UEFI 変数へ Format-SecureBootUEFI コマンドレットから得られる情報を設定します。このコマンドレットは、認証された署名済パッケージへのパスを供給します。ファイル「GeneratedFileToSign.bin」は、UEFI 仕様にしたがって署名される必要がある Format-SecureBootUEFI コマンドレットによって作成されたダイジェスト認証です。2 番目のコマンドは、ダイジェストで署名するために現在のディレクトリから SignTool.exe ツールを実行します。SignTool.exe ツールは、MSDN 上の Windows Software Development Kit (SDK) for Windows 8 からダウンロードすることが可能です。

例 2:

Set-SecureBootUEFI -ContentFilePath FormattedVariable.bin -SignedFilePath GeneratedFileToSign.bin.p7
Name       : dbx
Bytes      : {161, 89, 192, 165…}
Attributes : NON VOLATILE
             BOOTSERVICE ACCESS
             RUNTIME ACCESS
             TIME BASED AUTHENTICATED WRITE ACCESS

この例は、DBX UEFI 変数にファイル「FormattedVariable.bin」に書かれたフォーマットされたデータを設定します。このコマンドレットは、認証された署名済パッケージへのパスを供給します。

例 3:

$objectFromFormat = ( Format-SecureBootUEFI -Name DB -SignatureOwner 12345678-1234-1234-1234-123456789abc –Time 2011-11-01T13:30:00Z -CertificateFilePath db.cer –FormatWithCert )
$objectFromFormat | Set-SecureBootUEFI
Name       : db
Bytes      : {161, 89, 192, 165…}
Attributes : NON VOLATILE
             BOOTSERVICE ACCESS
             RUNTIME ACCESS
             TIME BASED AUTHENTICATED WRITE ACCESS

この例は、署名されないフォーマット データを作成し、UEFI 変数「db」に符号なしデータを設定します。

■関連するトピック

  • Confirm-SecureBootUEFI
  • Format-SecureBootUEFI
  • Get-SecureBootPolicy
  • Get-SecureBootUEFI

[参考]