Управление цепочками сертификатов
В Nova Container Platform для управления цепочками TLS-сертификатов интегрировано решение Trust Manager.
Trust Manager - это оператор Kubernetes, предназначенный для централизованного управления и распространения цепочек доверенных сертификатов (Trust Bundles) в кластере Kubernetes. С его помощью обеспечивается унифицированное управление цепочками сертификатов, упрощается развертывание приложений, требующих доверия к определенным корневым удостоверяющим центрам (CAs), а также снижаются риски, связанные с использованием устаревших или недоверенных CA.
Цепочки Trust Manager в кластере Kubernetes - это ресурсы Bundles в API-группе trust.cert-manager.io.
1. Цепочка доверенных сертификатов по умолчанию
По умолчанию в кластере Kubernetes доступна цепочка trusted-ca-bundle, сертификаты которой сохранены в ConfigMap с таким же именем в родительском пространстве имен nova-cert-management.
Данная цепочка синхронизируется во все пространства имен, имеющие метку nova-platform.io/trusted-ca-bundle: enabled.
Источниками сертификатов для сборки всей цепочки служат ресурсы ConfigMap, имеющие метку nova-platform.io/trusted-ca-bundle-inject: enabled и ключ ca.crt, значение которого является сертификатом в формате PEM.
|
Несмотря на то, что в Trust Manager есть поддержка работы с секретами Kubernetes, в Nova Container Platform данная возможность отключена в целях безопасности и ограничения привилегий Trust Manager. Сертификаты CA не являются чувствительными данными и могут храниться в ConfigMap. |
Пример цепочки по умолчанию
apiVersion: trust.cert-manager.io/v1alpha1
kind: Bundle
metadata:
name: trusted-ca-bundle
spec:
sources:
- useDefaultCAs: true
- configMap:
key: ca.crt
selector:
matchLabels:
nova-platform.io/trusted-ca-bundle-inject: enabled
target:
configMap:
key: ca-certificates.pem
namespaceSelector:
matchLabels:
nova-platform.io/trusted-ca-bundle: enabled
|
Обратите внимание, что цепочка |
2. Использование цепочек в пользовательских приложениях
Для использования цепочек сертификатов в собственных приложениях рекомендуется следующий порядок действий:
-
Создать необходимые ресурсы ConfigMap с необходимыми сертификатами CA. Используйте один ресурс ConfigMap для одного сертификата CA. Установите метку на ресурс, по которой его можно будет найти оператору Trust Manager.
-
Подготовьте необходимые пространства имен, в которые потребуется распространить цепочку сертификатов. Установите для этого соответствующую метку.
-
Создать новый ресурс
Bundle, где укажите параметры организации цепочки сертификатов. Вы можете указать несколько селекторов для поиска ресурсов ConfigMap с сертификатами. -
(Опционально) Включите в цепочку публичные сертификаты.
После того, как цепочка станет доступна в кластере Kubernetes, вы можете использовать ее в своих приложениях. Для этого вам необходимо будет смонтировать ConfigMap с цепочкой в Pod. В зависимости от ОС, которая лежит в основе контейнера, точка монтирования единого файла с сертификатами CA может отличаться:
-
Для Debian-based ОС (Debian, Ubuntu), а также ОС Alpine, цепочку необходимо монтировать в файл
/etc/ssl/certs/ca-certificates.crt. -
Для RHEL-based ОС (RHEL, CoreOS, Fedora, CentOS, Rocky Linux) цепочку необходимо монтировать в файл
/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem.
|
При добавлении собственных сертификатов в цепочку по умолчанию |