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

Служба Azure Kubernetes (AKS) предоставляет подключаемый модуль для виртуальных машин конфиденциальных вычислений Azure. Подключаемый модуль confcom— это набор управляющей программы. Подключаемый модуль выполняется только для конфиденциальных виртуальных машин Intel Software Guard Extensions (SGX) в кластере AKS. Этот подключаемый модуль регистрируется на уровне кластера AKS. Подключаемый модуль можно использовать для легкого управления конфиденциальными узлами. Перед началом работы включите подключаемый модуль в кластере AKS.

Подключаемый модуль устройства Intel SGX для AKS

Подключаемый модуль устройства SGX реализует интерфейс подключаемого модуля устройства Kubernetes для памяти кэша страниц анклава (EPC). По сути, этот подключаемый модуль делает память EPC еще одним типом ресурса в Kubernetes. Пользователи могут задавать ограничения для EPC так же, как и другие ресурсы. Помимо функции планирования, подключаемый модуль устройства помогает назначить разрешения драйвера устройства SGX для конфиденциальных контейнеров рабочей нагрузки. Доступен пример реализации развертывания на основе памяти EPC (kubernetes.azure.com/sgx_epc_mem_in_MiB).

Вспомогатель psw с цитатой SGX

Приложения анклава, которые выполняют удаленную аттестацию, должны создать цитату. Цитата предоставляет криптографическое подтверждение удостоверения и состояния приложения, а также среду узла анклава. Создание цитат зависит от определенных доверенных программных компонентов от Intel, которые являются частью компонентов программного обеспечения платформы SGX (PSW/DCAP). Этот PSW упаковывается как набор управляющих программ, которые выполняются на каждом узле. Вы можете использовать PSW при запросе цитаты аттестации из приложений анклава. Использование предоставленной службы AKS помогает лучше поддерживать совместимость между PSW и другими компонентами SW на узле. Ознакомьтесь со сведениями о функции ниже.

Для приложений анклава , которые выполняют удаленную аттестацию, требуется созданная цитата. Эта цитата предоставляет криптографическое подтверждение удостоверения, состояния и работающей среды приложения. Для создания требуются доверенные программные компоненты, которые являются частью Intel PSW.

Обзор

Примечание

Эта функция необходима только для виртуальных машин DCsv2/DCsv3, использующих специализированное оборудование Intel SGX.

