Azure PostgreSQL 연결 암호화 설정 점검

데이터베이스 연결에 TLS를 요구하고 클라이언트의 서버 인증서 검증을 유지하세요.

설명

데이터베이스가 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로 연결하며 올바른 서버 인증서를 검증하는지 확인하세요.

참조