RDS & Aurora Security

은채의 성장통·2025년 2월 9일

AWS

목록 보기
38/79

AWS RDS 및 Aurora 데이터베이스 보안 설정

AWS RDS(Relational Database Service) 및 Amazon Aurora는 데이터의 기밀성과 무결성을 보장하기 위해 다양한 보안 기능을 제공한다. 데이터 보호를 위해 암호화, 네트워크 보안, 접근 제어, 로깅 등의 기능을 활용할 수 있으며, 이를 통해 안전한 데이터베이스 환경을 구축할 수 있다.

1. 데이터 암호화

1) 저장 데이터 암호화(Encryption at Rest)

  • RDS 및 Aurora는 AWS Key Management Service(KMS)를 사용하여 데이터베이스의 데이터를 암호화할 수 있다.
  • 암호화는 마스터 인스턴스 및 모든 복제본에 적용되며, 초기 생성 시에만 설정 가능하다.
  • 즉, 마스터 인스턴스가 암호화되지 않았다면 해당 마스터에서 생성된 복제본도 암호화되지 않는다.
  • 예제: RDS 인스턴스 생성 시 KMS 암호화 활성화
    {
      "AllocatedStorage": 20,
      "DBInstanceClass": "db.t3.medium",
      "Engine": "mysql",
      "MasterUsername": "admin",
      "MasterUserPassword": "mypassword",
      "StorageEncrypted": true,
      "KmsKeyId": "arn:aws:kms:region:account-id:key/key-id"
    }
    
  • 만약 기존 RDS 인스턴스를 암호화하려면, 암호화된 스냅샷을 생성한 후 새로운 암호화된 인스턴스를 생성해야 한다.

2) 전송 중 데이터 암호화(Encryption in Transit)

  • 클라이언트와 데이터베이스 간의 데이터 전송을 보호하기 위해 TLS/SSL을 사용할 수 있다.
  • AWS는 TLS 인증서를 제공하며, 이를 활용하여 데이터베이스와의 안전한 연결을 보장할 수 있다.
  • 예를 들어, MySQL의 경우 SSL을 활성화하고 연결할 수 있다.
    mysql -h mydb.cluster-xxxxxxxxxx.region.rds.amazonaws.com \
          -u admin -p --ssl-ca=AmazonRootCA1.pem
    
  • Amazon 제공 인증서는 AWS 인증서 다운로드 페이지에서 받을 수 있다.

2. 네트워크 및 접근 제어

1) IAM 역할을 통한 접근 제어

  • AWS IAM(Identity and Access Management)을 활용하여 RDS 및 Aurora 데이터베이스에 대한 세부적인 접근 권한을 설정할 수 있다.
  • RDS Proxy 또는 IAM 기반 인증을 사용할 경우, 애플리케이션이 IAM 역할을 통해 RDS에 접근할 수 있다.
  • 예제: IAM 정책을 활용한 접근 권한 부여
    {
      "Effect": "Allow",
      "Action": "rds-db:connect",
      "Resource": "arn:aws:rds-db:region:account-id:dbuser:db-cluster-id/db-username"
    }
    

2) 보안 그룹(Security Group) 설정

  • RDS 및 Aurora는 보안 그룹을 사용하여 특정 IP 또는 VPC 내에서만 접근 가능하도록 제한할 수 있다.
  • 예를 들어, 특정 VPC에서만 접근하도록 설정할 경우 보안 그룹에서 해당 VPC의 CIDR 블록을 허용하면 된다.
    aws ec2 authorize-security-group-ingress --group-id sg-xxxxxxxx \
      --protocol tcp --port 3306 --cidr 192.168.1.0/24
    

3) 퍼블릭 접근 제한

  • 기본적으로 RDS 및 Aurora는 퍼블릭 액세스를 차단하는 것이 보안 관점에서 권장된다.
  • AWS 콘솔 또는 CLI를 이용하여 퍼블릭 접근을 차단할 수 있다.
    aws rds modify-db-instance --db-instance-identifier mydb \
      --no-publicly-accessible
    

3. 로깅 및 모니터링

1) 감사 로그(Audit Logging) 활성화

  • RDS 및 Aurora는 쿼리 기록 및 데이터베이스 접근 내역을 로깅할 수 있도록 지원한다.
  • 로그는 AWS CloudWatch Logs에 저장되며, 이를 활용하여 보안 분석 및 이상 탐지를 수행할 수 있다.
  • 활성화 가능한 주요 로그 유형
    • Slow Query Log: 실행 시간이 긴 쿼리 기록
    • Error Log: 데이터베이스 오류 및 경고 기록
    • General Log: 모든 쿼리 및 접속 기록
  • 예제: RDS에서 감사 로그 활성화
    aws rds modify-db-instance --db-instance-identifier mydb \
      --cloudwatch-logs-export-configuration '{"EnableLogTypes":["audit","error","general","slowquery"]}'
    

2) AWS Config 및 GuardDuty 활용

  • AWS Config를 사용하면 RDS 설정 변경 사항을 추적하고 보안 정책 준수 여부를 확인할 수 있다.
  • AWS GuardDuty는 의심스러운 RDS 접근 시도를 자동으로 감지하여 보안 위협을 탐지할 수 있다.

4. SSH 사용 제한

  • RDS 및 Aurora는 기본적으로 SSH로 직접 접속할 수 없다.
  • 대신 전용 관리 콘솔, API, 또는 RDS Proxy를 통해 데이터베이스를 관리해야 한다.
  • 다만, RDS Custom 인스턴스는 SSH 접근이 가능하며, 이를 통해 OS 레벨에서의 관리가 가능하다.

🔹 정리 및 결론

AWS RDS 및 Aurora는 강력한 보안 기능을 제공하며, 다음과 같은 방법을 통해 데이터 보호를 강화할 수 있다.

✅ 저장 데이터 암호화: KMS를 사용하여 마스터 및 복제본 암호화

✅ 전송 중 데이터 암호화: TLS 인증서 활용

✅ IAM 역할을 통한 접근 제어

✅ 보안 그룹을 활용한 네트워크 제한

✅ CloudWatch Logs를 통한 감사 로그 분석

✅ SSH 접속 차단(RDS Custom 제외)

보안을 강화하려면 암호화, 네트워크 보안, 접근 제어, 로깅 및 모니터링을 종합적으로 설정하는 것이 중요하다. 이를 통해 보다 안전한 RDS 및 Aurora 환경을 구축할 수 있다. 🚀

profile
인생 별거 없어

0개의 댓글