프로젝트를 배포하려는 중 .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
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 에서 설정은 필요하며, 하드코딩이 아닌 시크릿매니저에서 불러올 수 있도록 바꿔주어 연동을 완료했다.
'Spring > DB' 카테고리의 다른 글
Ehcache 2 -> Ehcache 3 마이그레이션 (0) | 2023.01.23 |
---|---|
RDS timezone Asia/Seoul 로 변경하기 (0) | 2023.01.19 |
RDS MYSQL 연결 시 Connection time out 해결하기 (0) | 2023.01.17 |
Ehcache 를 사용한 Cache 이용해보기 (1) | 2023.01.02 |
H2 데이터베이스 데이터 유지하기 (0) | 2022.12.20 |
댓글