복붙노트

[SPRING] Spring 부팅 속성 파일에서 암호를 숨기는 방법

SPRING

Spring 부팅 속성 파일에서 암호를 숨기는 방법

스프링 부트는 특성 파일을 사용하며 적어도 기본적으로 암호는 일반 텍스트로되어 있습니다. 어떻게 든 숨기기 / 해독 할 수 있습니까?

해결법

  1. ==============================

    1.Jasypt를 사용하여 속성을 암호화 할 수 있으므로 다음과 같이 속성을 가질 수 있습니다.

    Jasypt를 사용하여 속성을 암호화 할 수 있으므로 다음과 같이 속성을 가질 수 있습니다.

    db.password=ENC(XcBjfjDDjxeyFBoaEPhG14wEzc6Ja+Xx+hNPrJyQT88=)
    

    Jasypt는 ENC (...) 내에 넣은 암호화 된 속성을 얻으면 다른 알고리즘을 사용하여 속성을 암호화 할 수 있습니다. 예를 들어, 터미널을 사용하여 Jasypt를 통해 암호화 할 수 있습니다.

    encrypted-pwd$ java -cp ~/.m2/repository/org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar  org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="contactspassword" password=supersecretz algorithm=PBEWithMD5AndDES
    
    ----ENVIRONMENT-----------------
    
    Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 24.45-b08
    
    
    
    ----ARGUMENTS-------------------
    
    algorithm: PBEWithMD5AndDES
    input: contactspassword
    password: supersecretz
    
    
    
    ----OUTPUT----------------------
    
    XcBjfjDDjxeyFBoaEPhG14wEzc6Ja+Xx+hNPrJyQT88=
    

    Spring Boot를 사용하여 쉽게 구성하려면 스타터 jasypt-spring-boot-startter를 그룹 ID com.github.ulisesbocchio와 함께 사용할 수 있습니다

    속성을 암호화하는 데 사용한 것과 동일한 암호를 사용하여 응용 프로그램을 시작해야합니다. 따라서 다음과 같이 앱을 시작할 수 있습니다.

    mvn -Djasypt.encryptor.password=supersecretz spring-boot:run
    

    자세한 내용은 아래 링크를 확인하십시오.

    https://www.ricston.com/blog/encrypting-properties-in-spring-boot-with-jasypt-spring-boot/

    앱에서 암호화 된 속성을 사용하려면 평소와 같이 사용하십시오. 원하는 방법을 사용하십시오 (스프링 부트는 마법을 연결합니다. 어쨌든 속성은 클래스 경로에 있어야합니다).

    @Value 주석 사용하기

    @Value("${db.password}")
    private String password;
    

    또는 환경 사용

    @Autowired
    private Environment environment;
    
    public void doSomething(Environment env) {
        System.out.println(env.getProperty("db.password"));
    }
    
  2. ==============================

    2.암호를 숨기려면 가장 쉬운 방법은 application.properties 파일에서 환경 변수를 사용하거나 코드에서 직접 사용하는 것입니다.

    암호를 숨기려면 가장 쉬운 방법은 application.properties 파일에서 환경 변수를 사용하거나 코드에서 직접 사용하는 것입니다.

    application.properties에서 다음을 수행하십시오.

    mypassword=${password}
    

    그런 다음 구성 클래스에서 :

    @Autowired
    private Environment environment;
    
    [...]//Inside a method
    System.out.println(environment.getProperty("mypassword"));
    

    구성 클래스에서 :

    @Value("${password}")
    private String herokuPath;
    
    [...]//Inside a method
    System.out.println(herokuPath);
    

    주 : 환경 변수를 설정 한 후 재시작해야합니다. 창 :

    자세한 정보는이 문서를 참조하십시오.

  3. ==============================

    3.Spring Cloud Config Server는 이러한 유형의 동작을 허용합니다. JCE를 사용하면 서버에서 키를 설정하고이를 사용하여 앱 속성을 암호화 할 수 있습니다.

    Spring Cloud Config Server는 이러한 유형의 동작을 허용합니다. JCE를 사용하면 서버에서 키를 설정하고이를 사용하여 앱 속성을 암호화 할 수 있습니다.

    http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html

  4. from https://stackoverflow.com/questions/37404703/spring-boot-how-to-hide-passwords-in-properties-file by cc-by-sa and MIT license