본문 바로가기
Spring/DB

AWS Secrets Manager 설정하고 Spring boot 연동하기

by YoonJong 2023. 1. 19.
728x90

프로젝트를 배포하려는 중 .ignore 한 파일에 대한 환경변수를 어떻게 처리해야할지 고민이 많았다.

 DB 접속정보도 중요하고, AWS S3 에 대한 access-key , secret-key 등 중요한 정보가 많았다.

 

개인프로젝트 배포를 Docker 와 ec2, github action 을 이용해서 했는데, 여러 블로그를 보니 properties 파일을 따로 만드는 코드를 작성해서 환경변수를 넣어주는 것 같았다.

 

이러한 중요한 정보를 키/값 으로 지원해주는 솔루션을 제공해주는 여러가지 방법이 있었다.키교체, 교차 계정 액세스 등 아직은 사용하지않지만.. 현업에서 더욱 많이 사용할 거라 생각해 선택했다.https://rainbound.tistory.com/entry/AWS-Parameter-Store-%EC%99%80-AWS-Secrets-Manager-%EA%B3%B5%ED%86%B5%EC%A0%90%EA%B3%BC-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

AWS Parameter Store 와 AWS Secrets Manager 공통점과 차이점

목차 공통점 Managed Key/Value Store Services 이 두 서비스 사이에는 많은 유사점이 있습니다. 이 두 서비스 모두 이름이나 키 아래에 값을 저장하는 솔루션을 제공합니다. 두 서비스 모두 최대 4096자의

rainbound.tistory.com

 


 

Secrets Manger는 AWS에서 제공해주는 secret 값을 관리해주는 서비스이다.

아직 취준생이라, 유료인 서비스이지만 월 0.4$ 로, 자바 파일에서 하드코딩하여 보안에 신경써야 하는 것 치고는 저렴한 가격이어서 선택하게 되었다. ( 10000개 까지 0.4$ 이후 추가 0.05$ )

 

새 보안 암호 저장을 클릭한다.

다른 유형의 보안 암호를 선택한다.

키/값 페어에 자신이 등록할 키 / 값 을 입력한다.

database 등 모든 환경변수가 가능하다. 

나는 database url, username , password , cloud 관련한 내용을 넣어주었다.

보안 암호 구성화면에서 보안 암호 이름을 작성한다

/secret 은 고정값이며 그다음은 자유롭게 작성하면된다.

나는 shop 이라고 작성했다.

 

그 다음 저장까지 쭉쭉 넘어가면된다. 따로 설정할 건없다.

 

 

그다음 사용하고 ec2 에서 IAM 에서 Role 을 추가해주어야 한다.

 

윈도우 cmd 창을 열어서 aws configure 을 작성해준다.

C:\Users\xxxxxxx>aws configure
AWS Access Key ID [None]: Access Key
AWS Secret Access Key [None]: Secret Access Key
Default region name [None]: ap-northeast-2 
Default output format [None]:

 

여기까지 하면 aws 에서 설정은 끝났다.

 

연결할 spring boot 애플리케이션 에서 설정을 해주어야 한다.

gradle 추가를 해준다.

// aws 시크릿 매니저
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap:3.1.3'
implementation 'org.springframework.cloud:spring-cloud-starter-aws-secrets-manager-config:2.2.6.RELEASE'

bootstrap.yml 파일을 생성해준다.

경로는 최상위 폴더 바로 아래생성해주었다.

bootstrap.yml 안의 내용은 아래와 같다.

name은 설정한 /secret/shop 의 shop 을 넣어주고

region또한 넣어준다.

aws:
  secrets-manager:
    name: shop
cloud:
  aws:
    region:
      static: ap-northeast-2

 

 


이제 설정이 완료되었다.

나는 S3 설정을 @Value 값으로 해놓았는데, 처음 생각했을 때 시크릿매니저에서 설정한 값이 바로 @value에 들어가는 구나 라고 생각하고 application.yml 에서 설정한 값을 모두 주석처리해보고 테스트를 했는데, 값을 찾지 못했다.

 

application.yml 에서 설정은 필요하며, 하드코딩이 아닌 시크릿매니저에서 불러올 수 있도록 바꿔주어 연동을 완료했다.

 

 

728x90

댓글