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


Ключи UEFI безопасной загрузки

Для некоторых сложных сценариев необходимо настроить безопасные ключи загрузки. Настройка ключей UEFI безопасной загрузки позволяет изменять ключи единого расширяемого интерфейса встроенного ПО (UEFI) — PK, KEK, DB, DBX — в образе для виртуальной машины с поддержкой безопасной загрузки Azure (виртуальная машина) (доверенный запуск и конфиденциальная виртуальная машина). С помощью этой функции ключи UEFI можно полностью заменить или добавить в базы данных ключей по умолчанию.

При развертывании безопасной загрузки виртуальной машины Azure подписи всех загрузочных компонентов, таких как UEFI, shim/bootloader, ядро и модули ядра или драйверы, проверяются во время загрузки. Проверка завершается ошибкой, если подписи загрузочного компонента не соответствуют ключу в доверенных базах данных ключей, а виртуальная машина не загружается. Эта ошибка может произойти, если: компонент подписан ключом, не найденным в доверенных базах данных ключей, ключ подписи указан в отозванной базе данных ключей или компонент не указан. С помощью пользовательских ключей UEFI безопасной загрузки необходимые подписи можно предоставить для успешной загрузки виртуальной машины.

Настройка ключа UEFI предлагается через ресурсы коллекции вычислений Azure . Если вы используете образ Marketplace для создания доверенной виртуальной машины запуска, необходимо сначала создать ресурсы коллекции вычислений Azure с помощью образа Marketplace для изменения ключей UEFI.

Примечание.

Настройка ключей UEFI предназначена для передовых клиентов, знакомых с внутренней работой технологии безопасной загрузки.

Предпосылки

Для настройки ключей UEFI необходимы следующие ресурсы коллекции вычислений Azure:

В настоящее время настройка ключа UEFI доступна только через REST API.

Необходимо подключить ресурс версии образа виртуальной машины к ресурсу определения образа виртуальной машины с типом безопасности, установленным для TrustedLaunchSupported или TrustedLaunchAndConfidentialVmSupported. Подробные инструкции по созданию ресурса определения изображения см. в разделе "Создание определения изображения" и версии образа. Чтобы создать ресурс определения образа виртуальной машины, необходимо также создать ресурс галереи. Вы можете выбрать портал Azure, PowerShell, CLI или REST API для создания ресурсов определения коллекции и изображений.

Шаблон ARM

Универсальный шаблон ARM предоставляется в качестве примера для создания ресурса версии образа. Для настройки ключей UEFI также необходимо включить блок профиля безопасности в ресурс версии образа. Каждый сценарий в разделе "Сценарии" содержит сведения о том, что происходит внутри блока securityProfile .

{
    "apiVersion": "2022-03-03",
    "type": "Microsoft.Compute/galleries/images/versions",
    "dependsOn": [
        "[concat('Microsoft.Compute/galleries/', parameters('galleryName'), '/images/', parameters('imageDefinitionName'))]"
    ],
    "name": "[concat(parameters('galleryName'), '/', parameters('imageDefinitionName'), '/', parameters('versionName'))]",
    "location": "[parameters('location')]",
    "properties": {
        "publishingProfile": {
            "replicaCount": "[parameters('defaultReplicaCount')]",
            "targetRegions": "[parameters('regionReplications')]",
            "excludeFromLatest": "[parameters('excludedFromLatest')]",
            "replicationMode": "[parameters('replicationMode')]"
        },
        "storageProfile": {
            "source": {
                "id": "[parameters('sourceVmId')]"
            }
        },
        "safetyProfile": {
            "allowDeletionOfReplicatedLocations": "[parameters('allowDeletionOfReplicatedLocations')]"
        },
        "securityProfile": {}
    },
    "tags": {}
}

Сценарии

В этом разделе содержатся инструкции по настройке ключей UEFI для распространенных сценариев.

Сценарий 1. Замена всех ключей UEFI

В этом сценарии вы полностью замените все ключи по умолчанию (PK, KEK, DB, DB, DBX), доступные на виртуальной машине доверенного запуска.

  1. Создайте сертификаты и (или) ключи для каждого или PK, KEK, DB и DBX. Дополнительные инструкции по различным операционным системам см. в разделе " Полезные ссылки ".
  2. Создание новой версии образа. Используйте следующий блок шаблона ARM securityProfile вместе с универсальным шаблоном ARM для создания версии образа. Замените значения JSON в Base64 formatted certificate и Base64 formatted sha256 hash на реальные значения.
