Секреты
Секрет содержит небольшой объём конфиденциальных данных: пароль, токен или ключ.
Иначе эти сведения могли бы находиться в спецификации Cargo.
Используя секреты, вы не включаете конфиденциальные данные в код приложения.
Секреты создаются независимо от использующих их Cargo, что снижает вероятность раскрытия данных при создании, просмотре и изменении Cargo.
Nanocl и приложения кластера также могут принимать дополнительные меры, например избегать записи секретов в энергонезависимое хранилище.
По умолчанию секреты Nanocl хранятся незашифрованными в хранилище API-сервера (CockroachDB).
Любой с доступом к API или CockroachDB может получить или изменить Secret. Также любой, кто может создавать Cargo, способен прочитать любой секрет через этот доступ, включая косвенную возможность создания развёртывания.
Для безопасного использования секретов выполните хотя бы следующие шаги:
- Включите шифрование секретов при хранении.
- Рассмотрите внешние хранилища секретов.
Применение секретов
Секреты можно использовать, например, чтобы:
- Задавать переменные окружения Cargo.
- Хранить сертификаты TLS.
Демон Nanocl тоже использует Secrets; например, секреты начальных токенов помогают автоматизировать регистрацию узлов.
Виды секретов
При создании Secret укажите Kind в поле типа ресурса.
Тип секрета упрощает программную обработку его данных.
Nanocl предоставляет несколько встроенных типов для распространённых сценариев.
Они отличаются выполняемыми проверками и ограничениями Nanocl.
Для собственного типа Secret задайте своё строковое значение Kind объекта.
Nanocl не ограничивает имя типа. Однако встроенный тип должен соответствовать всем определённым для него требованиям.
| Встроенный вид | Назначение |
|---|---|
nanocl.io/env | Данные переменных окружения |
nanocl.io/tls | Данные клиента или сервера TLS |
Окружение
Секреты вида Env — переменные окружения, привязываемые к Cargo.
Создайте их следующим Statefile:
ApiVersion: v0.18
Secrets:
- Name: env.super-secret
Kind: nanocl.io/env
Data:
- MY_ENV=MY_VALUE
- MY_ENV1=MY_VALUE1TLS
Секреты вида Tls — сертификаты, привязываемые к ProxyRules.
Создайте их следующим Statefile:
ApiVersion: v0.18
Secrets:
- Name: cert.my-certificate
Kind: nanocl.io/tls
Data:
Certificate: |
-----BEGIN CERTIFICATE-----
MIIDETCCAfkCFFOJVQs8PxWlcJQDn...
CertificateKey: |
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0B...Полная спецификация вида Tls:
| Certificate required | string Содержимое сертификата, сохранённого в секрете TLS. |
| CertificateClient | string or null Содержимое сертификата центра сертификации, сохранённого в секрете TLS. |
| CertificateKey required | string Содержимое закрытого ключа, сохранённого в секрете TLS. |
| Dhparam | string or null Содержимое параметров DH, сохранённых в секрете TLS. |
| VerifyClient | boolean or null Включить или отключить проверку клиента. |
Для Tls Secret нужно содержимое файлов вместо их путей.