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

参考資料