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


Руководство. Подготовка развертывания для конфиденциального контейнера на Экземпляры контейнеров 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. Чтобы просмотреть исходный код для этого приложения, см. сведения о конфиденциальном Экземпляры контейнеров Hello World в Azure.

Пример шаблона добавляет два свойства в определение ресурса Экземпляры контейнеров, чтобы сделать группу контейнеров конфиденциальной:

  • 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/acc/samples/aci/helloworld:2.8",
        "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.

  1. Чтобы создать политику CCE, выполните следующую команду с помощью шаблона ARM в качестве входных данных:

    az confcom acipolicygen -a .\template.json
    

    После завершения этой команды строка Base64, созданная в виде выходных данных, автоматически появится в ccePolicy свойстве шаблона ARM.

Развертывание шаблона

В следующих шагах для развертывания шаблона используется портал Azure. Вы также можете использовать Azure PowerShell, Azure CLI или REST API. Дополнительные сведения о других методах развертывания см. в статье "Развертывание шаблонов".

  1. Нажмите кнопку "Развернуть в Azure", чтобы войти в Azure и начать развертывание Экземпляры контейнеров.

    Кнопка для развертывания шаблона Resource Manager в Azure.

  2. Выберите Создать собственный шаблон в редакторе.

    Снимок экрана: кнопка для создания собственного шаблона в редакторе.

    Отображаемый шаблон JSON в основном пуст.

  3. Выберите файл загрузки и отправьте template.json, который был изменен путем добавления политики CCE на предыдущих шагах.

    Снимок экрана: кнопка загрузки файла.

  4. Выберите Сохранить.

  5. Введите или выберите следующие значения:

    • Подписка— выберите подписку Azure.
    • Группа ресурсов: выберите "Создать", введите уникальное имя группы ресурсов и нажмите кнопку "ОК".
    • Имя: примите созданное имя для экземпляра или введите имя.
    • Расположение. Выберите расположение группы ресурсов. Выберите регион, в котором поддерживаются конфиденциальные контейнеры. Пример: Северная Европа.
    • Изображение. Примите имя образа по умолчанию. В этом примере образа Linux отображается аттестация оборудования.

    Примите значения по умолчанию для оставшихся свойств и нажмите кнопку "Проверить и создать".

    Снимок экрана: сведения о пользовательском развертывании шаблона ARM.

  6. Ознакомьтесь с условиями использования. Если вы согласны с ними, щелкните Я принимаю указанные выше условия.

  7. Подождите, пока появится уведомление об успешном развертывании. Он подтверждает успешное создание экземпляра.

    Снимок экрана: уведомление портала об успешном развертывании.

Просмотр развернутых ресурсов

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

  1. На портале найдите Экземпляры контейнеров и выберите созданный экземпляр контейнера.

  2. На странице обзора обратите внимание на состояние экземпляра и его IP-адрес.

    Снимок экрана: страница обзора для экземпляра группы контейнеров.

  3. Когда состояние экземпляра запущено, перейдите по IP-адресу в браузере.

    Снимок экрана: представление браузера приложения, развернутого с помощью Экземпляры контейнеров Azure.

    Наличие отчета аттестации под логотипом Экземпляры контейнеров Azure подтверждает, что контейнер работает на оборудовании, поддерживающем TEE.

    Если вы развертываете на оборудовании, которое не поддерживает TEE (например, выбрав регион, где недоступен конфиденциальный Экземпляры контейнеров), отчет аттестации не отображается.

Теперь, когда вы развернули конфиденциальную группу контейнеров на Экземпляры контейнеров, вы можете узнать больше о том, как применяются политики: