본문 바로가기

Infrastructure/Certificate

[SAA] AWS Fundamentals - RDS

AWS Fundamentals: RDS

이번 장에서는 SAA를 준비하며 RDS에 대해서 알아보도록 한다.


RDS(Relational Database Service) Overview

  • RDS는 AWS에서 제공하는 완전 관리형 데이터베이스 서비스이며, 쿼리 언어로 SQL를 사용한다.
  • RDS를 통해서 AWS에서 관리하는 클라우드에서 아래와 같은 데이터베이스를 생성할 수 있다.
    • Postgres
    • MySQL
    • MariaDB
    • Oracle
    • Microsoft SQL Server
    • Aurora (AWS Proprietary database)
  • 직접 인스턴스에 DB를 설치해서 사용하는 것 보다 RDS를 사용하면 아래와 같은 장점이 있다.
    • RDS는 관리형 서비스이다.
    • 자동으로 프로비저닝되며, OS 패치가 이루어진다.
    • 지속적인 백업 및 특정 타임스탬프로 지정하여 복원할 수 있다.
    • 대시보드 모니터링이 가능하다.
    • 향상된 읽기 성능을 위한 읽기 전용 복제본을 제공한다.
    • DR을 위한 다중 가용지역 설정이 가능하다.
    • 수직 및 수평 확장 기능을 제공한다.
    • EBS 지원하는 스토리지를 사용할 수 있다.
  • RDS의 경우 인스턴스에 SSH 접속이 불가능하다.

백업(Backups)

  • 백업은 RDS에서 자동으로 활성화되어 있다.
  • Automated backups.
    • 데이터베이스의 일일 전체 백업(유지 관리 기간 동안)
    • 트랜잭션 로그는 5분마다 RDS에 의해 백업된다.
    • 가장 오래된 백업에서 최근 5분전까지 원하는 시점으로 복원할 수 있다.
    • 최대 35일까지 연장가능하며 기본적으로 7일까지 보존할 수 있다.
  • DB Snapshot:
    • 사용자가 수동으로 트리거한다.
    • 원하는 기간 동안 백업 보존이 가능하다.

스토리지 자동 확장(Storage Auto Scaling)

  • RDS DB 인스턴스의 스토리지를 동적으로 늘릴 수 있다.
  • RDS에서 사용 가능한 데이터베이스가 부족함을 감지한 경우 스토리지를 자동 확장한다.
  • RDS 담당자가 스토리지를 수동으로 확장하는 것은 피해야 한다.
  • DB 스토리지에 대한 최대 제한과 같은 스토리지 임계값을 설정해야 한다.
  • 아래와 같은 경우에는 스토리지를 자동으로 수정해야 한다.
    • 여유 스토리지가 할당된 스토리지의 10% 미만인 경우
    • 낮은 스토리지가 5분 이상 지속되는 경우
    • 마지막 수정 이후 6시간동안 수정이 이루어지지 않은 경우
  • RDS는 예측할 수 없는 워크로드가 있는 애플리케이션에 유용하다.
  • RDS는 모든 데이터베이스 엔진을 지원한다.

읽기 확장성을 위한 RDS 읽기 전용 복제본

  • 최대 5개의 읽기 전용 복제본을 생성할 수 있다.
  • 가용지역 내, 교차 가용지역 또는 교차 리전을 지원한다.
  • 비동기적으로 동기화되기 때문에 최종적으로 데이터의 일관성이 지켜진다.
  • 복제본은 승격될 수 있다.
  • 애플리케이션은 읽기 전용 복제본을 활용하기 위해 연결 문자열을 업데이트해야 한다.

  • 읽기 전용 복제본의 사용 사례는 아래와 같다.
    • 정상적인 부하를 처리하는 프로덕션 데이터베이스가 있다.
    • 보고 응용 프로그램을 실행하여 일부 분석을 실행하려는 경우 새 워크로드를 실행하기 위해 읽기 전용 복제본을 생성한다.
    • 프로덕션 애플리케이션은 영항을 받지 않는다.
    • 읽기 전용 복제본은 SELECT 유형의 명령문만 사용할 수 있다.

Network Cost

  • AWS에서는 데이터가 하나의 가용지역에서 다른 가용지역으로 이동할 때 네트워크 비용이 발생한다.
  • RDS 또한 동일한 리전 내의 RDS 읽기 전용 복제본의 경우 네트워크 비용이 발생하지 않지만 다른 리전 또는 가용지역으로 복제본을 생성하는 경우 네트워크 비용이 발생한다.

다중 가용지역 (DR, Disaster Recovery)

  • 동기로 복제를 진행한다.
  • 하나의 DNS 이름을 사용하고 대기모드로 자동으로 앱 장애 조치를 진행하여 가용성을 향상시킨다.
  • 가용지역 손실, 네트워크 손실, 인스턴스 또는 스토리지 장애 시 장애 조치가 가능하다.
  • 앱에 수동으로 개입하지 않고 스케일링에 사용되지 않는다.
  • 다중 가용지역 복제는 무료로 사용할 수 있다.
  • 읽기 전용 복제본은 재해 복구(DR)을 위한 다중 가용지역으로 설정할 수 있다.

