#kubernetes #sgx #confidential
#kubernetes #sgx #конфиденциально
Вопрос:
Недавно я узнал, что процессоры 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 device для предоставления 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 /