설명
TDE(Transparent Data Encryption)는 데이터베이스 계층에서 저장 데이터 파일을 암호화합니다. 지원되는 RDS 인스턴스에서 TDE를 사용하지 않으면 이 보호 계층이 적용되지 않습니다. 별도 스토리지 암호화가 있을 수 있으므로 TDE 상태만으로 모든 저장 데이터가 평문이라고 단정할 수는 없습니다.
TDE는 정상적인 데이터베이스 연결에서 데이터를 투명하게 복호화하므로 계정 권한과 통신 암호화를 대신하지 않습니다.
잠재적 영향
- 데이터 파일을 확보한 공격자가 내용을 읽는 것을 막는 보호가 부족해질 수 있습니다.
- 조직에서 요구하는 데이터베이스 암호화 기준을 충족하지 못할 수 있습니다.
해결 방법
- 엔진·버전·에디션의 지원 조건과 KMS 사용 권한을 확인하고
tde_status = "Enabled"로 설정하세요. 공급자 문서상 활성화한 TDE는 다시 끌 수 없으므로 먼저 변경 영향을 검토하세요. - MySQL에서는 TDE 활성화만으로 기존 테이블이 자동 암호화되지 않습니다. 공식 절차로 필요한 테이블을 암호화하고 실제 상태를 확인하세요.
- 백업·복구와 키 가용성을 점검하고 계정 권한 및 TLS도 별도로 관리하세요.
예시
MySQL 5.6 설정을 비교하는 부분 예시입니다. TDE를 지원하는 마이너 버전과 에디션을 확인하고, 인스턴스 유형과 저장 용량 변수에 해당 환경에서 지원되는 값을 지정하세요. 네트워크 등 나머지 생성 설정은 생략했습니다.
변경 전
hcl
resource "alicloud_db_instance" "db_instance" {
engine = "MySQL"
engine_version = "5.6"
instance_type = var.tde_instance_type
instance_storage = var.db_storage_gb
tde_status = "Disabled"
}
TDE를 비활성화합니다. 별도의 저장 데이터 보호도 함께 확인해야 합니다.
변경 후
hcl
resource "alicloud_db_instance" "db_instance" {
engine = "MySQL"
engine_version = "5.6"
instance_type = var.tde_instance_type
instance_storage = var.db_storage_gb
tde_status = "Enabled"
}
TDE 기능을 활성화합니다. 기존 MySQL 테이블의 암호화 작업과 검증은 별도로 수행해야 합니다.