DAT CMS
DAT CMS создаёт сертификаты, хранит их в базе данных и передаёт подходящие сертификаты сервисам выпуска и проверки. Поведение протокола описано в спецификации DAT CMS.
Создание конфигурации запуска
Сервис управления сертификатами DAT
Сервер
Команда запуска
База данных
Сертификат DAT
Контроль доступа
Запуск с Docker
Запускайте контейнер от имени пользователя без прав root. При использовании SQLite подключите каталог данных с правом записи. Передавайте токены и пароли базы данных через механизм внедрения секретов, а не через историю команд.
docker run --rm --name dat-cms -p 8088:8088 \
--user 10001:10001 \
-v "$PWD/dat-cms-data:/data" \
-e PORT=8088 \
-e DB_URI='sqlite:/data/data.db' \
-e TOKEN_MASTER='replace-with-a-secret' \
-e TOKEN_CERT_FULL='replace-with-a-secret' \
-e TOKEN_CERT_VERIFY='replace-with-a-secret' \
sarolab/dat-cmsБаза данных
Используйте DB_URI, чтобы настроить подключение к SQLite, PostgreSQL или MySQL. MariaDB подключается по протоколу MySQL. CMS кэширует результаты запросов сертификатов как snapshot и продолжает обслуживать последний успешный snapshot при временном сбое обновления хранилища.
DB_CACHE_SECS задаёт интервал обновления snapshot, а DB_QUERY_TIMEOUT_SECS ограничивает время запросов обновления. Если успешного snapshot ещё нет и хранилище недоступно для чтения, сервис возвращает DAT_STORE_UNAVAILABLE.
Роли доступа
| Переменная окружения | Разрешение | Кто использует |
|---|---|---|
TOKEN_MASTER | Регистрация сертификатов и получение защищённой версии | Эксплуатация |
TOKEN_CERT_FULL | Получение полных сертификатов | Сервисы выпуска DAT |
TOKEN_CERT_VERIFY | Получение сертификатов только для проверки | Сервисы проверки и расшифрования |
Каждая переменная принимает разделённые запятыми буквенно-цифровые токены. Если список токенов роли пуст, endpoints этой роли открываются и в журнал записывается предупреждение.
Создание сертификатов
Роль master регистрирует сертификат, указывая алгоритм подписи, алгоритм шифрования, задержку распространения, период выпуска и TTL. Во время задержки распространения сервисы синхронизируют новый сертификат до того, как он станет доступен для выпуска.
Интеграция клиента
- Для сервисов выпуска используйте полный токен и endpoint полных сертификатов.
- Для сервисов проверки используйте токен проверки и параметр verify-only.
- Проверьте результат первой синхронизации; если запуск должен завершиться с ошибкой, вызовите API немедленной синхронизации.
- Если включена автоматическая синхронизация, закройте менеджер при завершении работы приложения.
См. руководства по библиотекам с описанием builder и завершения работы для каждого языка.
Эксплуатационные проверки
/healthи/version/apiсообщают состояние без аутентификации./versionтребует master token, если эта роль настроена.- Собирайте журналы из стандартного вывода и стандартного потока ошибок.
- Передавайте сигналы завершения и оставляйте время на закрытие базы данных и scheduler.
Kubernetes
Согласуйте порт контейнера и probes с портом сервиса, а каталог данных подключите с правом записи для пользователя без прав root. Внедряйте токены и параметры подключения к базе данных через Secrets.
securityContext:
runAsNonRoot: true
runAsUser: 10001
runAsGroup: 10001
containers:
- name: dat-cms
image: sarolab/dat-cms
ports: [{ containerPort: 8088 }]
readinessProbe: { httpGet: { path: /health, port: 8088 } }
livenessProbe: { httpGet: { path: /health, port: 8088 } }