Каков наилучший способ защитить конфигурацию Spring Cloud? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть сервер конфигурации Spring Cloud, работающий с Spring Bus.Я хочу сделать звонки на этот сервер безопасными:

  1. Когда клиент запрашивает конфигурации.
  2. При вызове / мониторинге - используется webhook.

Как лучше всего это делать?основной?шифрование?Может кто-нибудь привести рабочий пример?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Также вы можете контролировать доступ к секретам в конфигурации с помощью Spring Cloud Vault .

Это решение проще, чем шифрование всей связи между вашим приложением и сервером конфигурации, но, возможно, это не то, что вам нужно.

Надеюсь, это поможет.

0 голосов
/ 10 декабря 2018

Вы можете защитить его, добавив свойства шифрования и дешифрования

Вам необходимо предоставить jks для безопасного шифрования и дешифрования

Сервер конфигурации Spring Cloud поддерживает симметричные и асимметричные ключи

Чтобы настроить симметричный ключ, вам нужно установить encrypt.key для секретной строки (или использовать переменную окружения ENCRYPT_KEY, чтобы не допустить его в текстовых файлах конфигурации).

Для асимметричного вам нужноукажите в bootsrap.yml такие свойства:

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri: your git url or your local repository on file system 
          username: username for git or bitbucket if needed
          password: password
          clone-on-start: true this property will clone all repo localy on starttup
          force-pull: true
  application:
     name: config-server
encrypt:
  key-store:
    location: jks location
    password: letmein
    alias: mytestkey
    secret: changeme

Для генерации JKS вам необходимо выполнить эту команду

keytool -genkeypair -alias mytestkey -keyalg RSA \
  -dname "CN=Web Server,OU=Unit,O=Organization,L=City,S=State,C=US" \
  -keypass changeme -keystore server.jks -storepass letmein

На самом деле Java по умолчанию имеет ограничение на определенные параметры длины ключа.Его 128 бит по умолчанию.

Чтобы использовать ключ с большей длиной ключа, вам просто нужно заменить существующие local_policy.jar и US_export_policy.jar в <java-home>/lib/security

Вот ссылка для скачивания:

https://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

А также вы можете зашифровать и дешифровать ваши свойства с помощью таких конечных точек:

curl config_server_host:port/encrypt-d your data to be encrypted

curl config_server_host:port/decrypt -d your data to be decrypted // this will automatically use this endpoint to decrypt values
//Both are http post requests

Чтобы использовать шифрование с помощью сервера конфигурации, вам необходимо предоставить такой префикс в вашей конфигурации для вашегоприложение, которое будет получать конфиги с сервера конфигурации:

'{cipher}your_encrypted_data'
...