RDS & Aurora Security

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

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개의 댓글