演習 - 既存の VM ディスクの暗号化
あなたは、スタートアップ企業の財務管理アプリを開発しているとします。 すべての顧客のデータがセキュリティで保護されていることを確認する必要があります。 そのため、このアプリをホストするサーバー上のすべての OS ディスクとデータ ディスクに Azure Disk Encryption (ADE) を実装することにしました。 コンプライアンス要件の一部として、独自の暗号化キーの管理も自分で行う必要があります。
このユニットでは、既存の仮想マシン (VM) 上のディスクを暗号化し、独自の Azure Key Vault を使用して暗号化キーを管理します。
環境の準備
まず、Azure VM で新しい Windows VM をデプロイします。
Windows VM をデプロイする
新しい Windows VM を作成してデプロイするには、右側の Azure PowerShell ウィンドウを使用します。
選択された場所を保持するには、PowerShell 変数を定義します。 リソース グループと同じリージョンを使用します。
$location = (Get-AzResourceGroup -name <rgn>[sandbox Resource Group]</rgn>).location
ヒント
[コピー] ボタンを使用して、コマンドをクリップボードにコピーできます。 貼り付けるには、Cloud Shell ターミナル内で新しい行を右クリックして [貼り付け] を選択するか、Shift + Insert キーボード ショートカット (macOS では ⌘ + V) を使用します。
次に、リソース グループと VM の名前を取り込むためのさらに便利な変数をいくつか定義します。 ここでは、事前に作成されたリソース グループを使用しています。 通常は、
New-AzResourceGroup
を使用して、サブスクリプションに「新しい」リソース グループを作成します。$vmName = "fmdata-vm01" $rgName = "<rgn>[sandbox Resource Group]</rgn>"
新しい VM を作成するには、
New-AzVm
を使用します。New-AzVm ` -ResourceGroupName $rgName ` -Name $vmName ` -Location $location ` -OpenPorts 3389
Cloud Shell によりメッセージが表示されたら、VM のユーザー名とパスワードを入力します。 この情報は、VM 用に作成される初期アカウントとして使用されます。
Note
多くののオプションを指定しなかったため、このコマンドではいくつかの既定値が使用されます。 具体的に言うと、サイズが Standard_DS1_v2 に設定された Windows 2016 Server イメージが作成されます。 VM サイズを指定する場合、Basic レベルの VM では ADE がサポートされないことにご注意ください。
VM のデプロイの完了後に、変数に VM の詳細を取り込みます。 この変数を使用して、作成内容を確認することができます。
$vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
次のコードを使用して、VM に接続されている OS ディスクを確認できます。
$vm.StorageProfile.OSDisk
OsType : Windows EncryptionSettings : Name : fmdata-vm01_OsDisk_1_6bcf8dcd49794aa785bad45221ec4433 Vhd : Image : Caching : ReadWrite WriteAcceleratorEnabled : CreateOption : FromImage DiskSizeGB : 127 ManagedDisk : Microsoft.Azure.Management.Compute.Models.ManagedDiskP arameters
OS ディスク (およびすべてのデータ ディスク) の現在の暗号化の状態を確認します。
Get-AzVmDiskEncryptionStatus ` -ResourceGroupName $rgName ` -VMName $vmName
ディスクは現在 "暗号化されていない" ことに注目してください。
OsVolumeEncrypted : NotEncrypted DataVolumesEncrypted : NotEncrypted OsVolumeEncryptionSettings : ProgressMessage : No Encryption extension or metadata found on the VM
これを変更してみましょう。
Azure Disk Encryption で VM ディスクを暗号化する
このデータを保護する必要があるため、ディスクを暗号化してみます。 次のようないくつかの手順を行う必要があることを思い出してください。
キー コンテナーを作成します。
ディスク暗号化をサポートするようにキー コンテナーを設定します。
キー コンテナーに格納されているキーを使用して、VM ディスクを暗号化するように Azure に指示します。
ヒント
ここでは手順を個別に見ていきますが、ご自分のサブスクリプションでこのタスクを実行する際は、このモジュールの「まとめ」セクション内でリンクされている便利な PowerShell スクリプトを使用することができます。
キー コンテナーを作成する
Azure Key Vault を作成するには、サブスクリプションでサービスを有効にする必要があります。 サービスを 1 回だけ有効にする必要があります。
ヒント
サブスクリプションによっては、Register-AzResourceProvider
コマンドレットを使用して Microsoft.KeyVault プロバイダーを有効にする必要がある場合があります。 Azure サンドボックス サブスクリプションではこれは必要ありません。
新しいキー コンテナーの名前を決めます。 これは一意である必要があります。数字、文字、ダッシュで構成された 3 から 24 文字の範囲で指定できます。 末尾に乱数をいくつか追加して、以下の 1234 を置き換えてみてください。
$keyVaultName = "mvmdsk-kv-1234"
New-AzKeyVault
を使用して Azure キー コンテナーを作成します。- ご自身の VM と同じリソース グループ "および" 場所に配置されていることを確認します。
- ディスクの暗号化で使用するためにキー コンテナーを有効にします。
- 一意のキー コンテナー名を指定します。
New-AzKeyVault -VaultName $keyVaultName ` -Location $location ` -ResourceGroupName $rgName ` -EnabledForDiskEncryption
このコマンドから、アクセス権を持つユーザーがいないことを示す警告が表示されます。
WARNING: Access policy is not set. No user or app have access permission to use this vault. This warning can occur if the vault was created by a service principal. To set access policies, use Set-AzKeyVaultAccessPolicy.
この警告は VM 用の暗号化キーを格納するコンテナーを使用するだけで、ユーザーがこのデータにアクセスする必要はないため、問題はありません。
ディスクを暗号化する
ディスクを暗号化する準備はほとんどできています。 作業を行う前に、バックアップの作成に関する警告が表示されます。
重要
運用システムを使用している場合は、Azure Backup を使用するか、スナップショットを作成して、マネージド ディスクのバックアップを作成する必要があります。 スナップショットは Azure portal 内でまたはコマンドラインを使用して作成することができます。 PowerShell の場合は、New-AzSnapshot
コマンドレットを使用します。 これはシンプルな演習であり、完了時にこのデータを破棄するため、この手順はスキップします。
キー コンテナーの情報を保持するには、変数を定義します。
$keyVault = Get-AzKeyVault ` -VaultName $keyVaultName ` -ResourceGroupName $rgName
次に、VM ディスクを暗号化するために、
Set-AzVmDiskEncryptionExtension
コマンドレットを実行しますVolumeType
パラメーターを使用して、暗号化するディスク ([すべて] | [OS] | [データ]) を指定できます。 既定値は All です。 Linux の場合、データ ディスクを暗号化できるのは一部のディストリビューションのみとなります。- スナップショットがない場合、マネージド ディスクに
SkipVmBackup
フラグを指定できます。
Set-AzVmDiskEncryptionExtension ` -ResourceGroupName $rgName ` -VMName $vmName ` -VolumeType All ` -DiskEncryptionKeyVaultId $keyVault.ResourceId ` -DiskEncryptionKeyVaultUrl $keyVault.VaultUri ` -SkipVmBackup
このコマンドレットでは、VM をオフラインにする必要があることと、タスクが完了するまで数分かかる場合があることを示す警告が表示されます。 先に進んで、作業を続行します。
Enable AzureDiskEncryption on the VM This cmdlet prepares the VM and enables encryption which may reboot the machine and takes 10-15 minutes to finish. Please save your work on the VM before confirming. Do you want to continue? [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y
コマンドレットの実行が完了したら、暗号化の状態をもう一度確認します。
Get-AzVmDiskEncryptionStatus -ResourceGroupName $rgName -VMName $vmName
これで OS ディスクが暗号化されるはずです。 Windows に表示される、接続されたデータ ディスクもすべて暗号化されます。
OsVolumeEncrypted : Encrypted DataVolumesEncrypted : NoDiskFound OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings ProgressMessage : Provisioning succeeded
Note
暗号化後に追加された新しいディスクは、自動的に暗号化されません。 Set-AzVMDiskEncryptionExtension
コマンドレットを再実行して、新しいディスクを暗号化することができます。 既にディスクが暗号化されている VM にディスクを追加する場合は、必ず、新しいシーケンス番号を指定してください。 また、オペレーティング システムに表示されないディスクは暗号化されません。 BitLocker 拡張機能でディスクを表示するには、ディスクを適切にパーティション分割、フォーマット、マウントする必要があります。