암호화 연결이 강제되지 않은 GCP Cloud SQL 인스턴스

Cloud SQL의 직접 연결에 SSL/TLS 암호화를 요구

설명

Cloud SQL이 암호화되지 않은 직접 연결도 허용하면 클라이언트가 평문으로 자격 증명이나 데이터를 보낼 수 있습니다. ssl_mode로 암호화 연결을 요구하세요. Cloud SQL Auth Proxy와 Connectors는 자체 연결을 자동으로 암호화합니다.

잠재적 영향

암호화되지 않은 연결에서는 네트워크 구간의 도청이나 변조로 데이터가 노출되거나 변경될 수 있습니다.

해결 방법

SQL Server에는 ENCRYPTED_ONLY를 사용하세요. MySQL과 PostgreSQL은 ENCRYPTED_ONLY 또는 유효한 클라이언트 인증서를 요구하는 TRUSTED_CLIENT_CERTIFICATE_REQUIRED를 사용할 수 있습니다. 클라이언트 설정을 먼저 준비하고 변경 후 기존 평문 연결도 종료하세요.

예시

다음 PostgreSQL 예시는 암호화와 유효한 클라이언트 인증서를 함께 요구합니다. 클라이언트 인증서와 생략된 네트워크 설정은 별도로 준비해야 합니다.

변경 전

hcl
resource "google_sql_database_instance" "sql_instance" {
  name   = "private-instance"
  region = "us-central1"
  database_version = "POSTGRES_15"

  settings {
    tier = "db-f1-micro"
    ip_configuration {
      ipv4_enabled    = false
      private_network = google_compute_network.private_network.id
      ssl_mode        = "ALLOW_UNENCRYPTED_AND_ENCRYPTED"
    }
  }
}

변경 후

hcl
resource "google_sql_database_instance" "sql_instance" {
  name   = "private-instance"
  region = "us-central1"
  database_version = "POSTGRES_15"

  settings {
    tier = "db-f1-micro"
    ip_configuration {
      ipv4_enabled    = false
      private_network = google_compute_network.private_network.id
      ssl_mode        = "TRUSTED_CLIENT_CERTIFICATE_REQUIRED"
    }
  }
}

참조