Работа с секретами#
Для хранения секретов доступно две системы:
Hashicorp Vaultи совместимые по интерфейсам системы хранения секретов, к примеру Secret Management System (Secman).либо стандартный механизм
k8s(манифестыkind: Secretс типомOpaque).
Использование Hashicorp Vault#
Подключение DropApp (k8s) к Hashicorp Vault#
Настройка непосредственно системы Hashicorp Vault и интеграция ее с платформой DropApp выходит за рамки данного руководства, предполагается что интеграция уже настроена, создана область и создан объект секрета, например с именем sowa_k8s.
В деплойменте, подключение секретов из Hashicorp Vault производится посредством аннотаций, все секреты по умолчанию декодируются из base64.
Для интеграции пользователю необходимо заполнить переменные в values.yaml:
secrets:
secman:
enabled: true
namespace: "NS_NAME" # Namespace в системе Hashicorp Vault
role: "role-name" # Роль пользователя для доступа из платформы DropApp к Hashicorp Vault
path: "NS_NAME/secret_name" # Путь к объекту секрета в системе Hashicorp Vault
Файлы, которые необходимо передать в приложение, создаются внутри одного объекта секрета в виде пар ключ-значение.
Ключ — используется как имя файла.
Значение — должно быть закодировано в
base64.
Пример:
data:
tls.jks: <Base64-содержимое сертификата>
truststore.jks: <Base64-содержимое сертификата>
Далее эти ключи указываются в переменных там, где они используются. Например, для указания сертификатов:
app:
secret_keyname_KStore: "tls.jks"
secret_keyname_TStore: "truststore.jks"
Использование стандартных манифестов Kubernetes#
Для использования секретов в виде стандартных манифестов Kubernetes, активируйте параметр secrets.k8s.enabled и укажите название созданного объекта с секретами.
secrets:
secman:
enabled: false <--- пар-р `secman` необходимо выключить
k8s:
enabled: true
name: sowa-secrets
При использовании манифестов:
Создайте объект типа
Secretс типомOpaque.Запишите в него пары
ключ-значение, где значения — это содержимое файлов, закодированное в base64.
Если вы создаете секрет через интерфейс или CLI, кодирование в base64 происходит автоматически — дополнительная обработка не требуется.
Пример манифеста с секретами:
kind: Secret
apiVersion: v1
metadata:
name: sowa-secrets
data:
tls.jks: >-
<Base64-содержимое сертификата>
truststore.jks: >-
<Base64-содержимое сертификата>
type: Opaque
Все содержимое указанного секрета будет смонтированно в папку /sowa/profile_storage/custom/<profilename>/, внутри пода и доступно для использования в конфигурации профиля SOWA:
Образец использования файлов из секрета в конфиг файле профиля:
service_rabbitmq_proxy:
- id: 1
keystore: tls.jks
truststore: truststore.jks