기존에는 비밀번호나 키 값을 사용하기 위해 .yml에 값을 넣고 .gitignore를 사용하여 안보이게 하거나 github actions를 이용하여 프로젝트 빌드 전 github에 있는 secrets에 값을 이용해 빈 yml파일을 만들고 값을 넣는 방식으로 이용합니다.
그러나 이러한 방식은 귀찮고 번거로워서 다른 대안을 찾아보다 AWS Secret Manager를 알게되어 사용방법을 기록하고자 합니다.
• 비밀 키 관리 서비스
기존에 사용하던 Github Actions Secret과의 가장 큰 차이점은
단일 리포지토리 이냐 아니냐
AWS Secret Manager는 한번 설정하면 다른 리포지토리에서도 사용이 가능한 반면 Github Actions Secret은 단일 레포지토리에서만 설정이 가능했습니다
그런 차이가 유지보수 용이성에서 드러나기 때문에 AWS Secret Manager가 더 좋다고 판단했습니다.
그리고 한가지 더❕ 테스트용으로 yml에 정보를 넣어두면 자꾸 중국에서 접속했냐는 알림을 보내더라구요 ㄷㄷ... 이게 무서웠습니다
사용함에 있어 빈번하게 쓰이는 2가지에 대해 말씀드리겠습니다.
아래 방법은 IAM 생성 후 IAM 계정에서 진행되었습니다.
✔️ Amazon RDS 데이터베이스에 대한 자격 증명
✔️ 다른 유형의 보안 암호
• 사용 전 의존성을 추가해줍니다
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' implementation 'com.amazonaws.secretsmanager:aws-secretsmanager-jdbc:1.0.8'
• Amazon RDS 데이터베이스에 대한 자격 증명 설정
Secret Manager에 가서 새 보안암호 저장을 눌러줍니다.

Amazon RDS 데이터베이스에 대한 자격 증명 선택 후 정보를 넣고 만들어 놓은 RDS 선택

암호이름은 나중에 쓰이지만 그냥 만들고 싶은대로 만들면 됩니다

그러면 다음처럼 나타나게 됩니다.

보안 암호 값을 누르면

다음처럼 값이 나오게 됩니다.

YML에 다음처럼 사용하면 됩니다.

datasource: # RDS 설정
driver-class-name: com.amazonaws.secretsmanager.sql.AWSSecretsManagerMySQLDriver
url: jdbc-secretsmanager:mysql://HOST:3306/dbname
username: 3번의 보안암호이름 넣기
이렇게 RDS를 위한 보안설정이 끝났습니다.
다음으로 다른 유형의 보안 암호에 대해 알아보겠습니다. 다른유형의 보안암호는 @Value("${~ ~ ~ ~}") 형태로 사용하게 됩니다.
• 다른 유형의 보안 암호 설정
Secret Manager에 가서 새 보안암호 저장을 눌러줍니다.

key - value 에 사용하고자하는 값 설정

암호이름은 나중에 쓰이지만 그냥 만들고 싶은대로 만들면 됩니다
설정 시 /secret/~~ 으로 설정하시면 될 듯 합니다

그러면 다음처럼 나타나게 됩니다.
여기서는 /secret/s3config 로 설정 함.

보안 암호 값을 확인하면 다음처럼 보이게 됩니다.

사용을 위해 bootstrap.yml 파일을 만듭니다

값을 다음처럼 넣습니다 이름은 /secret/s3config 의 s3config를 넣었습니다

그러면 다음처럼 사용할 수 있습니다.

설치는 링크에서 설치 가능합니다.
설치 후 설정을 해야 Secret Manager를 사용할 수 있습니다.
윈도우는 실행파일 받아서 설치하시고 맥도 잘 나와있습니다
설치 후 aws configure 입력하면 아래 입력칸이 자동으로 나오게 됩니다.
❯ aws configure
AWS Access Key ID [None]: AKIAXTXDUDJKZ64UUCMZ
AWS Secret Access Key [None]: 시크릿 키 입력
Default region name [None]: ap-northeast-2
Default output format [None]: json

❗주의❗ 로컬환경에서 빌드한 파일을 EC2에서 실행할 때 cli를 한번 더 설치하고 aws configure 명령어로 값을 넣어주어야 합니다. 위에 설정은 로컬환경에서만 설정한겁니다.


이렇게 로컬과 ec2 둘다 설정해야 합니다.
EC2에 설치하는 방법은 여기있습니다.
권한설정에서 SecretsManagerReadWrite 를 꼭 넣어야 합니다.
