저장소 암호화가 설정되지 않은 RDS 인스턴스

Crossplane로 생성하는 RDS 저장소를 암호화하고 기존 데이터는 지원되는 절차로 이전하세요.

설명

Crossplane의 RDSInstance로 만드는 새 데이터베이스에는 저장소 암호화를 명시하는 것이 좋습니다. 암호화하지 않은 데이터베이스는 저장소와 관련 로그, 백업, 스냅샷에 대한 암호화 보호가 없습니다.

템플릿이나 Composition에 같은 설정을 포함하면 여러 환경에서 요구사항을 일관되게 적용할 수 있습니다. 암호화는 정상적인 데이터베이스 권한을 가진 사용자의 조회를 제한하지 않으므로 접근 통제도 필요합니다.

잠재적 영향

저장 데이터나 백업을 무단으로 획득하면 민감한 업무 데이터가 노출될 위험이 커집니다. 조직의 저장 데이터 암호화 요구사항을 충족하지 못할 수도 있습니다.

해결 방법

  • 새 인스턴스에 spec.forProvider.storageEncrypted: true를 명시하고 필요한 KMS 키와 권한을 준비하세요.
  • 기존 비암호화 인스턴스는 플래그 변경만으로 암호화되지 않습니다. 암호화된 스냅샷 사본을 만들고 새 인스턴스로 복원하는 등 지원되는 이전 절차를 사용하세요.
  • 백업과 원본을 보존하고 데이터 일관성, 연결 전환과 실제 암호화를 확인하세요. 인증, 공개 접근과 TLS도 별도로 검토하세요.

예시

신규 생성 설정의 발췌입니다. 전체 구성에서 자격 증명, 네트워크와 ProviderConfig를 준비해야 합니다. 서로 다른 리소스 이름을 사용하는 비교 예시이며, 기존 데이터베이스의 데이터 이전을 수행하지 않습니다.

변경 전

yaml
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
  name: rds3
spec:
  forProvider:
    allocatedStorage: 50
    dbInstanceClass: db.t3.medium
    engine: mysql
    region: us-west-2
    publiclyAccessible: false
    storageEncrypted: false
    storageType: gp2

새 MySQL 인스턴스에 저장소 암호화를 요청하지 않습니다.

변경 후

yaml
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
metadata:
  name: rds1
spec:
  forProvider:
    allocatedStorage: 50
    dbInstanceClass: db.t3.medium
    engine: mysql
    region: us-west-2
    publiclyAccessible: false
    storageEncrypted: true
    storageType: gp2

storageEncrypted: true로 저장 암호화를 요청합니다. 생성 후 실제 상태와 데이터 접근을 확인하세요.

참조