azuresql Строка подключения - пользователь-аутентификатор, а не администратор - PullRequest
0 голосов
/ 04 марта 2020

Строка подключения пластины бойлера для sql azuredb использует имя пользователя / pwd администратора сервера. Используя автономную базу данных, пользователь может войти в указанный c db без необходимости входа на сервер.

Могу ли я установить строку подключения базы данных к пользователю БД вместо того, чтобы использовать пользователя администратора сервера? Я использую connstring для функции azure для извлечения данных из базы данных. Кроме того, у пользователя нет активной учетной записи в каталоге.

Большое спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 09 марта 2020

Если вы хотите ограничить доступ к вашей базе данных SQL, вы также можете предоставить управляемую идентификацию своему приложению-функции и предоставить доступ к ней в базе данных Sql. Таким образом, только ваша функция сможет подключиться, и нет риска утечки строки подключения.

Вот хорошие примеры того, как это сделать:

https://www.azurecorner.com/using-managed-service-identity-in-azure-functions-to-access-azure-sql-database/

https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-connect-msi

1 голос
/ 05 марта 2020

Если вы хотите использовать пользователя без прав администратора для подключения Azure SQL в функции Azure, вы можете использовать следующую строку подключения

Server=tcp:<sql server name>.database.windows.net,1433;
Initial Catalog=<databse name>;Persist Security Info=False;
User ID=<the non-adimn user name>;
Password=<passsword>;
MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

Например

  1. используйте SSMS для создания пользователя без прав администратора для нужной вам базы данных
 CREATE USER jim WITH PASSWORD = '<strong_password>'
 ALTER ROLE db_owner ADD MEMBER jim;
код. Я использую System.Data.SqlClient 4.6.1 для подключения Azure sql в Azure функции
public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            var constr = "Server=tcp:<sql server name>.database.windows.net,1433;Initial Catalog=<databse name>;Persist Security Info=False;User ID=<the non-adimn user name>;Password=<passsword>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
            using (SqlConnection connection = new SqlConnection(constr))
            {
                var sql = "SELECT * FROM StarWars";
                using (SqlCommand command = new SqlCommand(sql, connection))
                {
                    connection.Open();
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            log.LogInformation(reader.GetString(2));
                        }
                    }
                }


            }

...

}

enter image description here

enter image description here


update

Если вы хотите использовать пользователя без прав администратора для подключения Azure SQL, измените значение User ID в строке подключения, затем сохранить в настройках приложения

  1. Настроить строку подключения
Server=tcp:<sql server name>.database.windows.net,1433;
Initial Catalog=<databse name>;Persist Security Info=False;
User ID=<the non-adimn user name>;
Password=<passsword>;
MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

Сохранить в настройках приложения enter image description here

Получить с кодом enter image description here

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