Azure MySQL の TLS 強制設定の確認

Azure MySQL への接続に TLS を必須とし、クライアントでサーバー証明書を検証します。

説明

MySQL で TLS 接続を強制しないと、クエリや応答が暗号化されずに送信されるおそれがあります。旧 Azure Single Server の sslEnforcement と、現在の Flexible Server の require_secure_transport は別の設定です。

想定される影響

通信を傍受できる相手がデータベースの要求や応答を読み取ったり改ざんしたりするおそれがあります。内部ネットワークも通信経路の保護の代わりにはなりません。

対処方法

Flexible Server の require_secure_transport を ON にしてください。アプリケーションでも TLS とサーバー証明書の検証を使用し、必要な接続が引き続き機能することを確認してください。

例

変更前はサポートが終了した Single Server の過去の抜粋で、sourceServerId は当時の復元元リソースの ID です。変更後の server は別途準備した Flexible Server を指します。サーバー宣言とデータ移行は別であり、このコードは移行を行いません。

変更前

bicep
resource server 'Microsoft.DBforMySQL/servers@2017-12-01' = {
  name: 'server'
  properties: {
    version: '5.6'
    createMode: 'GeoRestore'
    sourceServerId: sourceServerId
  }
}

sslEnforcement の省略だけでは、実際のサーバーが平文接続を許可していたとは判断できません。

変更後

bicep
resource server_tls 'Microsoft.DBforMySQL/flexibleServers/configurations@2024-12-30' = {
  parent: server
  name: 'require_secure_transport'
  properties: {
    source: 'user-override'
    value: 'ON'
  }
}

Flexible Server のセキュアな通信を要求するパラメーターを明示しています。クライアントの接続設定でサーバー証明書の検証も維持してください。

参考資料