[SPRING] Spring 부팅 속성 파일에서 암호를 숨기는 방법
SPRINGSpring 부팅 속성 파일에서 암호를 숨기는 방법
스프링 부트는 특성 파일을 사용하며 적어도 기본적으로 암호는 일반 텍스트로되어 있습니다. 어떻게 든 숨기기 / 해독 할 수 있습니까?
해결법
-
==============================
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.암호를 숨기려면 가장 쉬운 방법은 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.Spring Cloud Config Server는 이러한 유형의 동작을 허용합니다. JCE를 사용하면 서버에서 키를 설정하고이를 사용하여 앱 속성을 암호화 할 수 있습니다.
Spring Cloud Config Server는 이러한 유형의 동작을 허용합니다. JCE를 사용하면 서버에서 키를 설정하고이를 사용하여 앱 속성을 암호화 할 수 있습니다.
http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html
from https://stackoverflow.com/questions/37404703/spring-boot-how-to-hide-passwords-in-properties-file by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 주석 기반 구성을 사용하는 동안 MappingJacksonHttpMessageConverter를 구성하는 방법은 무엇입니까? (0) | 2018.12.09 |
---|---|
[SPRING] Spring과 Hibernate를 사용하여 여러 데이터베이스에서 분산 트랜잭션을 수행하는 '최선의'방법은 무엇입니까? (0) | 2018.12.09 |
[SPRING] 모든 요청을 처리하지만 정적 컨텐츠 디렉토리를 제외하도록 SpringMVC를 구성 할 수 있습니까? (0) | 2018.12.09 |
[SPRING] 특정 URL에 대해 봄 보안을 사용 중지하는 방법 (0) | 2018.12.09 |
[SPRING] http 요청 인터셉터를 추가하는 스프링 부트 (0) | 2018.12.09 |