Выпуск безопасного ключа с конфиденциальными контейнерами в экземпляре контейнеров Azure (ACI)

Поток безопасного выпуска ключей (SKR) с Azure Key Vault (AKV) с предложениями конфиденциальных контейнеров может реализовываться несколькими способами. Конфиденциальные контейнеры запускают гостевое просвещенное устройство AMD SEV-SNP через ядро Linux, использующее гостевое встроенное ПО с необходимыми исправлениями Hyper-V, которые мы называем прямой загрузкой Linux (DLB). Эта платформа не использует vTPM и HCL на основе конфиденциальных виртуальных машин с поддержкой AMD SEV-SNP. В этом концептуальном документе предполагается, что вы планируете запустить контейнеры в службе поддержки контейнеров Azure, выбрав номер SKU для конфиденциальных вычислений.

  • Вспомогательный контейнер на стороне автомобиля, предоставляемый Azure
  • Настраиваемая реализация с приложением контейнера

Вспомогательный контейнер side-Car, предоставляемый Azure

Проект открытый код GitHub "конфиденциальные клиентские автомобили" содержит сведения о том, как создать этот контейнер и какие параметры и переменные среды необходимы для подготовки и запуска этого контейнера на стороне автомобиля. Текущая реализация автомобиля на стороне предоставляет различные ИНТЕРФЕЙСы REST API HTTP, которые контейнер основного приложения может использовать для получения ключа из AKV. Интеграция через Microsoft Аттестация Azure(MAA) уже встроенна. Инструкции по подготовке для запуска контейнера SKR на стороне автомобиля см. здесь.

Основное приложение контейнера приложения может вызывать конечные точки веб-API на стороне автомобиля, как описано в примере ниже. Параллельные автомобили выполняются в одной группе контейнеров и являются локальной конечной точкой для контейнера приложения. Полные сведения об API см . здесь

Метод key/release POST ожидает JSON следующего формата:

{	
    "maa_endpoint": "<maa endpoint>", //https://learn.microsoft.com/en-us/azure/attestation/quickstart-portal#attestation-provider
    "akv_endpoint": "<akv endpoint>", //AKV URI
    "kid": "<key identifier>" //key name,
    "access_token": "optional aad token if the command will run in a resource without proper managed identity assigned"
}

При успешном key/release выполнении ответ метода POST содержит StatusOK заголовок и полезные данные следующего формата:

{
    "key": "<key in JSON Web Key format>"
}

При ошибке key/release ответ метода POST содержит StatusForbidden заголовок и полезные данные следующего формата:

{
    "error": "<error message>"
}

Настраиваемая реализация с приложением контейнера

Чтобы выполнить пользовательское приложение контейнера, которое расширяет возможности Azure Key Vault (AKV) — безопасный выпуск ключей и Microsoft Аттестация Azure (MAA), используйте приведенный ниже поток ссылок высокого уровня. Простой подход заключается в проверке текущего кода реализации бокового автомобиля в этом проекте GitHub на стороне автомобиля.

Image of the aforementioned operations, which you should be performing.

  1. Шаг 1. Настройка AKV с помощью экспортируемого ключа и присоединение политики выпуска. Дополнительные сведения см. здесь
  2. Шаг 2. Настройка управляемого удостоверения с идентификатором Microsoft Entra и присоединение к AKV. Дополнительные сведения см. здесь
  3. Шаг 3. Развертывание приложения контейнера с необходимыми параметрами в ACI путем настройки политики принудительного применения конфиденциальных вычислений. Дополнительные сведения см. здесь
  4. Шаг 4. На этом шаге приложение должно получить отчет о оборудовании RAW AMD SEV-SNP, выполнив вызов сокета Linux IOCTL. Для выполнения этого действия не требуется какая-либо гостевая библиотека аттестации. Дополнительные сведения о существующей реализации на стороне автомобиля
  5. Шаг 5. Получение цепочки сертификатов AMD SEV-SNP для группы контейнеров. Эти сертификаты доставляются из конечной точки IMDS узла Azure. Дополнительные сведения см. здесь
  6. Шаг 6. Отправка отчета о оборудовании SNP RAW и сведений о сертификате в MAA для проверки и возврата утверждений. Дополнительные сведения см. здесь
  7. Шаг 7. Отправка маркера MAA и маркера управляемого удостоверения, созданного ACI, в AKV для выпуска ключа. Дополнительные сведения см. здесь

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

Ссылки

ACI с развертываниями конфиденциальных контейнеров

Реализация side-Car с зашифрованным получением большого двоичного объекта и расшифровка с помощью ключа SKR AKV

AKV SKR с конфиденциальной виртуальной машиной AMD SEV-SNP

Microsoft Аттестация Azure (MAA)

Примеры политики SKR