Пример файла application.yml#
Файл application.yml создается автоматически на основе ранее заполненного vars.yml.
Описание блоков application.yml:
# ======= EMC parameters and constants
emc: # Блок настроек EDMS
version: release # Версия дистрибутива продукта, для отображения в UI
vendor: false # Признак отличных инсталляций от банковских
task:
can-create: true # Возможность создания заявок
change-user: false # Возможность смены автора у заявки (передач прав)
constants: # Блок настроек постоянных предельных значений для EDMS
max-tps-value: 50000 # Максимальное значение пиковой нагрузки в секунду
max-partitions-value: 150 # Максимальное количество партиций
time-to-store: 1054080 # Максимальное время хранения события в Kafka
peak-load: 4320000000 # Максимальное суточное значение
max-message-size: 5000 # Максимальный размер сообщения
nexus: # Блок настроек для публикации в nexus
distribution-point: https://nexus.ru/release # ссылка в нексусе(Для публикации)
segments: SegmentA, SegmentB # Поддерживаемые сегменты
contours: CONTOUR0, CONTOUR1, CONTOUR2 # Поддерживаемые контура (Указывать в верхнем регистре)
refs: # Блок ссылок для отображения в FAQ
- label: Your_label # Название ссылки
ref: https://url # Адрес ссылки
access: # Блок настроек для первоначальных менеджеров доступа
manager:
- login: __PLACEHOLDER__ # Логин Access Manager в зашифрованном виде
pass: __PLACEHOLDER__ # Пароль от учетной записи в зашифрованном виде
# ======= authentication configuration
authentication: # Блок аутентификации
type: database # Тип аутентификации пользователей(ldap, database, sudir, sudir-scim)
ldap: # Настройка параметров ldap
url: # Блок настроек для подключения к ldap
controller: CAB-VSP-DC00005 # Наименование контроллера ldap
server: hostname1 # Домен авторизации, подставляется к контроллеру через точку и юзеру через @
port: 636 # порт ldap(389,636)
base: __PLACEHOLDER__ # Каталог для поиска пользователей
fields: # Список аттрибутов возвращаемых из ldap
displayName: __PLACEHOLDER__ # Название атрибута отображаемого имени пользователя
employeeID: __PLACEHOLDER__ # Название атрибута табельного номера пользователя
mail: __PLACEHOLDER__ # Название атрибута почтового адреса пользователя
thumbnailPhoto: __PLACEHOLDER__ # Название атрибута фотографии пользователя
ssl: # аутентификация через ssl
active: true # Включение/выключение ssl
keystore: __PLACEHOLDER__ # Сертификат для ssl
keystore-password: __PLACEHOLDER__ # Пароль для ssl
truststore: __PLACEHOLDER__ # Сертификат для ssl
truststore-password: __PLACEHOLDER__ # Пароль для ssl
sudir: # Блок настроек для sudir, раскомментировать при type: sudir
port: 5080 # Порт, на котором доступен sudir
host: 127.0.0.1 # Host, на котором доступен sudir
webCn: __PLACEHOLDER__ # Common name для валидации запросов при управлении учетными записями через sudir
user: __PLACEHOLDER__ # Имя пользователя sudir
password: __PLACEHOLDER__ # Пароль sudir
filter: # Список эндпоинтов, для которых не требуется авторизация через sudir
- .*/deploy/update-status.*
- .*/transformations/deploy/archive.*
jwts:
url: https://sudir.ru # Ссылка на сервис судир
key-store: __PLACEHOLDER__ # Путь до сертификата
key-store-password: __PLACEHOLDER__ # Пароль для сертификата
trust-store: __PLACEHOLDER__ # Путь до сертификата
trust-store-password: __PLACEHOLDER__ # Пароль для сертификата
sudir-scim: # Блок настроек для интеграции с IAM Proxy и управления УЗ через Scim
webCn: commonname # Common name для валидации запросов при управлении учетными записями через sudir
jwk-url: https://some-url # Url для получения открытых ключей для валидации JWT-токена Sudir
login-field: some-user # Поле jwt из которого будет браться имя пользователя для авторизации
logout-url: /openid-connect-auth/logout # Ссылка для logout'а в IAM Proxy
# ======= Event discovery configuration
event-discovery: # Блок настроек Event discovery (ETCD)
jks:
path: __PLACEHOLDER__ #Абсолютный путь до JKS хранилища
password: __PLACEHOLDER__ #Пароль в зашифрованном виде
authority: __PLACEHOLDER__ #CN серверного сертификата ETCD
timeout: 1000 #Таймаут для подключения к etcd(ms), минимальное значение 500мс
# ======= Audit configuration
audit:
active: log #Тип аудита. Возможные знаечения: log, tsaudit
tsaudit:
url: https://audit.ru #Хост для обращения к Platform V Audit SE
metamodel: installdir/metamodel/metamodel.json #Абсолютный путь до метамодели
event-postfix: /v1/event #Дополнение (приписка) к названию события
metamodel-postfix: /v1/metamodel #Дополнение (приписка) к названию метамодели
ssl:
active: true # Возможно ли подключение по ssl к Platform V Audit SE
keystore: ssl/tsadit.jks #Абсолютный путь до keystore
keystore-password: __PLACEHOLDER__ #Зашифрованный пароль от keystore
truststore: ssl/tsadit.jks #Абсолютный путь до truststore
truststore-password: __PLACEHOLDER__ #Зашифрованный пароль от truststore
redelivery: #Настройки повторной отправки события в систему аудита
file: # указать путь до файла в который будут записываться события
file-max-size: 10m # Максимальный размер файлов для переадресации
timeout: 15s # Таймаут для отправки событий
delay: 10s # Задержка для переотправки событий
# ======= Password encoder configuration
security: #Блок настроек шифрования
encoding:
enabled: true #false or true - в зависимости от использования механизма расшифровки паролей
key: __PLACEHOLDER__ #Ключ для расшифровки паролей. Возможные варианты, ключ в открытом виде; или ссылка на файл с префиксом `file:`
only-https-urls: true #false or true - в зависимости от использования подключения по https
# ======= Notifications configuration
notifications: # Блок подключения Notifications
mail:
protocol: smtp #Протокол
host: mail.sber #Хост для подключения
port: 25 #Порт для подключения. Возможные значения 465 // 443 || 25 || 528
auth: true #false or true - в зависимости от необходимости авторизации на почтовом сервисе
email-from: esmonitoring@mail.sber #Отправитель письма
username: TEST\esmonitoring #Логин почты
password: __PLACEHOLDER__ #Пароль
smtp:
connection-timeout: 2000 #Таймаут для подключения
timeout: 1000 #Таймаут
write-timeout: 2000 #Таймаут записи
ssl:
enabled: false #false or true - в зависимости от подключения по ssl
factory_class: #Класс для создания SSL-соединения
keystore: #Абсолютный путь до keystore
keystore-password: #Зашифрованный пароль
truststore: #Абсолютный путь до truststore
truststore-password: #Зашифрованный пароль
# ======= Deploy configuration
deploy: #Блок настроек типов deploy (установки)
timeout:
cron: 0 */10 * * * * #Расписание установки
delta: 600 #Минимальное время между установками
jenkins-deploy: #Блок настроек для установки, используя Jenkins Job
enabled: true
make-distributive:
url: https://jenkins.ru/emc_makedistr # Ссылка на джобу дженкинса
login: __PLACEHOLDER__ #Логин ТУЗ
token: __PLACEHOLDER__ #Токен ТУЗ
rlm-deploy: #Блок настроек для установки, используя RLM
enabled: true #Включение привода deploy с использованием RLM
service: edms_emc_tasks #Код сервиса который будет вызван в RLM
properties: #Различные параметры для подключения, в основном указываются сертификаты для SSL-соединения
"[security.protocol]": SSL # Используемый протокол
"[ssl.keystore.location]": #Абсолютный путь до файла keystore
"[ssl.keystore.password]": #Пароль от keystore
"[ssl.truststore.location]": #Абсолютный путь до truststore
"[ssl.truststore.password]": #Пароль от truststore
"[ssl.key.password]": #Пароль от keystore
direct-deploy: #Блок настроек для установки, используя прямой deploy
enabled: true # Включение прямого привода deploy
timeout: 5000 # Время ответа от объекта подключения (Kafka, Kafka Connect, Flink)
properties: # Различные параметры для подключения, в основном указываются сертификаты для SSL-соединения
"[security.protocol]": SSL # Используемый протокол
"[ssl.keystore.location]": #Абсолютный путь до файла keystore
"[ssl.keystore.password]": #Пароль от keystore
"[ssl.truststore.location]": #Абсолютный путь до truststore
"[ssl.truststore.password]": #Пароль от truststore
# ======= File storage configuration
file-storage: # Настройки хранения загруженных пользователем файлов
url: https://localhost:8080/api/files/temp
type: file # Тип хранения данных: file,s3
s3: # Блок настроек S3
end-point: some.s3.ru # Адрес s3
region: some_reggion # Регион s3
access-key: some_key # Ключ для s3
secret-key: some_key # secret для s3
bucket-name: some_bucket # Бакет в s3
ssl: # Блок настроек ssl
active: true # Включение/выключение ssl
keystore: ssl/storage.jks # Сертификат для ssl
keystore-password: __PLACEHOLDER_ # Пароль для сертификата
truststore: ssl/storage.jks # Сертификат для ssl
truststore-password: __PLACEHOLDER_ # Пароль для сертификата
file:
location: __PLACEHOLDER__ # Директория для хранения файлов
# ======= replication configuration
replication: #Блок настроек межконтурной и межсегментной репликации
transport: kafka #Используемый транспорт передачи событий. Kafka - события передаются через Apache Kafka
kafka: # Блок настроек для работы с Kafka
properties: #Настройки подключения
"[security.protocol]": SSL
"[enable.idempotence]": false
"[bootstrap.servers]": hostname1:9092,hostname2:9092 #адреса Kafka
"[ssl.keystore.location]": #абсолютный путь до keystore
"[ssl.keystore.password]": #зашифрованный пароль
"[ssl.truststore.location]": #абсолютный путь до truststore
"[ssl.truststore.password]": #зашифрованный пароль
"[ssl.key.password]": #зашифрованный пароль
consumers:
- active: true #Признак использования данного подключения
groupId: cp_replica #ID группы-подписки
name: replication #Настройка topic для передачи основных сообщений в виде справочников и заявок
pollTime: 1000
schedulerTime: 2000
topic: EMC.REPLICATIONEVENT.V1 #Название topic Kafka, в который будет записываться сообщение
- active: false
groupId: cp_replica
name: retry-replication
topic: EMC.REPLICATIONEVENT.RETRY.V1
- active: false
groupId: cp_replica
name: rollback-replication
topic: EMC.ROLLBACKEVENT.V1
- active: false
groupId: cp_replica
name: sowa-replication
properties:
'[bootstrap.servers]': localhost:9092
topic: SOWA.REPLICATIONEVENT.V1
- active: false
groupId: cp_replica
name: sowa-retry-replication
properties:
'[bootstrap.servers]': localhost:9092
'[security.protocol]': PLAINTEXT
topic: SOWA.REPLICATIONEVENT.RETRY.V1
producers: #Настройка подключений для записи в Kafka
- destinations: #Список topics
- active: false #Признак использования данного подключения
name: replication #Настройка topic для передачи основных сообщений в виде справочников и заявок
topic: EMC.REPLICATIONEVENT.V1 #Название topic Kafka, в который будет записываться сообщение
- active: true
name: rollback
topic: EMC.ROLLBACKEVENT.V1
- active: false
name: redelivery
topic: EMC.REPLICATIONEVENT.RETRY.V1
- active: false
name: deadLetter
topic: EMC.DEADLETTEREVENT.V1
name: replication
- destinations:
- active: false
name: replication
topic: EMC.REPLICATIONEVENT.V1
- active: false
name: redelivery
topic: EMC.REPLICATIONEVENT.RETRY.V1
- active: false
name: deadLetter
topic: SOWA.DEADLETTEREVENT.V1
name: sowa-replication
properties:
'[bootstrap.servers]': localhost:9092
'[security.protocol]': PLAINTEXT
# ======= Vault configuration
vault: # блок vault
enabled: false # Включение блока
address: https://_vault_host_:_vault_port_ # Хост и порт для подключения к vault
timeout: 15 # Время ожидания для подключения к vault
ssl: # блок ssl
keystore-path: ssl/vaultclient.jks # jks для подключения к vault
keystore-password: _PLACEHOLDER_ # Пароль для jks
truststore-path: ssl/vaultclient.jks
truststore-password: _PLACEHOLDER_
key-password: _PLACEHOLDER_
auth: # Блок аутентификация в vault
type: APPROLE # Тип аутентификации в vault: APPROLE, CERTIFICATE, TOKEN и PASSWORD
app-role:
role: _vault_role # role для подключения vault
secret: _PLACEHOLDER_ # secret для подключения vault
token: #Настройки аутентификации TOKEN
token: _vault_token #Токен Vault
user_pass: #Настройки аутентификации PASSWORD
username: #Логин пользователя
password: #Пароль пользователя
namespace:
secret-path: kv1/edms # Путь до хранилища с секретами
cert-path: pki # Путь до хранилища, где генерируется сертификат
secret-cron: 0 */5 * * * * # Задача cron с помощью которой происходит периодически опрос секретов Vault. Формат Quartz - * * * * * *, который расшифровывается: (секунда) (минута) (час) (день месяца) (месяц) (день недели)
cert-cron: 0 */10 * * * * # Задача cron с помощью которой происходит периодически опрос секретов Vault. Формат Quartz - * * * * * *, который расшифровывается: (секунда) (минута) (час) (день месяца) (месяц) (день недели)
encrypt-secrets: true #Нужно ли шифровать секреты в Environment. Если да, то необходимы параметры для шифрования. Для работы нужно прописать дополнительные параметры шифрования: security.encoding.class и security.encoding.key
keys:
- name: certPass # имя хранилища секретов
type: SIMPLE # Тип секретов: SIMPLE, MAP
mapped-to: # Параметры в которые подставляются значение секрета из Vault, указывать единичный параметр, а не список
- authentication.ssl.truststore-password
- authentication.ssl.keystore-password
- event-discovery.jks.password
- auth-sudir.jwts.key-store-password
- auth-sudir.jwts.trust-store-password
- file-storage.ssl.keystore-password
- file-storage.ssl.truststore-password
- server.ssl.key-password
- server.ssl.key-store-password
- server.ssl.trust-store-password
- name: certPass
type: MAP
mapped-to:
certs:
- alias: edms # alias сертификата
path: ssl/edms.jks # путь на сервере, где будет храниться сертификат
alt-names: # Список альтернативных имен
- "some.alt.name"
alt-ips: #Список альтернативных ip-адресов
- "some.alt.ip"
csr-path: #Абсолютный путь до запроса на сертификат(если используется csr, в остальных случаях оставить пустым)
ttl: 128D # Срок годности выпускаемого сертификата. Возможны градации: D - дни, H - часы, M - минуты, S - секунды
common-name: "EDMS.AWESOME.CERT" # CN выпускаемого сертификата
type: JKS # Тип хранилища
vault-secret: certPass # Пароль от хранилища, хранимый в переменной Vault
password: test #П ароль от хранилища. Если указан vault-secret, то пароль будет браться из Vault, а не из password.
renew-less-than: 2D #Разница между текущей датой во время проверки и сроком истечения сертификата. Если она будет меньше чем указано, то сертификат будет считаться недействительным и надо его перевыпустить
role: edms #Роль из под которой выпускается сертификаты в Vault
email: edms@edms.com #Почтовый адрес на который будут приходить уведомления о сертификате
max-wait-time: 2S # Время ожидания начала действия сертификата(сек), если параметр не определен, то по умолчанию будет 2 секунды
# ======= Distributive Migration
distributive: # Блок настроек миграций
migration: # Блок настроек миграций
type: jenkins # Ссылка на джобу для миграций
timeout: # Блок настроек timeout
cron: 0 * */1 * * * # Период по которому будет проверяться актуальность миграции дистрибутива
expiration-deadline: 1D # Время, которое миграция дистрибутиво может находиться в статусе 'NEW' или 'RUNNING'
jenkins: # блок настройки джобы миграции
from: nexus2 # Nexus источника
to: nexus3 # Nexus Назначения
job: https://jenkins/job/migration # Ссылка на джобу миграций
credentials: # Блок настроек секретов
username: __PLACEHOLDER__ # Имя пользователя в дженкинсе с правом на запуск джобы
token: __PLACEHLDER__ # Токен к пользователю
callback-url: https://${server.address}:${server.port}/api/distributives/migration/jenkins # Ссылка для обратного ответа от джобы
# ======= Server configuration
server: #Блок настроек tomcat
address: localhost #Адрес сервера
port: 8080 #Порт поднятия приложения
servlet:
session:
timeout: 3600s #Таймаут сессии пользователя
ssl:
enabled: true # Признак использования ssl
client-auth: want #Требуется для возможности получения сертификатов в запросе при интеграции с судир
key-store-type: JKS #Тип используемого хранилища сертификатов
key-store: __PLACEHOLDER__ # Абсолютный путь до файла keystore для подключения к Vault
key-password: __PLACEHOLDER__ # Пароль от ключа в хранилище для подключения к Vault
key-store-password: __PLACEHOLDER__ # Пароль от keystore для подключения к Vault
trust-store-password: __PLACEHOLDER__ # Пароль от truststore для подключения к Vault
trust-store: __PLACEHOLDER__ # Абсолюный путь до truststore для подключения к Vault
# ======= Spring configuration
spring: #Блок настроек Spring framework
datasource: #Блок настроек подключения к БД
url: jdbc:postgresql://BDhostname:5432/control_plane # JDBC строка для подключения к БД
keystore: __PLACEHOLDER__ # Абсолютный путь до файла keystore для подключения к Vault
keystore-password: __PLACEHOLDER__ # Пароль от keystore для подключения к Vault
truststore: __PLACEHOLDER__ # Абсолюный путь до truststore для подключения к Vault
truststore-password: __PLACEHOLDER__ # Пароль от truststore для подключения к Vault
sslmode: verify-ca # Режим подключения по ssl
url: jdbc:postgresql://BDhostname:5432/control_plane # Ссылка для подключения к БД
username: __PLACEHOLDER__ #Логин пользователя дл подключения к БД
password: __PLACEHOLDER__ #Пароль пользователя дл подключения к БД
driverClassName: org.postgresql.Driver #Класс JDBC драйвера для подключения к БД
target-server-type: primary # Позволяет устанавливать открытое соединение с сервером с заданным состоянием
sslfactory: ru.example.ss.edms.security.factory.JksSslFactory # Указывает, какой пользовательский класс использовать для создания SSLSocketFactory
liquibase: #Блок настроек Liquibase
change-log: classpath:/db/changelog-master.xml #Путь до мастер класса со списком миграций
default-schema: edms #Схема БД по умолчанию
database-change-log-table: edms_databasechangelog #Название таблицы со списком развернутых миграций
database-change-log-lock-table: edms_databasechangeloglock #Название таблицы при блокировке для развертывания миграций
enabled: true #false or true - в зависимости от использования Liquibase
quartz: #Блок настроек библиотеки Quartz
job-store-type: jdbc #Тип хранения задач Quartz
properties: #Дополнительные свойства
org:
quartz:
jobStore:
driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate #Класс, отвечающий за подключение к БД
tablePrefix: edms.qrtz_ #Название префикса системных таблиц Quartz
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
jpa:
generate-ddl: false
properties:
org.hibernate.envers.do_not_audit_optimistic_locking_field: false
hibernate.jdbc.lob.non_contextual_creation: true
hibernate.jdbc.time_zone: UTC
hibernate.default_schema: edms
hibernate:
ddl-auto: none
# ======= Quartz configuration
using:
spring:
schedulerFactory: true
# ======= JAVERS configuration
javers:
sqlSchema: edms
sqlGlobalIdTableName: edms_jv_global_id
sqlCommitTableName: edms_jv_commit
sqlSnapshotTableName: edms_jv_snapshot
sqlCommitPropertyTableName: edms_jv_commit_property
initialChanges: true
terminalChanges: false
logging:
config: /opt/edms/emc/installdir/conf/logback.xml
Важно: если включено шифрование паролей и другой сенситивной информации, то все данные обязаны быть зашифрованы
emc.access.manager.login
emc.access.manager.pass
и прочее.
С полным описанием всех зашифрованных полей можно ознакомиться в документе: Настройки шифрования и дешифрования паролей.