Подключение к SQL Server без доступа с помощью sp_setapprole

#c# #sql-server #tsql

Вопрос:

Я хотел создать роль приложения в SQL server, которая будет использоваться пользователями, не имеющими доступа к базе данных,

Приложение для использования этой роли построено на C#, и код, который я хотел использовать в качестве подключения, приведен ниже:

         connection = new SqlConnection(connectionString);
        
        if (openAsImposter)
        {
            SqlCommand sqlCommand = new SqlCommand();
            sqlCommand.Connection = connection;
            sqlCommand.CommandType = CommandType.Text;
            sqlCommand.CommandText =
              "EXEC sp_setapprole 'app role name','app role pass';";
            sqlCommand.ExecuteNonQuery();
            connection.Open();

        }
 

Эта роль имеет доступ к процедурам, которые позволяют вставлять данные только в одну таблицу и считывать несколько других.
К сожалению, я не смог подключиться с помощью этого кода, и я не уверен, что соединение без доступа пользователя действительно возможно. Кто-нибудь знает, можно ли вообще установить такое соединение, и если да, то как я могу этого добиться?

У меня есть доступ только к базе данных, а не ко всему серверу.

Создается роль приложения и добавляются хранимые процедуры (тот же метод, что и для ролей базы данных).

Комментарии:

1. Что вы пытаетесь сделать в первую очередь? Вы не можете подключиться, фактически не предоставив действительные учетные данные, иначе каждый мог бы подключиться к базе данных. Это было бы дырой в системе безопасности, даже если бы они не могли прочитать какие-либо данные. Злоумышленник может начать выполнять фиктивные команды только для того, чтобы вызвать перегрузку сервера. Учетные данные не обязательно должны быть учетными данными текущего пользователя, вошедшего в систему.

2. вы читали это перед тем, как начать docs.microsoft.com/en-us/sql/relational-databases/… ?

3. У меня есть правило в приложении, которое отображает только одну кнопку, если у кого-то нет доступа к базе данных, и на этой кнопке я хотел создать форму для запроса необходимого доступа. Но пользователю придется извлекать данные из одной таблицы и вставлять данные запроса из формы в другую. Проблема здесь в том, что это на сервере компании, и, насколько мне известно, гость не может быть включен. Сервер размещен в домене компании, поэтому я могу добавить каждого пользователя в базу данных myslef так, как сделал бы каждый модератор.