Programing/Security

인텔리제이 Intellij 환경 변수 설정 application 설정 파일 환경변수 사용

리커니 2024. 4. 3. 11:26
반응형

application.properties or yml 파일에 중요 정보를 등록할 때

텍스트 그대로 작성해서 사용할 경우 보안상 문제가 될 수 있습니다.

 

예를들어 JWT 나 RSA, Jasypt 예제에서 사용되는 키값을 어플리케이션 설정 파일에

그대로 문자열로 입력해 사용하는 경우가 있습니다.

이런 경우를 보안하고자 환경변수에 값을 넣어

어플리케이션 설정파일에 그대로 노출이 되지 않도록 하는 방법을 알아보겠습니다.

 

application.yml

security:
  jwt:
    secret-key: agisehlgkfjalbjiajelfkmelsjalfidgiejalsgkjdl9iajelig
    issuer: aljjabaegi.com
  jasypt:
    secret-key: com.aljjabaegi
  rsa:
    secret-key: com.aljjabaegi

 

예를들어 위와같이 키를 그대로 문자열로 사용할 경우 문제가 될 수 있습니다.

시스템 환경변수에서 읽을 수 있도록 ${name} 으로 변경 합니다.

 

security:
  jwt:
    secret-key: ${jwt-key}
    issuer: aljjabaegi.com
  jasypt:
    secret-key: ${jasypt-key}
  rsa:
    secret-key: ${rsa-key}

 

이제 인텔리제이에서 어플리케이션의 Edit Configurations... 를 선택합니다.

 

그럼 아래와 같은 Configurations 팝업 창이 뜨게 됩니다.

 

Build and run 우측에 있는 Modify options 를 클릭 하여 Environment variables 를 추가합니다.

 

그럼 아래와 같이 Environment variables 을 입력할 수 있는 입력부가 추가되고 우측 $ 를 클릭하면 환경변수를 추가할 수 있는 팝업창이 뜨게됩니다.

 

$ 를 눌러 환경변수를 추가해줍니다.

 

이제 어플리케이션을 실행하면 정상적으로 동작하는 것을 확인할 수 있습니다.

 

배포 시에도 -jar 파일을 실행할 때 환경변수를 넘겨줘야 합니다. 

환경변수는 -D를 prefix 해서 사용합니다.

java -jar -Djasypt-key=com.aljjabaegi -Drsa-key=com.aljjabaegi -Djwt-key=agisehlgkfjalbjiajelfkmelsjalfidgiejalsgkjdl9iajelig api-0.0.1-SNAPSHOT.jar

 

반응형