Работа c Системой управления секретами#

В Platform V SOWA реализована интеграция с Системой управления секретами.

Система управления секретами - это инструмент для централизованного и безопасного хранения и распространения секретов.

Интеграция Platform V SOWA с Системой управления секретами дает возможность указания в прикладной конфигурации для секретов параметров загрузки из Системы управления секретами, как альтернативы кастомным ресурсам.

Стоит обратить внимание, что сертификаты должен быть в формате .pem без кодировок в base64.

Platform V SOWA поддерживает использование движка KV Secrets Engine.

Параметры, используемые для интеграции с Системой управления секретами, описаны в статье "Базовая конфигурация system-optional".

Для взаимодействия с Системой управления секретами используется аутентификация пользователя по токену. Используется токен из переменной кружения $VAULT_TOKEN (переменная автоматически задается, например, в пайплайнах jenkins при использовании функционала плагина HashiCorp Vault).

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

system:
  optional:
    vault:
      url: https://examplehost:8200
      ssl:
        certificate: client_cert.pem
        certificate_key: client_cert.key
        ca: trusted_certs.pem
      runtime_update: true
      storages:
        - path: DEV/SOWA/CF/KV
          secrets:
            - name: server
              key: certificate
              alias: cert_from_vault
            - name: server
              key: certificate_key
              alias: key_from_vault
...
service:
  service_main_proxy:
...
      listen:
      - port: 8443
        ssl:
          certificate: cert_from_vault
          certificate_key: key_from_vault
...

Директива "runtime_update" позволяет включить обновление секретов профиля, хранимых в Системе управления секретами, при операциях запуска/перезапуска/перезагрузки. По умолчанию директива отключена - секреты подтягиваются только в момент конфигурирования профиля.

Пример использования плагина HashiCorp Vault в jenkins с аутентификацией по AppRole:

node {
    // vaultCredAppRole - credentials типа VaultAppRoleCredential
    withCredentials([[$class: 'VaultTokenCredentialBinding', credentialsId: 'vaultCredAppRole', vaultAddr: 'https://examplehost:8200']]) {
        // теперь переменная окружения $VAULT_TOKEN заполнена - далее можно выполнять любые операции с профилем, использующим секреты из SecMan
        ...
    }
}

Также рекомендуется ознакомиться с сопроводительной документацией Системы управления секретами: FAQ, Руководство пользователя, Инструкции по переходу на Secret Management.