Azure SQL - Создать пользователя с привязкой к одной базе данных - PullRequest
0 голосов
/ 06 августа 2020

Первоначально я отправил этот вопрос суперпользователю . Однако это не похоже на правильное место.

У меня есть Azure SQL Сервер, который включает одну настраиваемую базу данных (назовем ее my_db). До этого момента я обращался к этой базе данных с учетными данными администратора сервера. Однако я хочу сделать его более безопасным. Пытаясь сделать это, я хотел создать логин / пользователя с ограничением my_db. Я попытался сделать следующее:

В базе данных master через учетные данные администратора сервера

  • Создал логин, используя CREATE LOGIN db_login WITH password 'somePassword';

В другой моей базе данных (my_db) с использованием учетных данных администратора сервера

  • Создан пользователь с использованием CREATE USER db_login_user FROM LOGIN db_login;
  • Разрешить чтение, написать и разрешения владельца с помощью следующих утверждений:
    • EXEC sp_addrolemember 'db_datareader', 'db_login_user'
    • EXEC sp_addrolemember 'db_datawriter', 'db_login_user'
    • EXEC sp_addrolmember 'db_owner', 'db_login_user'

Сейчас я пытаюсь войти через Azure Data Studio. Однако я получаю следующие результаты:

При использовании db_login_user

Ошибка входа для пользователя db_login_user.

При использовании db_login

Принципал сервера «db_login» не может получить доступ к базе данных «my_db» в текущем контексте безопасности. Невозможно открыть базу данных "my_db", запрошенную логином. Не удалось войти в систему. Ошибка входа для пользователя db_login.

Я могу успешно получить доступ к базе данных, используя кредиты администратора сервера. Однако я еще раз пытаюсь сделать это более безопасным. В настоящее время я не понимаю, почему я не могу подключиться к базе данных с использованием нового пользователя / имени входа. Кроме того, я не понимаю, следует ли мне пытаться войти в систему с помощью db_login или db_login_user.

Как мне создать пользователя с учетными данными, ограниченными одной базой данных на сервере?

Спасибо!

Ответы [ 2 ]

1 голос
/ 17 августа 2020

Вы должны создать пользователя автономной базы данных.

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

Концепции задокументированы здесь

В вашем случае вы можете запустить следующие операторы в базе данных my_db

CREATE USER db_login_user WITH PASSWORD = 'enterStrongPassword@1234';
GO

ALTER ROLE db_datareader ADD MEMBER db_login_user;
ALTER ROLE db_datawriter ADD MEMBER db_login_user;
ALTER ROLE db_owner ADD MEMBER db_login_user;
0 голосов
/ 06 августа 2020

Вам необходимо выполнить запрос ниже на обеих базах данных ( master, а также my_db ), а затем попробуйте ввести логин 'db_login' и пароль вы предоставляется при создании логина.

CREATE USER db_login_user FROM LOGIN db_login

...