Azure PostgreSQL の TLS 強制設定の確認

Azure PostgreSQL への接続に TLS を必須とし、サーバー証明書を検証します。

説明

PostgreSQL が暗号化されていない接続を許可すると、通信中のデータベース要求や応答が漏えいするおそれがあります。現在の Flexible Server は、旧 Single Server の sslEnforcement ではなく require_secure_transport を使用します。

想定される影響

接続を傍受できる相手がクエリや結果を読み取ったり改ざんしたりするおそれがあります。データベース認証とは別に、通信の暗号化が必要です。

対処方法

Flexible Server の require_secure_transport を on にしてください。クライアントでも TLS とサーバー証明書の検証を使用し、既存アプリケーションの接続を確認してください。

例

変更前はサポートが終了した Single Server の過去の設定抜粋です。administratorPassword は別のセキュアなパラメーターで渡してください。変更後の MyDBServer は準備済みの Flexible Server を指し、サーバー宣言とデータ移行は別途必要です。

変更前

bicep
resource MyDBServer 'Microsoft.DBforPostgreSQL/servers@2017-12-01' = {
  name: 'mydbserver'
  properties: {
    createMode: 'Default'
    sslEnforcement: 'Disabled'
    version: '11'
    administratorLogin: 'pgadmin'
    administratorLoginPassword: administratorPassword
  }
}

sslEnforcement: 'Disabled' は、旧サービスで TLS を必須にしない設定です。

変更後

bicep
resource MyDBServer_tls 'Microsoft.DBforPostgreSQL/flexibleServers/configurations@2024-08-01' = {
  parent: MyDBServer
  name: 'require_secure_transport'
  properties: {
    source: 'user-override'
    value: 'on'
  }
}

既存の Flexible Server に、セキュアな通信を要求するパラメーターを適用します。データ移行やクライアント設定は行いません。

参考資料