Intel поддерживает два режима аттестации для запуска создания кавычек. Сведения о выборе типа см. в разделе [различия типов аттестации] (различия между типами #attestation и типами).

  • in-proc: размещает доверенные программные компоненты в процессе приложения анклава. Этот метод полезен при выполнении локальной аттестации (между двумя приложениями анклава на одном узле виртуальной машины).

  • внепроцессный означает размещение доверенных программных компонентов за пределами процесса приложения с поддержкой анклавов. Это предпочтительный метод при выполнении удаленной аттестации.

Приложения SGX создаются с помощью open Enclave SDK по умолчанию и используют режим аттестации в proc. Приложения на основе SGX позволяют использовать внепроцессное размещение и требуют дополнительного размещения. Эти приложения предоставляют необходимые компоненты, такие как диспетчер служб анклава архитектуры (AESM), внешние для приложения.

Настоятельно рекомендуется использовать эту функцию. Эта функция повышает время работы приложений анклава во время обновлений платформы Intel или обновлений драйверов DCAP.

Различия типов аттестации

Не требуется никаких обновлений для компонентов PSW, генерирующих расценки, для каждого контейнерного приложения.

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

Для устаревших компонентов PSW нет проблем с ошибками. Создание кавычек включает в себя доверенные компоненты SW — Кворирование анклава сертификата подготовки (QE) & (PCE), которые являются частью доверенной вычислительной базы (TCB). Чтобы соблюдать требования аттестации, эти компоненты программного обеспечения должны быть актуальными. Поставщик управляет обновлениями этих компонентов. Клиентам никогда не придется сталкиваться со сбоями аттестации из-за устаревших доверенных компонентов SW в контейнере.

Внепроцессное использование лучше использует память EPC. В режиме аттестации в proc каждое приложение анклава создает экземпляры QE и PCE для удаленной аттестации. При использовании внепроцессного контейнера контейнер не размещает эти анклавы и не использует память анклава из квоты контейнера.

Существуют также меры защиты от применения ядра. Когда драйвер SGX передается в ядро Linux, анклав имеет более высокие привилегии. Эта привилегия позволяет анклавам вызывать PCE, что нарушает работу приложения анклава, работающего в режиме proc. По умолчанию анклавы не имеют такого разрешения. Чтобы предоставить приложению с поддержкой анклавов эту привилегию, нужно вносить изменения в процесс установки приложения. Поставщик службы, обрабатывающей запросы вне программы, гарантирует, что служба установлена с этой привилегией.

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

Внепроцессная аттестация для конфиденциальных рабочих нагрузок

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

Diagram of quote requestor and quote generation interface.

Абстрактная модель применяется к сценариям конфиденциальной рабочей нагрузки. Эта модель использует уже доступную службу AESM. AESM контейнеризован и развертывается в качестве управляющей программы в кластере Kubernetes. Kubernetes гарантирует, что на каждом узле агента будет развернут один экземпляр контейнера службы AESM, перенесенный в модуль. Новый набор управляющей программы "Цитата SGX" зависит от sgx-device-plugin набора управляющих программ, так как контейнер службы AESM запрашивает память EPC для sgx-device-plugin запуска анклавов QE и PCE.

Каждому контейнеру необходимо отказаться от использования создания проc-кавычек, задав переменную SGX_AESM_ADDR=1 среды во время создания. Контейнер также должен включать пакет libsgx-quote-ex, который направляет запрос на сокет домена Unix по умолчанию.

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

Примечание

Если вы используете программное обеспечение оболочки Intel SGX (OSS/ISV) для запуска неизмененных контейнеров, взаимодействие аттестации с оборудованием обычно обрабатывается для приложений более высокого уровня. Обратитесь к реализации аттестации для каждого поставщика.

Пример реализации

По умолчанию эта служба не включена для кластера AKS с надстройкой confcom. Обновите надстройку с помощью приведенной ниже команды.

az aks addon update --addon confcom --name " YourAKSClusterName " --resource-group "YourResourceGroup " --enable-sgxquotehelper

После запуска службы используйте приведенный ниже пример Docker для приложения на основе Открытого анклава для проверки потока. SGX_AESM_ADDR=1 Задайте переменную среды в файле Docker. Или задайте переменную в файле развертывания. Следуйте этому примеру, чтобы получить сведения о файле Docker и развертывании YAML.

Примечание

Пакет libsgx-quote-ex из Intel необходимо упаковать в контейнер приложения для правильной работы внепроцессной аттестации. Приведенные ниже инструкции содержат подробные сведения.

# Refer to Intel_SGX_Installation_Guide_Linux for detail
FROM ubuntu:18.04 as sgx_base
RUN apt-get update && apt-get install -y \
    wget \
    gnupg

# Add the repository to sources, and add the key to the list of
# trusted keys used by the apt to authenticate packages
RUN echo "deb [arch=amd64] https://download.01.org/intel-sgx/sgx_repo/ubuntu bionic main" | tee /etc/apt/sources.list.d/intel-sgx.list \
    && wget -qO - https://download.01.org/intel-sgx/sgx_repo/ubuntu/intel-sgx-deb.key | apt-key add -
# Add Microsoft repo for az-dcap-client
RUN echo "deb [arch=amd64] https://packages.microsoft.com/ubuntu/18.04/prod bionic main" | tee /etc/apt/sources.list.d/msprod.list \
    && wget -qO - https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

FROM sgx_base as sgx_sample
RUN apt-get update && apt-get install -y \
    clang-7 \
    libssl-dev \
    gdb \
    libprotobuf10 \
    libsgx-dcap-ql \
    libsgx-quote-ex \
    az-dcap-client \
    open-enclave
WORKDIR /opt/openenclave/share/openenclave/samples/remote_attestation
RUN . /opt/openenclave/share/openenclave/openenclaverc \
    && make build
# this sets the flag for out of proc attestation mode, alternatively you can set this flag on the deployment files
ENV SGX_AESM_ADDR=1 

CMD make run

Вместо этого задайте режим аттестации внепроцессного развертывания в файле YAML развертывания следующим образом:

apiVersion: batch/v1
kind: Job
metadata:
  name: sgx-test
spec:
  template:
    spec:
      containers:
      - name: sgxtest
        image: <registry>/<repository>:<version>
        env:
        - name: SGX_AESM_ADDR
          value: 1
        resources:
          limits:
            kubernetes.azure.com/sgx_epc_mem_in_MiB: 10
        volumeMounts:
        - name: var-run-aesmd
          mountPath: /var/run/aesmd
      restartPolicy: "Never"
      volumes:
      - name: var-run-aesmd
        hostPath:
          path: /var/run/aesmd

Развертывание должно завершиться успешно и позволить приложениям выполнять удаленную аттестацию с помощью вспомогательной службы Кавычек SGX.

Next Steps