説明
データベースが 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 を使い、正しいサーバー証明書を検証することを確認してください。