Как я могу развернуть приложения SGX в Kubernetes?
Недавно я узнал, что процессоры Intel SGX способны шифровать анклавы для постоянного хранения на диске. После этого я начал писать свои первые SGX-приложения и теперь мне интересно, есть ли возможность развернуть их на Kubernetes?
1 ответ
Ваш вопрос можно разделить на несколько шагов:
- Наличие кластера Kubernetes, предоставляющего доступ к SGX вашим приложениям.
Вам понадобятся узлы Kubernetes с процессорами с поддержкой SGX. Kubernetes обрабатывает «специальные устройства» как SGX через подключаемые модули устройств . Для Kubernetes существует несколько подключаемых модулей устройств SGX:
- Intel: https://intel.github.io/intel-device-plugins-for-kubernetes/cmd/sgx_plugin/README.html .
- Azure: https://github.com/Azure/aks-engine/blob/master/docs/topics/sgx.md .
После того, как вы оборудовали узел таким плагином, они предоставляют вам механизм для предоставления устройства SGX вашим контейнерам.
- Создание приложений SGX для Kubernetes и доступ к ресурсам SGX
Вам нужно будет объединить свой анклав в контейнер и написать определения ресурсов Kubernetes. Вероятно, наиболее распространенным языком для облачных приложений является Go. Существует отличный пример конфиденциального микросервисного приложения на основе среды выполнения EdgelessRT Go и SDK (ссылка), в котором используется подключаемый модуль устройства Azure для предоставления SGX контейнерам: https://github.com/edgelesssys/emojivoto .
- Управление аттестацией, печатью и т. д. для вашего приложения SGX
Вероятно, наиболее интересным моментом при развертывании приложений SGX в Kubernetes является оркестровка, специфичная для SGX. В то время как Kubernetes выполняет всю общую координацию, специфичные для SGX задачи, такие как удаленная аттестация, миграция и управление секретами ваших развертываний, должны выполняться отдельно. Сервисная сетка Marblerun решает следующие задачи, а именно:
- Аттестация ваших услуг: https://marblerun.sh/docs/features/attestation/
- Миграция и восстановление: https://marblerun.sh/docs/features/recovery/
- Управление секретами:https://marblerun.sh/docs/features/secrets-management/