Проверка состояния шифрования для Linux
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
Эта статья охватывает проверку состояния шифрования виртуальной машины с помощью различных методов: портала Azure, PowerShell, Azure CLI или операционной системы виртуальной машины.
Состояние шифрования можно проверить во время или после его выполнения, выполнив одно из следующих действий.
- Проверка дисков, подключенных к определенной виртуальной машине.
- Запрос параметров шифрования на каждом диске, подключен ли диск или нет.
Этот сценарий относится расширениям шифрования дисков Azure с двойным или одиночным проходом. Дистрибутивы Linux являются единственной средой для этого сценария.
Примечание.
Мы используем переменные в этой статье. Заменяйте значения соответствующим образом.
Портал
В портал Azure в разделе расширения выберите расширение шифрования дисков Azure в списке. Информация для сообщения о состоянии указывает текущее состояние шифрования:
В списке расширений вы увидите соответствующую версию расширения шифрования дисков Azure. Версия 0.x соответствует двум проходам шифрования дисков Azure, а версия 1. x — одному проходу шифрования дисков Azure.
Чтобы получить дополнительные сведения, выберите расширение и затем выберите Просмотр подробных сведений о состоянии. Подробное состояние процесса шифрования отображается в формате JSON.
Еще один способ проверить состояние шифрования — просмотреть раздел Параметры диска.
Примечание.
Это состояние означает, что на дисках помечены параметры шифрования, а не то, что все они были зашифрованы на уровне операционной системы.
Диски сперва помечаются, а затем шифруются, это сделано намеренно. В случае сбоя процесса шифрования диски могут оказаться помеченными, но не зашифрованными.
Чтобы убедиться, что диски действительно зашифрованы, можно еще раз проверить шифрование каждого диска на уровне операционной системы.
PowerShell
Вы можете проверить общее состояние шифрования зашифрованной виртуальной машины с помощью следующей команды PowerShell:
$VMNAME="VMNAME"
$RGNAME="RGNAME"
Get-AzVmDiskEncryptionStatus -ResourceGroupName ${RGNAME} -VMName ${VMNAME}
Вы можете записать параметры шифрования с каждого диска, используя следующие команды PowerShell.
Одиночный проход
При одном проходе параметры шифрования помечаются на каждом из дисков (ОС и данных). Параметры шифрования для диска ОС можно записать одним проходом следующим образом:
$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 "============================================================================================================================================================="
}
Двойной проход
При двойном проходе параметры шифрования помечаются в модели виртуальной машины, а не на каждом отдельном диске.
Чтобы убедиться, что параметры шифрования были помечены в двойном проходе, используйте следующие команды:
$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 "============================================================================================================================================================="
Неподключенные диски
Проверьте параметры шифрования для дисков, которые не подключены к виртуальной машине.
Управляемые диски
$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
Вы можете проверить общее состояние шифрования зашифрованной виртуальной машины с помощью следующих команд 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
Внимание
Если на диске не помечены параметры шифрования, вы увидите текст Диск не зашифрован.
Чтобы получить подробные сведения о состоянии и параметрах шифрования, используйте следующие команды.
Диск операционной системы.
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
Вы также можете проверить параметры шифрования в профиле хранилища модели виртуальной машины на диске ОС:
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"
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 "============================================================================================================================================================="
Неуправляемые диски
Неуправляемые диски — это VHD-файлы, которые хранятся в учетных записях хранения Azure как страничные BLOB-объекты.
Чтобы получить сведения о конкретном диске, необходимо указать:
- имя учетной записи хранения, содержащей диск;
- строку подключения для этой конкретной учетной записи хранения;
- имя контейнера, в котором хранится диск;
- имя диска.
Эта команда выводит список всех идентификаторов для всех учетных записей хранения:
az storage account list --query [].[id] -o tsv
Идентификаторы учетной записи хранения перечислены в следующем формате:
/subscriptions/<subscription id>/resourceGroups/<имя группы ресурсов><имя учетной записи хранения>
Выберите соответствующий идентификатор и сохраните его в переменной:
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"
Используйте эту команду, чтобы вывести список всех больших двоичных объектов в определенном контейнере:
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
Операционная система
Проверьте, зашифрованы ли разделы диска данных (и не зашифрованы ли они на диске ОС).
При шифровании раздела или диска он отображается как тип 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