2

У меня есть два пользователя ([email protected]) в нашем Azure AD, которым предоставлены права владельца на сервер Azure через портал Azure.Создание Azure SQL Database логин/пользователь с использованием Azure AD

Во-первых, можно ли создать логин, который связывает/тянет с Azure AD для этих учетных данных? Я искал и не нашел конкретного ответа на это, хотя мое подозрение - нет.

Во-вторых, я создал логины/пользователей для одной и той же базы данных, однако, хотя доступ к серверу в порядке, доступ к базе данных запрещен. Я предоставил подключение к логинам, а также выполнил sp_addrolemember как datareader для каждого для базы данных. При двойной проверке моей работы я ссылался на несколько примеров, которые показывают тот же синтаксис, который я использую для логинов/пользователей Azure, и тем не менее доступ по-прежнему запрещен.

Любая помощь будет оценена по достоинству.

Steve.

Код:

CREATE LOGIN [login_name] 
    WITH PASSWORD = N'password' 

CREATE USER [user_name] 
    FROM LOGIN [login_name] 
    WITH DEFAULT_SCHEMA = dbo 

GO 

GRANT CONNECT TO [user_name] 

EXEC sp_addrolemember 'db_datareader', 'user_name' 

ответ

3

Во-первых, можно создать логин, что ссылки/вытягивает из Azure AD для этих учетных данных для входа? Я искал и не нашел конкретного ответа на этот вопрос, хотя моего подозрения нет.

№ В базе данных Azure SQL вы можете использовать пользователей и логины, созданные в Azure SQL Database - SQL Login.

Во-вторых, я создал логины/пользователей для одной и той же базе данных, однако, в то время как доступ к серверу в порядке, доступ к базе данных запрещен. Я предоставил подключение к логинам, а также выполнил sp_addrolemember как datareader для каждой базы данных. В двойном проверке моей работы я ссылался на несколько примеров, которые показывают тот же самый синтаксис , который я использую для логинов/пользователей Azure, и все же доступ по-прежнему отрицается.

Logins должен быть создан в Мастере дб, в то время как users, grants и sp_addrolemember должны быть выполнены в контексте целевой БД. Если вы выполнили sp_addrolemember в базе данных Master, ваш пользователь не будет иметь доступ к целевому db.

Кроме того, что-то важное, когда вы пытаетесь подключиться к БД с новыми входами (и обратите внимание, что для входа в db вы используете login, а не user), вы должны явно выбрать базу данных, у нового пользователя есть доступ!

Моя дикая догадка, что вы выполнили create user, grant и sp_addrolemember в контексте вашего мастер базы данных. Таким образом, теперь у этих пользователей есть только доступ к основной базе данных.Вы не можете предоставлять явные гранты другой базе данных, когда находитесь в контексте мастера.

-1

Вы не можете использовать пользователей AD для входа на SQL-сервер. Логины должны быть созданы в основной базе данных, и вам необходимо использовать этот логин для создания пользовательских и разрешений путем подключения пользовательской базы данных. Однако SQL DB V12 поддерживает встроенный пользователь, где вам больше не нужно создавать логины в главном. Вход может быть выполнен в контексте пользовательской базы данных, и это будет очень полезно, если вы настроите Geo Replication для (восстановления с использованием функции восстановления по времени во время) для вашей базы данных в Azure. Основываясь на моем опыте, я бы рекомендовал содержать пользователей в базе данных Azure.

Смежные вопросы