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