#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 так, как сделал бы каждый модератор.