#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}