설명
데이터베이스가 TLS 없는 연결을 허용하면 계정 정보, 쿼리 결과와 애플리케이션 데이터가 평문으로 전송될 수 있습니다. 내부망에서도 전송 구간의 보호가 필요합니다. 현재 PostgreSQL Flexible Server는 require_secure_transport가 기본적으로 on이므로 설정 생략을 암호화 비활성화로 단정할 수는 없습니다.
잠재적 영향
- 암호화되지 않은 데이터베이스 통신이 네트워크에서 노출되거나 변조될 수 있습니다.
- 민감 데이터의 전송 구간 암호화 요구사항을 충족하지 못할 수 있습니다.
해결 방법
사용이 종료된 Single Server는 지원되는 PostgreSQL Flexible Server로 이전하세요. require_secure_transport를 on으로 유지하고 애플리케이션의 TLS 연결과 서버 인증서 검증을 확인하세요. 최소 TLS 버전과 네트워크 접근 제어도 함께 검토하세요.
예시
변경 전은 사용이 종료된 Single Server의 과거 예제입니다. 새 배포에 사용하거나 예제 비밀번호를 재사용하지 마세요. 변경 후는 별도로 마련한 Flexible Server의 연결 암호화 매개변수만 보여 줍니다.
변경 전
hcl
resource "azurerm_postgresql_server" "example" {
name = "example-psqlserver"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
administrator_login = "psqladminun"
administrator_login_password = "H@Sh1CoR3!"
sku_name = "GP_Gen5_4"
version = "9.6"
storage_mb = 640000
backup_retention_days = 7
geo_redundant_backup_enabled = true
auto_grow_enabled = true
public_network_access_enabled = false
ssl_enforcement_enabled = false
ssl_minimal_tls_version_enforced = "TLS1_2"
}
변경 후
hcl
resource "azurerm_postgresql_flexible_server_configuration" "example" {
name = "require_secure_transport"
server_id = azurerm_postgresql_flexible_server.example.id
value = "on"
}
변경 후에는 require_secure_transport를 on으로 지정합니다. 서버 이전과 데이터 검증은 별도로 수행하고 클라이언트가 TLS로 연결하며 올바른 서버 인증서를 검증하는지 확인하세요.