Пример файла 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

  • и прочее.

    С полным описанием всех зашифрованных полей можно ознакомиться в документе: Настройки шифрования и дешифрования паролей.