У нас есть Azure SQL Server, который также будет принимать подключения от четырех виртуальных машин в Azure. Мой вопрос: какой из них лучше?
Используете зашифрованные соединения, защищенные сертификатами, и прослушивание Azure SQL через общедоступный порт?
Используете незашифрованные соединения (для повышения производительности) в частной виртуальной сети?
А может и то, и другое? Я читал в документации, что использование зашифрованных соединений повлияет на производительность, нужно ли это учитывать?
Если вы используете SQL all на виртуальных машинах Azure, т.е. а не База данных SQL Azure как услуга, тогда я бы предложил использовать все подключения в частной сети - по крайней мере, на уровне базы данных.
В качестве еще одной меры безопасности, да, обратите внимание на использование SQL Always Encrypted, но это означает, что каждый клиент, который подключается к SQL Server, действительно нуждается в установке цепочки сертификатов SSL в их локальное хранилище сертификатов. Изначально это означает больше накладных расходов администратора. Если вы выберете RSA длиной 2048 бит в качестве минимума для шифрования ключа, то это не должно стать узким местом на стороне клиента при дешифровании ключа. Но очевидно, что чем больше длина битов RSA, тем больше времени может потребоваться клиенту для его расшифровки.
Использование ExpressRoute, безусловно, является правильным решением, но есть немало накладных расходов на настройку, связанных с тем, чтобы задействованные интернет-провайдеры поддерживали ExpressRoute, а затем включили канал ExpressRoute. Но определенно стоит подумать, если вы хотите, чтобы все подключения к базе данных Azure SQL проходили по частному маршруту.
Если вас это не особо беспокоит, используйте SQL Always Encrypted между клиентом и базой данных SQL Azure.