spring cloud config - 대칭 암호화 키 설정 (encrypt, decrypt 엔드포인트 이용)

Jinsan Lee·2022년 8월 5일
0

스프링 클라우드 config는 중요한 프로퍼티를 쉽게 암호화할 수 있는 기능을 제공하며, 대칭(공유 시크릿) 및 비대칭 암호화(공개/비공개) 키 사용을 지원한다.

비대칭 암호화는 현대적이고 더 복잡한 알고리즘을 사용하기 때문에 대칭 암호화보다 더 안전하다.

Why?

- 프로퍼티를 왜 평문화하여 프로젝트 내에 작성하면 안될까?

우리는 config 서버 내에 애플리케이션 구성 파일 안의 모든 프로퍼티를 평문으로 저장하는데

이때 여기에는 DB 자격 증명 등 중요한 정보도 함께 포함되어 있다.

이는 유지 보수 과정에서도 보안에 취약할 수 있으며 해당 프로젝트를 Github에 공개 시에도 노출될 위험이 있다.

때문에 이러한 정보들을 평문으로 저장하는 것은 바람직하지 못하다.


본인의 MSA 구축 연습 프로젝트에서는 postgres DB를 연동한다.

때문에 config server 프로젝트 내에 관련된 프로퍼티를 작성해야 한다.

이 중 사용자의 비밀번호 정보도 기재해야 하는데 이를 암호화 해보자.

  • /encrypt 엔드포인트를 사용하여 스프링 데이터 소스 패스워드를 암호화

사진에서 확인 가능하듯 응답으로 암호화된 문자열을 받을 수 있다.

여기서 중요한 점은 /encrypt(암호화), /decrypt(복호화) 엔드포인트는 POST 호출을 해야 한다.

또한 전송할 때 body에는 암호화 또는 복호화하고 싶은 프로퍼티 내용을 그대로 적어주면 된다.

이후 응답 받은 문자열을 아래와 같이 {cipher} 와 함께 config 프로젝트 yml 파일에 작성해주면 된다.

({cipher}는 config 서버가 암호화된 값을 처리하도록 지정한다.)


0개의 댓글