"securityProfile": {
    "uefiSettings": {
        "signatureTemplateNames": [
            "NoSignatureTemplate"
        ],
        "additionalSignatures": {
            "pk": {
                "type": "x509",
                "value": [
                    "Base64 formatted certificate"
                ]
            },
            "kek": [
                {
                    "type": "x509",
                    "value": [
                        "Base64 formatted certificate"
                    ]
                }
            ],
            "db": [
                {
                    "type": "x509",
                    "value": [
                        "Base64 formatted certificate",
                        "Base64 formatted certificate"
                    ]
                }
            ],
            "dbx": [
                {
                    "type": "x509",
                    "value": [
                        "Base64 formatted certificate",
                        "Base64 formatted certificate"
                    ]
                },
                {
                    "type": "sha256",
                    "value": [
                        "Base64 formatted sha256 hash",
                        "Base64 formatted sha256 hash"
                    ]
                }
            ]
        }
    }
}
  1. Создайте виртуальную машину доверенного запуска с помощью портала Azure, PowerShell, CLI или REST API с тем же исходным образом, что и созданный с помощью ресурсов коллекции вычислений Azure.
  2. После того как виртуальная машина доверенного запуска находится в состоянии выполнения , убедитесь, что пользовательские ключи UEFI находятся в базах данных ключей UEFI.

Сценарий 2. Добавление ключей к базе данных и DBX в шаблон подписи

В этом сценарии вы добавите ключи базы данных и DBX к значениям по умолчанию, доступным в виртуальной машине доверенного запуска.

  1. Создайте сертификаты и/или ключи для каждой или БД и DBX. Дополнительные инструкции по различным операционным системам см. в разделе " Полезные ссылки ".
  2. Создание новой версии образа. Используйте следующий блок шаблона ARM securityProfile вместе с универсальным шаблоном ARM для создания версии образа. Замените значения JSON Base64 formatted certificate и Base64 formatted sha256 hash реальными значениями.
"securityProfile": {
    "uefiSettings": {
        "signatureTemplateNames": [
            "MicrosoftUefiCertificateAuthorityTemplate"
        ],
        "additionalSignatures": {
            "db": [
                {
                    "type": "x509",
                    "value": [
                        "Base64 formatted certificate",
                        "Base64 formatted certificate"
                    ]
                }
            ],
            "dbx": [
                {
                    "type": "sha256",
                    "value": [
                        "Base64 formatted sha256 hash",
                        "Base64 formatted sha256 hash"
                    ]
                }
            ]
        }
    }
}
  1. Создайте виртуальную машину доверенного запуска с помощью портала Azure, PowerShell, CLI или REST API с тем же исходным образом, что и созданный с помощью ресурсов коллекции вычислений Azure.
  2. После того как виртуальная машина доверенного запуска находится в состоянии выполнения , убедитесь, что пользовательские ключи UEFI находятся в базах данных ключей UEFI.

Сценарий 3. Применение нескольких шаблонов подписей

В этом сценарии вы заменяете шаблоны подписей по умолчанию и внедряете несколько шаблонов подписей (UEFI, Windows) в виртуальную машину доверенного запуска.

  1. Создание новой версии образа. Используйте следующий блок шаблона ARM securityProfile с универсальным шаблоном ARM для создания новой версии образа.
"securityProfile": {
    "uefiSettings": {
        "signatureTemplateNames": [
            "MicrosoftUefiCertificateAuthorityTemplate",
            "MicrosoftWindowsTemplate"
        ]
    }
}
  1. Создайте виртуальную машину доверенного запуска с помощью портала Azure, PowerShell, CLI или REST API с тем же исходным образом, что и созданный с помощью ресурсов коллекции вычислений Azure.
  2. После того как виртуальная машина доверенного запуска находится в состоянии выполнения , убедитесь, что пользовательские ключи UEFI находятся в базах данных ключей UEFI.

Проверка ключей в базах данных UEFI

Чтобы проверить ключи, хранящиеся в базах данных UEFI, используйте следующие команды в командной строке (SSH) на нужной виртуальной машине.

// For key(s) added to db
$ mokutil --db

// For keys(s) added to dbx
$ mokutil --dbx

Убедитесь, что отображаемые ключи предоставляются версией образа.

Соображения

  • Поддерживаются облака и регионы
  • Для общедоступного облака поддерживаются все регионы, кроме следующих регионов: Восточная Австрия, Центральная часть Бельгии, Центральная часть Чили, Центральная часть Индонезии, северо-запад Израиля, Jio India Central, Jio India West, юг Малайзии, запад Малайзии, Центральная часть Мексики, Центральная часть Катара, Центральная часть США 2, юго-восточная часть США, юго-восточная часть США 3, Западная часть Швейцарии, Северный Тайвань, северо-западная часть Тайваня, Западная часть Великобритании и Западная Индия
  • Облачные сервисы USGov и Китая в настоящее время не поддерживаются