반응형
이전 포스트에서는 로컬 환경에서 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 > 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 |