단일 가용지역에서 다중 가용지역으로 전환

  • DB가 정지되는 다운타임이 불필요하다.
  • 데이터베이스에 대해 “수정”을 클릭하는 것만으로 전환이 가능하다.
  • 내부적으로 아래와 같은 프로세스를 통해 전환된다.
    • 스냅샷이 생성된다.
    • 새로운 가용지역의 스냅샷에 새로운 DB가 복원된다.
    • 두 데이터베이스 간의 동기화가 설정된다.

RDS 보안 - 암호화

  • 저장 시 암호화
    • AWS KMS로 마스터 및 읽기 전용 복제본 암호화가 가능하다. AES-256 암호화가 사용된다.
    • 시작되는 시점에 암호화를 정의해야 한다.
    • 마스터가 암호화되지 않은 경우 읽기 전용 복제본을 암호화할 수 없다.
    • TDE(투명한 데이터 암호화)는 Oracle과 SQL Server에서 사용 가능하다.
  • 전송 중 암호화
    • 전송 중 RDS로 데이터를 암호화하기 위한 SSL 인증서를 사용할 수 있다.
    • 데이터베이스에 연결할 때 신뢰 인증서와 함께 SSL 옵션을 제공한다.
    • 아래와 같은 방식으로 SSL을 설정할 수 있다.
      • PostgreSQL: AWS RDS 콘솔의 파라미터 그룹에서 rds.force_ssl=1로 설정한다.
      • MySQL: DB에 사용자를 추가할 때 아래와 같은 속성을 추가한다.
        GRANT USAGE ON *.* TO ‘mysqluser'@'%' REQUIRE SSL;
  • 백업 암호화
    • 암호화되지 않은 RDS 데이터베이스의 스냅샷은 암호화되지 않는다.
    • 암호화된 RDS 데이터베이스의 스냅샷은 암호화된다.
    • 스냅샷을 암호화된 데이터베이스로 복사할 수 있다.
  • 암호화되지 않은 RDS 데이터베이스를 암호화 하려면 아래와 같은 작업을 진행해야 한다.
    • 암호화되지 않은 데이터베이스의 스냅샷을 생성한다.
    • 스냅샷 복사 및 스냅샷에 대한 암호화를 활성화한다.
    • 암호화된 스냅샷에서 데이터베이스를 복원한다.
    • 애플리케이션을 새 데이터베이스로 마이그레이션하고 이전 데이터베이스를 삭제한다.

RDS 보안 - Network & IAM

  • 네트워크 보안(Network Security)
    • RDS 데이터베이스는 일반적으로 퍼블릭 서브넷이 아닌 프라이빗 서브넷에 배포된다.
    • RDS 보안은 EC2 인스턴스와 동일하게 보안 그룹을 활용하여 작동한다. - RDS가 통신할 수 있는 IP/보안 그룹을 제어한다.
  • 액세스 관리(Access Management)
    • IAM 정책은 RDS API를 통해 누가 AWS RDS를 관리할 수 있는지 제어하는 데 도움이 된다.
    • 기존 사용자 이름 및 암호를 사용하여 데이터베이스에 로그인할 수 있다.
    • IAM 기반 인증을 사용하여 RDS MySQL 및 PostgreSQL에 로그인할 수 있다.
  • IAM Authentication
    • IAM 데이터베이스 인증은 MySQL, PostgreSQL에서 사용할 수 있다.
    • 비밀번호가 필요하지 않으며 IAM & DS API 호출을 통해 획득한 인증 토큰만 소유하면 된다.
    • 인증 토큰의 수명은 15분으로 제한되어 있다.
    • IAM 인증을 사용하면 아래와 같은 장점이 있다.
      • 네트워크 인/아웃은 SSL을 사용하여 암호화되어야 한다.
      • IAM은 DB 대신 중앙에서 사용자를 관리한다.
      • 손쉬운 통합을 위해 IAM 역할 및 EC2 인스턴스 프로필을 활용할 수 있다.

RDS 보안 - 요약

  • 저장 시 암호화
    • DB 인스턴스를 처음 생성하거나 암호화되어야 한다.
    • 만약 생성하는 시점에 암호화를 진행하지 않았다면 스냅샷을 생성하고 새로운 암호화 DB에 복원하는 방식으로 암호화를 진행해야 한다.
  • 사용자의 책임
    • DB의 보안 그룹내의 포트 / IP / 인바운드 규칙을 확인해야 한다.
    • 데이터베이스 내 사용자 생성 및 권한 또는 IAM을 통해 관리해야 한다.
    • Creating a database with or without public access
    • 파라미터 그룹 또는 DB가 SSL 연결만 허용하도록 구성되었는지 확인해야 한다.
  • AWS의 책임
    • SSH 엑세스 접근할 수 없다.
    • 수동 DB 패치는 없다.
    • 수동 OS 패치는 없다.
    • 기본 인스턴스를 감사할 방법이 없다.

참고 자료