이전 포스트에서는 로컬 환경에서 RDS를 SpringBoot 프로젝트와 연결하는 데 성공했다. 이번에는 AWS의 CodePipeline을 CI/CD구축을 해서 ECS로 배포에 성공한 SpringBoot 프로젝트의 tomcat에 이 RDS(postgreSQL)를 연결해 주도록 하자 이 포스트에서는 우선 Secret을 생성하는 방법에 대해서 소개한다.
1. AWS Secrets Manager를 사용하는 이유
1-1. Secrets Manager를 사용하는 이유
- AWS Secrets Manager를 사용하는 이유는 보안 때문이다.
- 예를 들어, GitHub 같은 공개된 저장소에 데이터베이스 접속 정보나 API 키 같은 민감한 정보를 yml 파일에 그대로 넣어두면, 누구나 그 정보를 볼 수 있게 되고, 이는 심각한 보안 문제로 이어질 수 있다.
- Secrets Manager는 이런 민감한 정보들을 안전하게 저장하고 관리할 수 있는 서비스다.
1-2. 암호화
- Secrets Manager는 민감한 정보를 암호화하여 저장하고, AWS Identity and Access Management(IAM) 정책을 사용하여 접근을 제어한다.
1-3. 자동 회전
- 데이터베이스 비밀번호 같은 정보는 정기적으로 바꿔주는 게 좋은데, Secrets Manager는 이를 자동으로 할 수 있게 해 준다.
1-4. 중앙 관리
- 모든 비밀 정보를 한 곳에서 관리할 수 있어서, 필요할 때 어디서든지 안전하게 접근할 수 있다.
1-5. 감사 및 모니터링
- 언제, 누가 비밀 정보를 사용했는지 추적할 수 있어서 보안 감사에도 도움이 된다.
이러한 점들이 있어서 AWS CodePipeline을 통해 ECS에 배포하는 SpringBoot 애플리케이션에서 RDS와 연결할 때, Secrets Manager를 사용하면 환경변수를 안전하게 주입할 수 있고, 코드나 설정 파일에 민감한 정보를 직접 넣지 않아도 된다. 이렇게 하면 보안을 강화할 수 있고, 비밀번호 같은 정보가 유출될 위험도 줄일 수 있다.
2. AWS Secrets Manager에서 Secret 생성하기 (생성 ~ 1단계)
2-1. AWS secrets Manager 들어가기
- chrome에서 검색해서 들어가면 아래와 같이 나온다. 그게 아니라면 AWS의 검색창으로 "secrets Manager"를 검색하자
2-2. 새 보안 암호 저장하기
- 로그인되었다면 아래와 같은 페이지로 이동할 텐데 여기서 우측 상단의 "새 보안 암호 저장" 버튼을 클릭한다.
2-3. 1단계: 보안 암호 유형 선택하기
- 보안 암호 저장을 클릭했다면 아래와 같이 4단계로 나뉜 내용들을 선택하게 될 것이다.
- 여기서 보안 암호 유형은 "다른 유형의 보안 암호"를 선택한다.
1단계: 키/값 페어 선택하기
- 저장할 데이터를 key, value로 표현해서 작성을 해준다.
- springBoot의 db connect관련으로는 url, username, password가 존재한다.
1단계: 암호화 키 선택하기
- 맨 하단에서 암호화 키를 선택하고 "다음"버튼을 클릭한다.
3. AWS Secrets Manager에서 Secret 생성하기 (2단계)
3-1. 보안 암호 이름 및 설명 작성
- 2단계에 들어오면 처음에 보안 암호 이름 및 설명을 작성하게 된다. 여기서 원하는 대로 작성해 주면 된다.
3-2. 태그 설정
- 태그는 default값을 그대로 둔다. (보안 암호와 연결된 태그 없음)
3-3. 리소스 권한 설정하기
- 여기서 리소스 권한을 설정하는 것도 좋지만 이 Secrets를 먼저 설정하고 나서 IAM에서 정책을 수정하는 게 더 좋았다.
3-4. 보안 암호 복제
- 보안 암호 복제는 설정하지 않았다. 복제본이 존재한다면 당연히 더 안전할 것이지만 요금이 부과된다는 단점이 있다.
- 이렇게 설정을 하고 "다음" 버튼을 클릭해서 3단계로 넘어간다.
4. AWS Secrets Manager에서 Secret 생성하기 (3단계)
4-1. 교체 구성하기
- 자동 교체 구성은 default값을 그대로 두었다.
4-2. 교체 일정 선택
- 교체 일정 또한 default를 그대로 따랐다. (잠겨있다)
4-3. 교체 함수 (Lambda) 설정하기
- 이것도 딱히 선택하지 않고 기본값을 그대로 두었다. (잠겨있다)
- 이후 하단의 "다음" 버튼을 눌러서 4단계로 넘어간다.
5. 검토하기 (4단계)
5-1. 검토하기
- 이번 단계에서는 지금까지 1~3단계에서 작성했던 내용들을 검토하게 된다.
- 4단계 검토의 맨 하단에는 다음과 같이 샘플 코드를 제공한다. 이것들을 다 확인한 후 하단의 "저장" 버튼을 누른다.
5-2. 생성완료 확인하기
- 생성이 완료된다면 아래와 같은 페이지로 이동하면서 생성이 완료된 것을 확인할 수 있을 것이다.
여기까지가 AWS의 Secrets Manager를 사용해서 보안 암호(Secret)를 만드는 과정이다.
생각보다 간단하지만 이것을 ECS에 적용시키는 방법은 그리 간단하지는 않으니(오류를 많이 만남) SpringBoot에 연동하고자 한다면 다음 포스트를 꼭 확인했으면 좋겠다.
2023.11.03 - [AWS] - AWS Secrets & ECS SpringBoot 설정 (2): ECS 연동
AWS Secrets & ECS SpringBoot 설정 (2): ECS 연동
저번 포스트에서는 AWS의 Secret을 만들었으니 이번에는 이것을 ECS에 연결해 보도록 하는 작업을 진행할 텐데 IAM정책부터 ECS의 태스크 정의까지 해보도록 한다. 1. IAM 역할 설정하기 먼저, ECS 태스
curiousjinan.tistory.com
'AWS > ECS, ECR' 카테고리의 다른 글
AWS Secrets & ECS SpringBoot 설정 (3-1): ECS배포와 오류 분석 (0) | 2023.11.03 |
---|---|
AWS Secrets & ECS SpringBoot 설정 (2): ECS 연동 (0) | 2023.11.03 |
AWS ECS와 ALB: 동적 포트 vs 명시적 포트 설정의 EC2 DNS 접속 이슈 (1) | 2023.10.31 |
AWS - ALB를 적용시킨 ECS의 동적 포트 할당관계 동작원리 (1) | 2023.10.30 |
AWS - ALB(로드 밸런서)없이 ECS 생성하기 (1) | 2023.10.28 |