適用対象: ✔️ Linux VM ✔️ フレキシブルなスケール セット
この記事では、Azure portal、PowerShell、Azure CLI、仮想マシン (VM) のオペレーティング システムを使用した各種方法によって、仮想マシンの暗号化の状態を確認します。
暗号化の状態は、次のいずれかの方法により暗号化中または暗号化後に確認することができます。
- 特定の VM にアタッチされたディスクを確認する。
- 各ディスクの暗号化の設定を照会する。この方法は、ディスクがアタッチされているかどうかに関係しません。
このシナリオは、Azure Disk Encryption のデュアルパス拡張機能とシングルパス拡張機能を対象としています。 このシナリオに該当する環境は、Linux ディストリビューションのみです。
注意
この記事では、変数を使用しています。 値は適宜置き換えてください。
ポータル
Azure portal の [拡張機能] セクションで、一覧から Azure Disk Encryption 拡張機能を選択します。 [ステータス メッセージ] の情報に、現在の暗号化の状態が示されます。
拡張機能の一覧には、対応する Azure Disk Encryption 拡張機能のバージョンが表示されます。 バージョン 0.x は Azure Disk Encryption デュアル パスに、バージョン 1.x は Azure Disk Encryption シングル パスに対応します。
拡張機能を選び、 [詳細な状態の表示] を選択すると、さらに詳しい情報が得られます。 暗号化プロセスの詳細な状態が、JSON 形式で表示されます。
暗号化の状態は、 [ディスクの設定] セクションを見て確認することもできます。
Note
この状態は、ディスクに暗号化の設定がスタンプされていることを意味するものであり、実際に OS レベルで暗号化されているという意味ではありません。
設計上、ディスクはまずスタンプされ、その後暗号化されます。 暗号化プロセスに失敗した場合、ディスクはスタンプされているものの暗号化されていない状態になります。
実際にディスクが暗号化されているかどうかを確かめるために、OS レベルで各ディスクの暗号化をダブルチェックしてください。
PowerShell
暗号化された VM の "全体的な" 暗号化の状態は、次の PowerShell コマンドを使用して確認できます。
$VMNAME="VMNAME"
$RGNAME="RGNAME"
Get-AzVmDiskEncryptionStatus -ResourceGroupName ${RGNAME} -VMName ${VMNAME}
各ディスクの暗号化の設定を取得するには、次の PowerShell コマンドを使用します。
シングル パス
シングル パスでは、各ディスク (OS とデータ) に暗号化設定がスタンプされます。 シングル パスの OS ディスクの暗号化設定は、次のようにして取得できます。
$RGNAME = "RGNAME"
$VMNAME = "VMNAME"
$VM = Get-AzVM -Name ${VMNAME} -ResourceGroupName ${RGNAME}
$Sourcedisk = Get-AzDisk -ResourceGroupName ${RGNAME} -DiskName $VM.StorageProfile.OsDisk.Name
Write-Host "============================================================================================================================================================="
Write-Host "Encryption Settings:"
Write-Host "============================================================================================================================================================="
Write-Host "Enabled:" $Sourcedisk.EncryptionSettingsCollection.Enabled
Write-Host "Version:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettingsVersion
Write-Host "Source Vault:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SourceVault.Id
Write-Host "Secret URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SecretUrl
Write-Host "Key URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.KeyEncryptionKey.KeyUrl
Write-Host "============================================================================================================================================================="
ディスクに暗号化の設定がスタンプされていない場合、出力は空になります。
データ ディスクの暗号化設定を取得するには、次のコマンドを使用します。
$RGNAME = "RGNAME"
$VMNAME = "VMNAME"
$VM = Get-AzVM -Name ${VMNAME} -ResourceGroupName ${RGNAME}
clear
foreach ($i in $VM.StorageProfile.DataDisks|ForEach-Object{$_.Name})
{
Write-Host "============================================================================================================================================================="
Write-Host "Encryption Settings:"
Write-Host "============================================================================================================================================================="
Write-Host "Checking Disk:" $i
$Disk=(Get-AzDisk -ResourceGroupName ${RGNAME} -DiskName $i)
Write-Host "Encryption Enable: " $Sourcedisk.EncryptionSettingsCollection.Enabled
Write-Host "Encryption KeyEncryptionKey: " $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.KeyEncryptionKey.KeyUrl;
Write-Host "Encryption DiskEncryptionKey: " $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SecretUrl;
Write-Host "============================================================================================================================================================="
}
デュアル パス
デュアル パスでは、暗号化の設定は、個々のディスクではなく VM モデルにスタンプされます。
暗号化設定がデュアル パスでスタンプされていることを確認するには、次のコマンドを使用します。
$RGNAME = "RGNAME"
$VMNAME = "VMNAME"
$vm = Get-AzVm -ResourceGroupName ${RGNAME} -Name ${VMNAME};
$Sourcedisk = Get-AzDisk -ResourceGroupName ${RGNAME} -DiskName $VM.StorageProfile.OsDisk.Name
clear
Write-Host "============================================================================================================================================================="
Write-Host "Encryption Settings:"
Write-Host "============================================================================================================================================================="
Write-Host "Enabled:" $Sourcedisk.EncryptionSettingsCollection.Enabled
Write-Host "Version:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettingsVersion
Write-Host "Source Vault:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SourceVault.Id
Write-Host "Secret URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SecretUrl
Write-Host "Key URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.KeyEncryptionKey.KeyUrl
Write-Host "============================================================================================================================================================="
アタッチされていないディスク
VM にアタッチされていないディスクの暗号化の設定を確認します。
マネージド ディスク
$Sourcedisk = Get-AzDisk -ResourceGroupName ${RGNAME} -DiskName ${TARGETDISKNAME}
Write-Host "============================================================================================================================================================="
Write-Host "Encryption Settings:"
Write-Host "============================================================================================================================================================="
Write-Host "Enabled:" $Sourcedisk.EncryptionSettingsCollection.Enabled
Write-Host "Version:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettingsVersion
Write-Host "Source Vault:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SourceVault.Id
Write-Host "Secret URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SecretUrl
Write-Host "Key URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.KeyEncryptionKey.KeyUrl
Write-Host "============================================================================================================================================================="
Azure CLI
暗号化された VM の "全体的な" 暗号化の状態は、次の Azure CLI コマンドを使用して確認できます。
VMNAME="VMNAME"
RGNAME="RGNAME"
az vm encryption show --name ${VMNAME} --resource-group ${RGNAME} --query "substatus"
シングル パス
各ディスクの暗号化の設定を確認するには、次の Azure CLI コマンドを使用します。
az vm encryption show -g ${RGNAME} -n ${VMNAME} --query "disks[*].[name, statuses[*].displayStatus]" -o table
重要
ディスクに暗号化の設定がスタンプされていない場合、 "ディスク暗号化なし" というテキストが表示されます。
詳細な状態と暗号化設定を取得するには、次のコマンドを使用します。
OS ディスク:
RGNAME="RGNAME"
VMNAME="VNAME"
disk=`az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.osDisk.name -o tsv`
for disk in $disk; do \
echo "============================================================================================================================================================="
echo -ne "Disk Name: "; az disk show -g ${RGNAME} -n ${disk} --query name -o tsv; \
echo -ne "Encryption Enabled: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.enabled -o tsv; \
echo -ne "Version: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettingsVersion -o tsv; \
echo -ne "Disk Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].diskEncryptionKey.secretUrl -o tsv; \
echo -ne "key Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].keyEncryptionKey.keyUrl -o tsv; \
echo "============================================================================================================================================================="
done
データ ディスク:
RGNAME="RGNAME"
VMNAME="VMNAME"
az vm encryption show --name ${VMNAME} --resource-group ${RGNAME} --query "substatus"
for disk in `az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.dataDisks[].name -o tsv`; do \
echo "============================================================================================================================================================="; \
echo -ne "Disk Name: "; az disk show -g ${RGNAME} -n ${disk} --query name -o tsv; \
echo -ne "Encryption Enabled: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.enabled -o tsv; \
echo -ne "Version: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettingsVersion -o tsv; \
echo -ne "Disk Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].diskEncryptionKey.secretUrl -o tsv; \
echo -ne "key Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].keyEncryptionKey.keyUrl -o tsv; \
echo "============================================================================================================================================================="
done
デュアル パス
az vm encryption show --name ${VMNAME} --resource-group ${RGNAME} -o table
暗号化設定は、OS ディスクの VM モデル ストレージ プロファイルでも確認できます。
disk=`az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.osDisk.name -o tsv`
for disk in $disk; do \
echo "============================================================================================================================================================="; \
echo -ne "Disk Name: "; az disk show -g ${RGNAME} -n ${disk} --query name -o tsv; \
echo -ne "Encryption Enabled: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.enabled -o tsv; \
echo -ne "Version: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettingsVersion -o tsv; \
echo -ne "Disk Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].diskEncryptionKey.secretUrl -o tsv; \
echo -ne "key Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].keyEncryptionKey.keyUrl -o tsv; \
echo "============================================================================================================================================================="
done
アタッチされていないディスク
VM にアタッチされていないディスクの暗号化の設定を確認します。
マネージド ディスク
RGNAME="RGNAME"
TARGETDISKNAME="DISKNAME"
echo "============================================================================================================================================================="
echo -ne "Disk Name: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query name -o tsv; \
echo -ne "Encryption Enabled: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.enabled -o tsv; \
echo -ne "Version: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettingsVersion -o tsv; \
echo -ne "Disk Encryption Key: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettings[].diskEncryptionKey.secretUrl -o tsv; \
echo -ne "key Encryption Key: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettings[].keyEncryptionKey.keyUrl -o tsv; \
echo "============================================================================================================================================================="
非管理対象ディスク
アンマネージド ディスクは、Azure Storage アカウントでページ BLOB として格納された VHD ファイルです。
特定のディスクの詳細を把握するには、次の情報を指定する必要があります。
- ディスクが含まれるストレージ アカウントの ID。
- 対象となる特定のストレージ アカウントの接続文字列。
- ディスクを格納するコンテナーの名前。
- ディスク名。
次のコマンドは、すべてのストレージ アカウントの ID を一覧表示するものです。
az storage account list --query [].[id] -o tsv
ストレージ アカウントの ID が、次の形式で一覧表示されます。
/subscriptions/<サブスクリプション ID>/resourceGroups/<リソース グループ名>/providers/Microsoft.Storage/storageAccounts/<ストレージ アカウント名>
適切な ID を選択して変数に格納します。
id="/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name>"
次のコマンドは、ある特定のストレージ アカウントの接続文字列を取得して変数に格納するものです。
ConnectionString=$(az storage account show-connection-string --ids $id --query connectionString -o tsv)
次のコマンドは、ストレージ アカウントにあるすべてのコンテナーを一覧表示するものです。
az storage container list --connection-string $ConnectionString --query [].[name] -o tsv
ディスクに使用されるコンテナーには通常、"vhds" という名前が付けられます。
そのコンテナー名を変数に格納します。
ContainerName="name of the container"
特定のコンテナーにあるすべての BLOB を一覧表示するには、次のコマンドを使用します。
az storage blob list -c ${ContainerName} --connection-string $ConnectionString --query [].[name] -o tsv
照会したいディスクを選んで、その名前を変数に格納します。
DiskName="diskname.vhd"
ディスクの暗号化設定を照会します。
az storage blob show -c ${ContainerName} --connection-string ${ConnectionString} -n ${DiskName} --query metadata.DiskEncryptionSettings
オペレーティング システム
データ ディスクのパーティションが暗号化されている (かつ OS ディスクが暗号化されていない) かどうかを確認します。
暗号化されているパーティションまたはディスクは、 "crypt" タイプとして表示されます。 暗号化されていない場合は、 "part" または "disk" タイプとして表示されます。
sudo lsblk
以下の lsblk バリアントを使用すると、さらに詳しい情報を取得できます。
拡張機能によってマウントされた crypt タイプ レイヤーが表示されます。 crypto_LUKS FSTYPE の通常のディスクと論理ボリュームの例を、次に示します。
sudo lsblk -o NAME,TYPE,FSTYPE,LABEL,SIZE,RO,MOUNTPOINT
さらに、データ ディスクにキーが読み込まれているかどうかも確認できます。
sudo cryptsetup luksDump /dev/VGNAME/LVNAME
sudo cryptsetup luksDump /dev/sdd1
また、どの dm デバイスが crypt として表示されるかを調べることもできます。
sudo dmsetup ls --target crypt