Добавление пользователя в несколько баз данных Azure

#database #azure #user-controls

Вопрос:

Я ищу, чтобы добавить пользователя в несколько баз данных Azure. У нас несколько подписок, и каждая подписка содержит несколько баз данных Azure. У нас есть требование добавить одного и того же пользователя SQL во все базы данных (среда разработки). Есть ли простой способ сделать это с помощью PS?

Ответ №1:

Локальная безопасность на уровне сервера / базы данных SQL Server и база данных SQL Azure довольно похожи, однако есть некоторые существенные различия.

Первое различие заключается в идее автономного пользователя, то есть пользователя, который не связан с именем входа и проверка подлинности которого выполняется в Azure Active Directory или в самой базе данных. Традиционные учетные записи SQL Server с пользователем в базе данных, сопоставленной с ней, продолжают существовать, но это противоречит понятию необходимого входа в систему, предоставляющего доступ к серверу, и пользователя, предоставляющего доступ к базе данных. Автономные пользователи делают базу данных более переносимой.

Обычные роли уровня базы данных, такие как db_datareader, db_datawriter, db_ddladmin и т. Д., одинаковы, однако традиционные роли уровня сервера, такие как системный администратор, администратор сервера и т. Д., Не существуют в базе данных SQL Azure. Однако существуют две роли администратора сервера: db_manager (аналогично db_creator), который может создавать и удалять базы данных, и loginmanager (аналогично securityadmin), который может создавать новые логины.

— создайте логин для аутентификации SQL с помощью мастера СОЗДАЙТЕ тест ДЛЯ ВХОДА С ПАРОЛЕМ = ‘Суперсекретно!’

Подключитесь к серверу базы данных SQL Azure в качестве администратора и выберите базу данных, в которую вы хотите добавить пользователя(пользователей). Создайте пользователя с проверкой подлинности SQL под названием «тест» с паролем «Суперсекретно!» и назначьте ему обязанности db_datareader и db_datawriter.

 -- select your db in the dropdown and create a user mapped to a login 
CREATE USER [test] 
FOR LOGIN [test] 
WITH DEFAULT_SCHEMA = dbo; 
  
-- add user to role(s) in db 
ALTER ROLE db_datareader ADD MEMBER [test]; 
ALTER ROLE db_datawriter ADD MEMBER [test]; 
 

Альтернативой здесь является команда PowerShell для запуска:

 $instance = 'localhost'
$dbs = dir SQLSERVER:SQL$instanceDEFAULTDatabases
$sql = 'CREATE USER [foo] FROM LOGIN [foo]; ALTER ROLE db_datareader ADD MEMBER [foo];'
$dbs | ForEach-Object {Invoke-Sqlcmd -ServerInstance $instance -Database $_.Name -Query $sql}