
일반적으로 AWS로 프로젝트를 진행하다 보면, Amazon Aurora를 많이 사용하게 됩니다.
Aurora에 저장되는 데이터가 민감 정보이거나 개인 정보로 식별이 된다면 반드시 DB 접근제어 솔루션을 통해 보안을 강화하여야 합니다.
하지만 작은 프로젝트의 경우 소수의 개발자/엔지니어 통제를 위해 상용 DB 접근제어를 도입하기엔 비용에 부담이 될 수 있습니다.
이번 포스팅에서는 AWS 기능을 이용한 DB 접근제어 방안을 살펴보겠습니다.
*참고* DB 접근 제어의 요건
• 누가 데이터에 액세스하거나 수정했습니까?
• 데이터에 액세스하거나 수정 한시기는 언제입니까?
• 특정 사용자가 데이터에 액세스하는 방법은 무엇입니까?
• 변경이 이루어지기 전에 데이터베이스 테이블에 대한 변경이 승인되었습니까?
• 권한 있는 사용자가 수퍼 유저 권한을 남용하고 있습니까?

DB 접근 제어에 대한 검증 데모로 Bastion Host 접근에 대한 내용은 생략합니다.
1. RDS DB 인스턴스의 데이터베이스 인증 옵션을 ‘암호 및 IAM 데이터베이스 인증’으로 변경합니다.
: [RDS] > [데이터베이스] > 대상 클러스터 or DB > 수정

2. AWS 인증 토큰을 사용하는 데이터베이스 사용자 계정을 생성합니다.
a. mysql 설치

b. 유저 생성 권한이 있는 DB User로 사용자 계정 생성
i. SQL 문

ii. 예시

3. 데이터베이스 사용자를 매핑하는 IAM 정책 추가
: DB에 연결하고자 하는 IAM User에 다음과 같은 Policy를 생성하여 연결합니다.
a. 예시

(참고 URL : https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.IAMPolicy.html)
4. AWS 인증 토큰을 생성하여 IAM 역할 식별
a. 명령어

b. 실행화면

5. IAM 역할 자격 증명과 인증 토큰을 사용하여 RDS DB 인스턴스에 연결
a. 명령어

b. 실행화면

1. (Aurora Mysql 8.x 기준) DB 파라미터 그룹 변경
a. server_audit_logging : 1
b. server_audit_events : CONNECT, QUERY, QUERY_DCL, QUERY_DDL, QUERY_DML, TABLE
c. (참고) 감사 구성 옵션 – CONNECT – Connection 성공, Connection 실패, 그리고 disconnections에 대한 로그. 이 값에는 사용자 정보가 포함됩니다.
2. CloudWatch 로깅 설정
: [RDS] > [데이터베이스] > 대상 클러스터 or DB 인스턴스 > 수정



b. 로그 스트림 확인

c. 로그 이벤트를 필터링으로 검색
: db 유저명(dongin)으로 필터링

이번 포스트를 통해 AWS 서비스만을 이용하여 DB 접근 제어의 필요 기능을 구현할 수 있었습니다.
위의 데모 설정 외에도 특정 유저, 특정 쿼리문, 특정 테이블로 제한하여 감사하거나, 감사된 메시지를 필터 하여 알람을 설정할 수도 있습니다.
프로젝트에서 위와 같은 설정을 통해 DB 접근 사용자를 통제하고 중요한 데이터베이스를 감사할 수 있도록 설정하여 보다 강력한 보안 아키텍처를 구축할 수 있습니다.

기업명을 두 글자 이상 입력해주세요.
소식을 받아 보시려면 마케팅 정보 활용과 마케팅 정보 수신에 모두 동의해 주셔야 합니다.
제출이 완료되었습니다.
제출이 완료되었습니다.
확인 버튼을 누르시면 자사 홈페이지 홈화면으로 이동됩니다.
요청하신 자료가 이메일로 발송되었습니다.
구독 설정이 저장되었습니다.
잘못된 접근입니다. 정상적인 경로를 통해 다시 시도해 주세요.
검색 중 오류가 발생했습니다. 다시 시도해주세요.
제출에 실패하였습니다.
다시 시도해주세요.
사업자등록번호는 10자리를 입력해주세요.
지원하지 않는 파일 형식입니다.
10MB 이하의 파일만 업로드하실 수 있으며, 최대 10개까지 첨부 가능합니다.
10MB 이하의 파일만 업로드하실 수 있습니다.
파일은 최대 10개까지만 첨부하실 수 있습니다.
업로드 중 오류가 발생했습니다. 다시 시도해 주세요.
파일을 교체하시겠습니까?