Как мне KMS расшифровать пароль в application.properties, прежде чем использовать его при весенней загрузке - PullRequest
0 голосов
/ 24 мая 2019

я впервые использую AWS и весеннюю загрузку вместе.

У меня установлены учетные данные db в application.properties.

Но мне все еще нужно, чтобы KMS расшифровал пароль.

Как мне это сделать в рамках весенней загрузки?

1 Ответ

0 голосов
/ 24 мая 2019

Прежде всего, вы должны включить "zalando / spring-cloud-config-aws-kms" зависимость от вашего проекта, для более подробной информации о проекте проверьте эту ссылку : "https://github.com/zalando/spring-cloud-config-aws-kms" Вы должны быть осторожны при выборе версий, например, если вы используете Spring Cloud Greenwich + Spring Boot 2.1 зависимость zalando версия должна быть 4.1

Теперь предположим, что ваш проект весенней загрузки - это проект maven, тогда у вас должно быть что-то вроде этого:

        <dependency>
            <groupId>org.zalando</groupId>
            <artifactId>spring-cloud-config-aws-kms</artifactId>
            <version>4.1</version>
        </dependency>

Во-вторых, значение вашего зашифрованного пароля в application.properties должно начинаться с {cipher}, например (приведенный ниже шифр недействителен):

DataBase.Password = {cipher}UmjDPAmJr78ypSphQycO9DAQECAHgC4i08YQPW

Наконец, поскольку у вас есть spring-cloud-config-aws-kms в вашем классе проектаPath, вам нужно только ввести значение вашего зашифрованного пароля в ваши классы, когда это необходимо через аннотацию @Value, например:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class Example {
    //reads the encrypted password, decrypts it 
    // and injects it in the field DataBasePassword 
    @Value("${DataBase.Password}")
    private String DataBasePassword;

    @RequestMapping("/")
    public String decryptPassword() {
        return DataBasePassword;
    }
    public static void main(String[] args) {
        SpringApplication.run(Example.class, args);
    }
}

Запустите это приложение Spring-Boot, откройте браузер и введите URL "http://localhost:8080/", чтобы увидеть результат. Этот ответ вдохновлен этим проектом "https://github.com/kinow/spring-boot-aws-kms-configuration". Надеюсь, что это будет полезно:)

...