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

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

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

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

Вспомогательный помощник для PSW с цитатой SGX

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

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

Обзор

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Модель аттестации вне proc работает для конфиденциальных рабочих нагрузок. Запроситель кавычек и создание кавычки выполняются отдельно, но на одном физическом компьютере. Создание кавычки выполняется централизованно и обслуживает запросы к 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.

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

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

Примечание.

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

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

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

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

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

Примечание.

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

# 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/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

Вместо этого задайте режим аттестации из proc в файле 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