RDS Security - Encryption
- Rest Encryption
움직이지 않는 데이터를 말하며 AWS KMS를 통해 Master 데이터베이스와 Read Replica를 암호화할 수 있는 기능
AWS KMS는 AES-256 암호화를 사용하는 AWS의 핵심 관리 서비스로 암호화를 할 때 시작 시간에 정의
만약 Master가 암호화되지 않으면 Read Replica는 암호화될 수 없음
또한 데이터베이스 암호화를 위한 대안적인 방법인 투명한 데이터 암호화인 TDE를 Oracle가 SQL 서버에 적용할 수 있음 - In-flight Encryption
항상 믿을 수 있는 증명서인 SSL 인증서를 제공하여 SSL 연결이 구축되고 전송 중인 RDS로 데이터를 암호화
(in-flight는 클라이언트로부터 데이터베이스 전송하는 것을 뜻함)
모든 클라이언트가 SSL을 사용하게 하기 위해서는 PostgreSQL을 사용할 경우 rds.force_ssl=1 파라미터 그룹 설정 필요하며
MySQL의 경우 DB에서 SQL 명령문인 GRANT USAGE ON *.* TO 'mysqluser'@'%' REQUIRE SSL; 를 실행
RDS Encryption Operations
- RDS 백업을 암호화하는 방법
만약 암호화되지 않은 RDS 데이터베이스의 스냅샷을 찍게 되면 그 스냅샷 자체도 암호화되지 않음
반대로 암호화된 RDS 데이터베이스의 스냅샷을 찍으면 모든 스냅샷은 항상 암호화됨
그러므로 암호화되지 않은 스냅샷을 암호화된 스냅샷으로 복사해야 함
즉, 암호화되지 않은 RDS 데이터베이스의 스냅샷을 찍고 이를 복사해 암호화된 버전의 스냅샷을 생성 - 암호화되지 않은 RDS 데이터베이스를 암호화하는 방법
전달받은 정보를 바탕으로 암호화되지 않은 RDS 데이터베이스의 스냅샷을 생성한 후,
그 스냅샷을 복사하면 복사된 스냅샷에서는 암호화가 적용됨
이 후 암호화된 스냅샷으로부터 데이터베이스를 저장할 수 있고 이에 따라 암호화된 RDS 데이터베이스를 얻게 됨
그 후 앱을 암호화되지 않은 RDS 데이터베이스에서 새로운 암호화된 RDS 데이터베이스로 이전한 후 이전 데이터베이스를 삭제
RDS Security – Network & IAM
- 네트워크 보안을 위해 RDS 데이터베이스는 보통 퍼블릭 서브넷이 아닌 프라이빗 서브넷에 배치되므로
반드시 WWW에 데이터베이스를 노출하지 않아야 하며
RDS 보안은 RDS 인스턴스에 부착한 보안 그룹을 활용하여 작동하며 RDS와 통신할 수 있는 IP와 보안 그룹을 제어 - 접근 관리에서는 IAM 정책을 이용해 AWS RDS의 데이터베이스 생성, 삭제, 읽기, 쓰기 등을 관리하는 사람을 정해 통제
전통적인 방법으로는 사용자 이름과 비밀번호를 사용하여 데이터베이스에 로그인하도록 함
오직 RDS MySQL과 RDS PostgreSQL에서만 IAM 기반 자격 증명을 사용할 수 있음 - 데이터베이스 보안을 보통 데이터베이스 안에서 이루어짐
RDS - IAM Authentication
- IAM 자격 증명을 통해 RDS에 연결하는 방법
MySQL과 PostgreSQL에서만 가능하며 비밀번호가 필요하지 않고 자격 증명 토큰만 필요하며
자격 증명 토큰은 IAM과 RDS API Call로부터 직접적으로 얻을 수 있음 - 자격 증명 토큰은 15분의 수명 기간을 갖고 있음
- EC2 보안 그룹에 EC2 인스턴스 그리고 RDS 보안 그룹에 MySQL RDS 데이터베이스가 존재하며
EC2 인스턴스는 IAM 역할이라고 불리는 것을 가지고 있기 때문에 EC2 인스턴스가 자격 증명 토큰을 돌려받기 위해
API call을 RDS 서비스로 보낼 수 있음
토큰을 사용하면 MySQL 데이터베이스에 연결하는 동안 패스되어 연결될 수 있으며 반드시 연결이 암호화되어있는지 확인 필요
안과 밖의 네트워크는 SSL을 통해 반드시 암호화되며 데이터베이스의 매니저 사용자 대신 IAM이 중심적인 매니저로 사용
또한 쉬운 통합을 위해 IAM 역할과 EC2 인스턴스 프로필을 사용할 수 있음
RDS Security – Summary
- 고정된 암호화는 데이터베이스 인스턴스를 처음으로 생성할 때만 적용되며
만약 암호화되어 있지 않은 경우, 스냅샷과 스냅샷의 복사본을 생성하여 암호화하고
암호화된 스냅샷으로부터 새로운 데이터베이스를 생성해야 하며 이 경우 데이터베이스는 암호화됨 - 우리의 역할
DB의 보안 그룹에서 포트/IP/보안그룹 인바운드 규칙 확인이 필요하며
데이터베이스 안의 모든 사용자 생성 및 허용을 관리하거나 MySQL, PostgreSQL의 IAM을 통해 관리하고
공개 액세스 여부에 관계없이 데이터베이스를 생성하며 매개변수 그룹 또는 DB가 SSL 연결만 허용하도록 구성되었는지 확인 - AWS의 역할
SSH 접근을 가지고 있지 않고 데이터베이스, OS 패치를 직접하지 않아도 대신 해주며
기본 인스턴스를 감사할 방법이 없으므로 사용자에게 달려있음
'Cloud > AWS' 카테고리의 다른 글
[SAA] Aurora 고급 개념 (0) | 2022.03.08 |
---|---|
[SAA] Aurora 개요 (0) | 2022.03.08 |
[SAA] RDS 읽기 전용 복제본과 다중 AZ (0) | 2022.03.07 |
[SAA] RDS 개요 (0) | 2022.03.07 |
[SAA] ASG 솔루션 아키텍트 (0) | 2022.03.05 |