하나에 다 적을려고 했는데 양이 너무 많아 질 것 같아서 따로 적는 즁..
팀장님이 application.properties 에 있는 accesskey 같은 것들을
암호화 할 수 있는지 알아봐 달라고 하셨다.
나도 튜터님들의 하드코딩
과 관련된 피드백을 받고 어떻게 처리할 수 있을까 고민했다.
(근데 이게 하드코딩과 관련이 된게 맞나..?) (올바른 지적은 언제나 환영입니당 알려주세요..!)
바로 쪼로로로록 달려가서 어떻게 숨길 수 있는지 여쭤봤다.
처음엔 단순하게 git 에 올릴때 application.properties 파일을 .gitignore 하면 되지 않을까? 하고 단순하게 생각했는데
AWS 의 Secrets Manager 를 사용하면 그 녀석이 코드를 실행할때 딱딱 값을 전달해 준다고 했다..!!
갓...AWS....;;; (클라우드를 배운 이유가 이거구나!!!! 쥐엔장!!! 믿고있었다구!!!)
(위 사진은 결과물 입니당;; ㅎㅎ)
바로 일단 보안암호 생성! 하러 갔는데 배운거는 DB관련된 걸 만드는거라
어라...? 했다가
다른 유형의 보안 암호가 있길래 그걸로 생성. 아주 친절한 녀석들이구나..
키에는 내 코드에 작성한 것과 이름이 같아야 값을 넣어준다.
튜터님이 설명해주신게 생각나서 똑같이 작성!
@Value("${aws.s3.accessKey}")
이 부분에 특정 값을 넣고 싶다면
키에 aws.s3.accessKey
를 적고 값에 abcd
를 적으면
private String accessKey = abcd
가 된다는 소리!!
Secrets Manager도 만들고 키,값을 올바르게 입력했다면 이제 몇 가지만 더 추가해 주면 된다.
우선 accesskey를 로컬에 등록해야 한다고 한다!!
수업을 들으면서 AWS CLI를 사용해서 바로 가능했지만 없다면 설치를 해야한다.
aws configure
를 명령창에 작성하면
accesskey, secret accesskey, region, format 을 작성해야 하는데
이 부분은 내가 참조했던 블로그에 너무 잘 설명이 되어 있어서 링크를 올리겠다.
아 그리고 IAM에서 Role 도 추가 해주어야 한다!
SecretsManagerReadWrite
또 마찬가지로 블로그에 설명이 엄청 잘 되어있는데
의존성과 설정 파일을 추가해 줘야 한다.
//AWS Secert Manager 사용
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'
블로그에서 알려준 코드와 버전이 맞지 않아서 에러가 났었던 모양인데 그것도 모르고 다른 곳에서 삽질을 좀 했었다;;;;
인텔리제이가 친절하게 주황색 밑줄 그어주면서 여기 업데이트 해볼래??? 하고 알려주길래 업데이트 했더니 바로 해결!!!
aws:
secretsmanager:
name: {프로젝트 명}
cloud:
aws:
region:
static: ap-northeast-2
여기서도 뭐가 안됐었는데 프로젝트 명을 설정하는 방식이 때문이었던 모양이다.
처음에 그냥 맘대로 맘들때는 Secrets Manager 보안암호 이름을 그냥 gogumacat으로 만들었었는데
더 알아보니 /secret/프로젝트명
으로 해야지 위의 코드 name
부분에서 프로젝트명을 제대로 파악하는 것 같다.
여기까지 완료했다면 아주 잘 코드가 작동을 할 것이다!!!
혹시.. 안된다면.... 다시 천천히 읽어보면서 해결하길 바란다...
(나는 해결했는데 남을 해결시켜줄 만한 능력이 없다...)