Клиент, имеющий проблемы с подключением к базе данных Azure SQL - PullRequest
1 голос
/ 22 апреля 2020

Я создал приложение C# для своего клиента и размещаю базу данных с использованием Microsoft Azure. Я обнаружил, что для того, чтобы клиент имел доступ к базе данных, мне нужно добавить его IP-адрес клиента в конфигурации брандмауэра. Есть ли способ сделать это автоматически после запуска приложения или если есть другой более эффективный метод аутентификации, который можно использовать, поскольку приложение будет загружаться с веб-сайта и использоваться кем-либо, поэтому мне нужен метод для предоставления доступа любому, кто скачивает мое приложение. Я довольно новичок в Microsoft Azure, так что прости меня, если я выгляжу глупо, мне просто нужен совет. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 23 апреля 2020
  1. Программно добавляем каждый IP-адрес:

    • с использованием t sql:

Если вы хотите добавить ip-адрес в брандмауэр базы данных программным способом, вы можете запустить следующую хранимую процедуру в вашей базе данных Azure.

sp_set_database_firewall_Rule на MSDN

-- Create database-level firewall setting for only IP 0.0.0.4  
  EXECUTE sp_set_database_firewall_rule N'Example DB Setting 1', '0.0.0.4', '0.0.0.4'; 
  • Использование командной строки:

Вы можете использовать SQLCMD.exe для выполнения хранимой процедуры sp_set_daabase_firewall_rule

String clientIPAddress = Request.UserHostAddress;
using(SqlConnection sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["SqlAzureMaster"].ConnectionString)) {
 sqlConnection.Open();
 using(SqlCommand sqlCommand = new SqlCommand("sp_set_firewall_rule", sqlConnection)) {
  sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;
  sqlCommand.Parameters.Add("@name", SqlDbType.NVarChar).Value = clientIPAddress;
  sqlCommand.Parameters.Add("@start_ip_address", SqlDbType.VarChar).Value = clientIPAddress;
  sqlCommand.Parameters.Add("@end_ip_address", SqlDbType.VarChar).Value = clientIPAddress;
  sqlCommand.ExecuteNonQuery();
 }
}

2. Обновление кеша после изменения правил брандмауэра

После того, как вы программно добавите правила брандмауэра, вы должны обновить кеш аутентификации, в котором хранятся логины, правила брандмауэра для базы данных.

Вам нужно вызвать команду ниже. DB CC FLUSTHAUTHCACHE на MSDN

DBCC FLUSHAUTHCACHE 

Примечание: Добавление диапазона IP-адресов для офисной сети:

Если ваш клиент будет работая из офисной сети, вы можете получить диапазон IP-адресов для этой офисной сети и добавить их. Это позволит вам не добавлять IP-адрес каждый раз в базу данных. База данных поддерживает 128 IP-конфигураций одновременно. Убедитесь, что вы не выходите за пределы 128.

2 голосов
/ 23 апреля 2020

Невозможно автоматически добавить IP-адрес клиента в Azure SQL брандмауэр базы данных .

Но вы можете установить диапазон брандмауэра, чтобы разрешить всем пользователям базы данных подключаться Azure SQL база данных с любого IP-адреса клиента: установите диапазон брандмауэра:

0.0.0.0---255.255.255.255

enter image description here

Но, как упоминал @Caurav Mantri, вам необходимо подумайте о проблеме безопасности базы данных для защиты базы данных SQL.

Пожалуйста, укажите:

  1. Прозрачное шифрование данных для SQL База данных и Azure Synapse
  2. Всегда зашифровано: защита конфиденциальных данных и хранение ключей шифрования в Azure хранилище ключей

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...