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"
    }
  }
}

参考資料