Руководство. Подготовка развертывания для конфиденциального контейнера на Экземпляры контейнеров Azure
В Экземпляры контейнеров Azure можно использовать конфиденциальные контейнеры на бессерверной платформе для запуска приложений контейнеров в аппаратной и проверенной доверенной среде выполнения (TEE). Эта возможность может помочь защитить используемые данные и обеспечить шифрование в памяти с помощью безопасного вложенного разбиения на страницы.
В этом руководстве описано следующее:
- Создайте шаблон Azure Resource Manager (шаблон ARM) для конфиденциальной группы контейнеров.
- Создайте политику применения конфиденциальных вычислений (CCE).
- Разверните конфиденциальную группу контейнеров в Azure.
Необходимые компоненты
Чтобы завершить работу с этим руководством, необходимо выполнить следующие требования:
Azure CLI. На локальном компьютере необходимо установить Azure CLI версии 2.44.1 или более поздней версии. Чтобы узнать, какая версия используется, выполните команду
az --version
. Если вам необходимо выполнить установку или обновление, обратитесь к статье Установка Azure CLI.Расширение конференц-связи Azure CLI. Для создания политик принудительного применения конфиденциальных вычислений необходимо установить расширение confcom Azure CLI версии 0.30+.
az extension add -n confcom
Docker: Вам нужна локальная установка Docker. Docker предоставляет пакеты, которые настраивают среду Docker в ОС macOS, Windows и Linux.
Для выполнения действий, описанных в этом учебнике, требуется базовое понимание таких основных понятий Docker, как контейнеры и образы контейнеров, а также знание основных команд
docker
. Ознакомьтесь с общими сведениями о Docker и контейнерах.
Внимание
Так как в Azure Cloud Shell нет управляющей программы Docker, необходимо установить интерфейс командной строки Azure и подсистему Docker на локальном компьютере , чтобы завершить работу с этим руководством. Вы не можете использовать Azure Cloud Shell для этого руководства.
Создание шаблона ARM для группы контейнеров Экземпляры контейнеров
В этом руководстве вы развернете приложение Hello World, которое создает отчет об аттестации оборудования. Сначала создайте шаблон ARM с ресурсом группы контейнеров, чтобы определить свойства этого приложения. Затем вы используете этот шаблон ARM с инструментом конференц-связи Azure CLI для создания политики CCE для аттестации.
В этом руководстве в качестве примера используется этот шаблон ARM. Чтобы просмотреть исходный код для этого приложения, см. Экземпляры контейнеров Azure Конфиденциальный hello World.
Пример шаблона добавляет два свойства в определение ресурса Экземпляры контейнеров, чтобы сделать группу контейнеров конфиденциальной:
sku
: позволяет выбрать между развертываниями конфиденциальной и стандартной группы контейнеров. Если вы не добавите это свойство в ресурс, группа контейнеров будет стандартным развертыванием.confidentialComputeProperties
: позволяет передавать настраиваемую политику CCE для аттестации группы контейнеров. Если этот объект не добавлен в ресурс, компоненты программного обеспечения, выполняемые в группе контейнеров, не будут проверены.
Примечание.
Параметр ccePolicy
под confidentialComputeProperties
пустым. Вы заполните его после создания политики позже в руководстве.
Используйте предпочитаемый текстовый редактор, чтобы сохранить этот шаблон ARM на локальном компьютере как template.json.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string",
"defaultValue": "helloworld",
"metadata": {
"description": "Name for the container group"
}
},
"location": {
"type": "string",
"defaultValue": "North Europe",
"metadata": {
"description": "Location for all resources."
}
},
"image": {
"type": "string",
"defaultValue": "mcr.microsoft.com/aci/aci-confidential-helloworld:v1",
"metadata": {
"description": "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials."
}
},
"port": {
"type": "int",
"defaultValue": 80,
"metadata": {
"description": "Port to open on the container and the public IP address."
}
},
"cpuCores": {
"type": "int",
"defaultValue": 1,
"metadata": {
"description": "The number of CPU cores to allocate to the container."
}
},
"memoryInGb": {
"type": "int",
"defaultValue": 1,
"metadata": {
"description": "The amount of memory to allocate to the container in gigabytes."
}
},
"restartPolicy": {
"type": "string",
"defaultValue": "Never",
"allowedValues": [
"Always",
"Never",
"OnFailure"
],
"metadata": {
"description": "The behavior of Azure runtime if container has stopped."
}
}
},
"resources": [
{
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2023-05-01",
"name": "[parameters('name')]",
"location": "[parameters('location')]",
"properties": {
"confidentialComputeProperties": {
"ccePolicy": ""
},
"containers": [
{
"name": "[parameters('name')]",
"properties": {
"image": "[parameters('image')]",
"ports": [
{
"port": "[parameters('port')]",
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": "[parameters('cpuCores')]",
"memoryInGB": "[parameters('memoryInGb')]"
}
}
}
}
],
"sku": "Confidential",
"osType": "Linux",
"restartPolicy": "[parameters('restartPolicy')]",
"ipAddress": {
"type": "Public",
"ports": [
{
"port": "[parameters('port')]",
"protocol": "TCP"
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', parameters('name'))).ipAddress.ip]"
}
}
}
Создание настраиваемой политики CCE
С помощью созданного шаблона ARM и расширения конференц-связи Azure CLI можно создать настраиваемую политику CCE. Политика CCE используется для аттестации. Средство принимает шаблон ARM в качестве входных данных для создания политики. Политика применяет определенные образы контейнеров, переменные среды, подключения и команды, которые затем можно проверить при запуске группы контейнеров. Дополнительные сведения о расширении конференц-связи Azure CLI см . в документации на сайте GitHub.
Чтобы создать политику CCE, выполните следующую команду с помощью шаблона ARM в качестве входных данных:
az confcom acipolicygen -a .\template.json --print-policy
По завершении этой команды строка Base64, созданная в виде выходных данных, должна отображаться в следующем формате. Эта строка — это политика CCE, которую вы копируете и вставляете в шаблон ARM в качестве значения
ccePolicy
свойства.cGFja2FnZSBwb2xpY3kKCmFwaV9zdm4gOj0gIjAuOS4wIgoKaW1wb3J0IGZ1dHVyZS5rZXl3b3Jkcy5ldmVyeQppbXBvcnQgZnV0dXJlLmtleXdvcmRzLmluCgpmcmFnbWVudHMgOj0gWwpdCgpjb250YWluZXJzIDo9IFsKICAgIHsKICAgICAgICAiY29tbWFuZCI6IFsiL3BhdXNlIl0sCiAgICAgICAgImVudl9ydWxlcyI6IFt7InBhdHRlcm4iOiAiUEFUSD0vdXNyL2xvY2FsL3NiaW46L3Vzci9sb2NhbC9iaW46L3Vzci9zYmluOi91c3IvYmluOi9zYmluOi9iaW4iLCAic3RyYXRlZ3kiOiAic3RyaW5nIiwgInJlcXVpcmVkIjogdHJ1ZX0seyJwYXR0ZXJuIjogIlRFUk09eHRlcm0iLCAic3RyYXRlZ3kiOiAic3RyaW5nIiwgInJlcXVpcmVkIjogZmFsc2V9XSwKICAgICAgICAibGF5ZXJzIjogWyIxNmI1MTQwNTdhMDZhZDY2NWY5MmMwMjg2M2FjYTA3NGZkNTk3NmM3NTVkMjZiZmYxNjM2NTI5OTE2OWU4NDE1Il0sCiAgICAgICAgIm1vdW50cyI6IFtdLAogICAgICAgICJleGVjX3Byb2Nlc3NlcyI6IFtdLAogICAgICAgICJzaWduYWxzIjogW10sCiAgICAgICAgImFsbG93X2VsZXZhdGVkIjogZmFsc2UsCiAgICAgICAgIndvcmtpbmdfZGlyIjogIi8iCiAgICB9LApdCmFsbG93X3Byb3BlcnRpZXNfYWNjZXNzIDo9IHRydWUKYWxsb3dfZHVtcF9zdGFja3MgOj0gdHJ1ZQphbGxvd19ydW50aW1lX2xvZ2dpbmcgOj0gdHJ1ZQphbGxvd19lbnZpcm9ubWVudF92YXJpYWJsZV9kcm9wcGluZyA6PSB0cnVlCmFsbG93X3VuZW5jcnlwdGVkX3NjcmF0Y2ggOj0gdHJ1ZQoKCm1vdW50X2RldmljZSA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQp1bm1vdW50X2RldmljZSA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQptb3VudF9vdmVybGF5IDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CnVubW91bnRfb3ZlcmxheSA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQpjcmVhdGVfY29udGFpbmVyIDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CmV4ZWNfaW5fY29udGFpbmVyIDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CmV4ZWNfZXh0ZXJuYWwgOj0geyAiYWxsb3dlZCIgOiB0cnVlIH0Kc2h1dGRvd25fY29udGFpbmVyIDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CnNpZ25hbF9jb250YWluZXJfcHJvY2VzcyA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQpwbGFuOV9tb3VudCA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQpwbGFuOV91bm1vdW50IDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CmdldF9wcm9wZXJ0aWVzIDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CmR1bXBfc3RhY2tzIDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CnJ1bnRpbWVfbG9nZ2luZyA6PSB7ICJhbGxvd2VkIiA6IHRydWUgfQpsb2FkX2ZyYWdtZW50IDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CnNjcmF0Y2hfbW91bnQgOj0geyAiYWxsb3dlZCIgOiB0cnVlIH0Kc2NyYXRjaF91bm1vdW50IDo9IHsgImFsbG93ZWQiIDogdHJ1ZSB9CnJlYXNvbiA6PSB7ImVycm9ycyI6IGRhdGEuZnJhbWV3b3JrLmVycm9yc30K
Сохраните изменения в локальной копии шаблона ARM.
Развертывание шаблона
В следующих шагах для развертывания шаблона используется портал Azure. Вы также можете использовать Azure PowerShell, Azure CLI или REST API. Дополнительные сведения о других методах развертывания см. в статье "Развертывание шаблонов".
Нажмите кнопку "Развернуть в Azure", чтобы войти в Azure и начать развертывание Экземпляры контейнеров.
Выберите Создать собственный шаблон в редакторе.
Отображаемый шаблон JSON в основном пуст.
Выберите файл загрузки и отправьте template.json, который был изменен путем добавления политики CCE на предыдущих шагах.
Выберите Сохранить.
Введите или выберите следующие значения:
- Подписка— выберите подписку Azure.
- Группа ресурсов: выберите "Создать", введите уникальное имя группы ресурсов и нажмите кнопку "ОК".
- Имя: примите созданное имя для экземпляра или введите имя.
- Расположение. Выберите расположение группы ресурсов. Выберите регион, в котором поддерживаются конфиденциальные контейнеры. Пример: Северная Европа.
- Изображение. Примите имя образа по умолчанию. В этом примере образа Linux отображается аттестация оборудования.
Примите значения по умолчанию для оставшихся свойств и нажмите кнопку "Проверить и создать".
Ознакомьтесь с условиями использования. Если вы согласны с ними, щелкните Я принимаю указанные выше условия.
Подождите, пока появится уведомление об успешном развертывании. Он подтверждает успешное создание экземпляра.
Просмотр развернутых ресурсов
В следующих шагах вы используете портал Azure для просмотра свойств экземпляра контейнера. Вы также можете использовать средство, например Azure CLI.
На портале найдите Экземпляры контейнеров и выберите созданный экземпляр контейнера.
На странице обзора обратите внимание на состояние экземпляра и его IP-адрес.
Когда состояние экземпляра запущено, перейдите по IP-адресу в браузере.
Наличие отчета аттестации под логотипом Экземпляры контейнеров Azure подтверждает, что контейнер работает на оборудовании, поддерживающем TEE.
Если вы развертываете на оборудовании, которое не поддерживает TEE (например, выбрав регион, в котором Экземпляры контейнеров конфиденциальность недоступна), отчет аттестации не отображается.
Связанный контент
Теперь, когда вы развернули конфиденциальную группу контейнеров в Экземпляры контейнеров, вы можете узнать больше о том, как применяются политики: