Поделиться через


Проверка состояния шифрования для Linux

Important

Шифрование дисков Azure для виртуальных машин и масштабируемых наборов виртуальных машин будет прекращено 15 сентября 2028 г. Новые клиенты должны использовать шифрование на узле для всех новых виртуальных машин. Существующие клиенты должны планировать перенос текущих виртуальных машин с поддержкой ADE в шифрование на узле до даты выхода на пенсию, чтобы избежать нарушения работы службы. См. статью "Миграция из шифрования дисков Azure в шифрование на узле".

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

В этой статье описано, как проверить состояние шифрования виртуальной машины с помощью различных методов: портала Azure, PowerShell, Azure CLI или операционной системы виртуальной машины.

Вы можете проверить состояние шифрования во время или после шифрования, выполнив следующие действия.

  • Проверка дисков, подключенных к определенной виртуальной машине.
  • Запрос параметров шифрования на каждом диске, независимо от того, подключен ли диск или не подключен.

Этот сценарий применяется для двухпроходных и однопроходных расширений шифрования дисков Azure. Дистрибутивы Linux являются единственной средой для этого сценария.

Note

В этой статье используются переменные. Замените соответствующие значения.

Portal

На портале Azure в разделе "Расширения" выберите расширение шифрования дисков Azure в списке. Сведения о сообщении о состоянии указывают текущее состояние шифрования:

Проверка портала с выделением состояния, версии и сообщения о состоянии

В списке расширений вы увидите соответствующую версию расширения шифрования дисков Azure. Версия 0.x соответствует двойному проходу шифрования дисков Azure, а версия 1.x соответствует одному проходу шифрования дисков Azure.

Дополнительные сведения можно получить, выбрав расширение, а затем выбрав "Просмотреть подробное состояние". Подробное состояние процесса шифрования отображается в формате JSON.

Проверка портала с выделенной ссылкой

Подробное состояние в формате JSON

Другим способом проверки состояния шифрования является просмотр раздела параметров диска .

Состояние шифрования для дисков операционной системы и дисков данных

Note

Это состояние означает, что диски имеют метки параметров шифрования, а не то, что они были зашифрованы на уровне ОС.

По проектированию диски сначала маркируются и шифруются позже. Если процесс шифрования завершается сбоем, диски могут быть отпечатанными, но не зашифрованными.

Чтобы убедиться, что диски действительно зашифрованы, можно дважды проверить шифрование каждого диска на уровне ОС.

PowerShell

Вы можете проверить общее состояние шифрования зашифрованной виртуальной машины с помощью следующих команд PowerShell:

   $VMNAME="VMNAME"
   $RGNAME="RGNAME"
   Get-AzVmDiskEncryptionStatus -ResourceGroupName  ${RGNAME} -VMName ${VMNAME}

Общее состояние шифрования в PowerShell

Параметры шифрования можно записать с каждого диска с помощью следующих команд 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

Один проход

Параметры шифрования для каждого диска можно проверить с помощью следующих команд Azure CLI:

az vm encryption show -g ${RGNAME} -n ${VMNAME} --query "disks[*].[name, statuses[*].displayStatus]"  -o table

Параметры шифрования данных

Important

Если на диске нет меток параметров шифрования, вы увидите текст Диск не зашифрован.

Используйте следующие команды, чтобы получить подробные параметры состояния и шифрования.

Диск ОС:

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

Общие параметры шифрования для двойного прохода через Azure CLI

Вы также можете проверить параметры шифрования в профиле хранилища модели виртуальной машины диска ОС:

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

Профиль виртуальной машины для двойного прохода через Azure CLI

Неподключенные диски

Проверьте параметры шифрования дисков, которые не подключены к виртуальной машине.

Управляемые диски

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.

Чтобы получить сведения для определенного диска, необходимо указать следующее:

  • Идентификатор учетной записи хранения, содержащей диск.
  • Строка подключения для конкретной учетной записи хранения.
  • Имя контейнера, в который хранится диск.
  • Имя диска.

Эта команда содержит все идентификаторы для всех учетных записей хранения:

az storage account list --query [].[id] -o tsv

Идентификаторы учетных записей хранения перечислены в следующей форме:

/subscriptions/<идентификатор подписки>/resourceGroups/<имя группы ресурсов>/providers/Microsoft.Storage/storageAccounts/<имя учетной записи хранения>

Выберите соответствующий идентификатор и сохраните его в переменной:

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

Операционная система

Проверьте, зашифрованы ли разделы диска данных (а диск ОС — нет).

При шифровании секции или диска он отображается как тип шифрования . Если он не зашифрован, он отображается как тип части или диска .

sudo lsblk

Уровень шифрования ОС для секции

Дополнительные сведения можно получить с помощью следующего варианта lsblk .

Вы увидите слой типа шифрования, монтируемый расширением. В следующем примере показаны логические тома и обычные диски с 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

Дальнейшие шаги