Проверка подлинности SQL в Azure Synapse Analytics
Azure Synapse Analytics имеет два форм-фактора SQL, которые позволяют управлять потреблением ресурсов. В этой статье объясняется, как два форм-фактора контролируют проверку подлинности пользователя.
Для проверки подлинности в Synapse SQL можно использовать два варианта:
- Проверка подлинности Microsoft Entra
- Проверка подлинности SQL
Проверка подлинности SQL позволяет устаревшим приложениям подключаться к Azure Synapse SQL знакомым образом с именем пользователя и паролем. Однако проверка подлинности Microsoft Entra позволяет централизованно управлять доступом к ресурсам Azure Synapse, таким как пулы SQL. Azure Synapse Analytics поддерживает отключение локальной проверки подлинности, например проверку подлинности SQL, как во время, так и после создания рабочей области. После отключения полномочные пользователи могут в любое время включить локальную проверку подлинности. Дополнительные сведения о проверке подлинности, доступной только для Microsoft Entra, см. в разделе "Отключение локальной проверки подлинности в Azure Synapse Analytics".
Учетные записи администрирования
Существует две административные учетные записи (имя пользователя администратора SQL и администратор Microsoft Entra), которые действуют в качестве администраторов. Чтобы определить эти учетные записи администратора для пулов SQL, откройте портал Azure и перейдите на вкладку свойств рабочей области Synapse.
Имя администратора SQL
При создании Azure Synapse Analytics необходимо присвоить имя для входа администратора сервера. SQL Server создает эту учетную запись в качестве имени для входа в базе данных
master
. Эта учетная запись используется для подключения с использованием проверки подлинности SQL Server (с помощью имени пользователя и пароля). Может существовать только одна такая учетная запись.Администратор Microsoft Entra
Одна учетная запись Microsoft Entra( отдельная или учетная запись группы безопасности) также может быть настроена как администратор. Это необязательно для настройки администратора Microsoft Entra, но администратор Microsoft Entra должен быть настроен, если вы хотите использовать учетные записи Microsoft Entra для подключения к Synapse SQL.
- Учетная запись администратора Microsoft Entra управляет доступом к выделенным пулам SQL, а роли Synapse RBAC можно использовать для управления доступом к бессерверным пулам, например с ролью администратора Synapse и администратора Synapse SQL.
Учетные записи администратора SQL и учетные записи администратора Microsoft Entra имеют следующие характеристики:
- Это единственные учетные записи, которые могут автоматически подключаться к любой базе данных SQL на сервере. (Для подключения к пользовательской базе данных другие учетные записи должны иметь права владельца базы данных или в пользовательской базе данных должна находиться пользовательская учетная запись.)
- Эти учетные записи входят в пользовательские базы данных в качестве пользователя
dbo
. Они обладают всеми разрешениями в пользовательских базах данных. (Владелец пользовательской базы данных также входит в базу данных в качестве пользователяdbo
.) - Они не входят в базу данных
master
в качестве пользователяdbo
. Для них назначены ограниченные разрешения в базе данныхmaster
. - Не являются членами предопределенной роли
sysadmin
стандартного сервера SQL Server, недоступной в Базе данных SQL. - Могут создавать, изменять и удалять базы данных, имена для входа, пользователей в базе данных
master
и правила брандмауэра для IP-адресов на уровне сервера. - Могут добавлять и удалять членов в ролях
dbmanager
иloginmanager
. - Могут просматривать системную таблицу
sys.sql_logins
.
Примечание.
Если пользователь настроен как администратор Microsoft Entra и администратор Synapse, а затем удален из роли администратора Microsoft Entra, пользователь потеряет доступ к выделенным пулам SQL в Synapse. Их необходимо удалить, а затем добавить в роль администратора Synapse, чтобы восстановить доступ к выделенным пулам SQL.
Для управления пользователями с доступом к бессерверному пулу SQL можно использовать следующие инструкции.
Чтобы создать имя входа для бессерверного пула SQL, используйте следующий синтаксис:
CREATE LOGIN Mary WITH PASSWORD = '<strong_password>';
-- or
CREATE LOGIN [Mary@domainname.net] FROM EXTERNAL PROVIDER;
Создав имя входа, можно создать пользователей в отдельных базах данных в конечной точке бессерверного пула SQL и предоставить этим пользователям необходимые разрешения. Чтобы создать пользователя, можно использовать следующий синтаксис.
CREATE USER Mary FROM LOGIN Mary;
-- or
CREATE USER Mary FROM LOGIN Mary@domainname.net;
-- or
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;
После создания имени входа и пользователя можно использовать стандартный синтаксис SQL Server для предоставления прав.
Пользователи без прав администратора
Как правило, для учетных записей без прав администратора не требуется доступ к базе данных master
. Создайте пользователей автономной базы данных на уровне базы данных с помощью инструкции CREATE USER (Transact-SQL).
Пользователь может быть пользователем службы проверки подлинности Microsoft Entra, содержащей базу данных (если вы настроили среду для проверки подлинности Microsoft Entra), или пользователем проверки подлинности SQL Server, содержащимся в базе данных, или пользователем проверки подлинности SQL Server на основе имени входа проверки подлинности SQL Server (созданного на предыдущем шаге).
Чтобы создать пользователей, подключитесь к базе данных и выполните инструкции, аналогичные приведенным ниже.
CREATE USER Mary FROM LOGIN Mary;
CREATE USER [mike@contoso.com] FROM EXTERNAL PROVIDER;
Изначально создавать пользователей может только один администратор или владелец базы данных. Чтобы разрешить другим пользователям создавать пользователей, предоставьте выбранному пользователю разрешение ALTER ANY USER
с помощью следующей инструкции.
GRANT ALTER ANY USER TO Mary;
Чтобы предоставить другим пользователям полный доступ к базе данных, сделайте их участником фиксированной роли базы данных db_owner.
В Базе данных SQL Azure или бессерверной среде Synapse используйте инструкцию ALTER ROLE
.
ALTER ROLE db_owner ADD MEMBER Mary;
В выделенном пуле SQL используйте EXEC sp_addrolemember.
EXEC sp_addrolemember 'db_owner', 'Mary';
Примечание.
Предоставить пользователям доступ к нескольким базам данных — это одна из распространенных причин, по которой нужно создать пользователя базы данных на основе имени входа на сервер. Так как пользователи автономной базы данных являются отдельными сущностями, в каждой базе данных поддерживается отдельный пользователь с собственным паролем. Это может вызвать дополнительные сложности, поскольку пользователь должен запомнить отдельный пароль для каждой базы данных, а смена паролей при большом количестве баз данных станет нестерпимо тягостной.
Группы и роли
При эффективном управлении доступом используются разрешения, назначенные группам и ролям, а не отдельным пользователям.
При использовании проверки подлинности Microsoft Entra поместите пользователей Microsoft Entra в группу Microsoft Entra. Создайте пользователя автономной базы данных для группы. Поместите одного или нескольких пользователей базы данных в роль базы данных, а затем назначьте разрешения для этой роли.
При использовании проверки подлинности SQL Server создайте пользователей автономной базы данных в базе данных. Поместите одного или нескольких пользователей базы данных в роль базы данных, а затем назначьте разрешения для этой роли.
Роли базы данных могут быть встроенными ролями, например db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter и db_denydatareader. Роль db_owner обычно используется для предоставления полных прав ограниченному числу пользователей. Другие фиксированные роли можно использовать для быстрого получения простых баз данных при разработке, но их не рекомендуется использовать для большинства рабочих баз данных.
Например, фиксированная роль базы данных db_datareader предоставляет доступ (как правило, строго обязательный) на чтение к каждой таблице в базе данных.
Рекомендуется использовать инструкцию CREATE ROLE, чтобы создавать пользовательские роли базы данных, а затем внимательно предоставлять каждой роли наименьший набор разрешений, необходимый для работы. Если пользователь является участником нескольких ролей, то ему предоставлены разрешения всех этих ролей.
Разрешения
Существует более 100 разрешений, которые можно по отдельности предоставлять или отменять в базе данных SQL. Многие эти разрешения являются частью других разрешений. Например, разрешение UPDATE
на схеме включает в себя разрешение UPDATE
для каждой таблицы в этой схеме. Как и в большинстве систем разрешений, отмена разрешения переопределяет предоставление.
Так как некоторые разрешения включены в другие разрешения и их достаточно много, необходимо внимательно изучить их, чтобы спроектировать соответствующую систему разрешений, которая будет надежно защищать базу данных.
Изучите список разрешений на этой странице и ознакомьтесь с графическим представлением разрешений для ядра СУБД.
Рекомендации и ограничения
При управлении учетными записями и пользователями в базе данных SQL необходимо учитывать следующее.
- При выполнении инструкций
CREATE/ALTER/DROP DATABASE
необходимо подключиться к базе данныхmaster
. - Пользователя базы данных, соответствующего имени для входа администратора сервера, нельзя изменить или удалить.
- Администратор сервера будет отключен, если включена проверка подлинности только для Microsoft Entra.
- Языком по умолчанию для имени для входа администратора сервера является американский вариант английского языка.
- Только администраторы (имя входа администратора сервера или администратор Microsoft Entra) и члены роли базы данных dbmanager в
master
базе данных имеют разрешение на выполнениеCREATE DATABASE
инструкций иDROP DATABASE
инструкций. - При выполнении инструкций
CREATE/ALTER/DROP LOGIN
необходимо подключиться к базе данныхmaster
. В то же время использовать имена входа не рекомендуется. Вместо них используйте пользователей автономной базы данных. Дополнительные сведения см. в статье Пользователи автономной базы данных — создание переносимой базы данных. - Для подключения к пользовательской базе данных необходимо указать имя базы данных в строке подключения.
- Только имя для входа на уровне сервера и члены роли базы данных loginmanager в базе данных
master
имеют разрешение на выполнение операторовCREATE LOGIN
,ALTER LOGIN
иDROP LOGIN
. - При выполнении инструкций
CREATE/ALTER/DROP LOGIN
иCREATE/ALTER/DROP DATABASE
в приложении ADO.NET не разрешается использовать параметризованные команды. Дополнительные сведения можно найти в статье Команды и параметры. - Если применяется инструкция
CREATE USER
с параметромFOR/FROM LOGIN
, то она должна быть единственной инструкцией в пакете Transact-SQL. - Если применяется инструкция
ALTER USER
с параметромWITH LOGIN
, то она должна быть единственной инструкцией в пакете Transact-SQL. CREATE/ALTER/DROP LOGIN
иCREATE/ALTER/DROP USER
операторы не поддерживаются, если для рабочей области Azure Synapse включена проверка подлинности только для Microsoft Entra.- Для выполнения инструкций
CREATE/ALTER/DROP
пользователю требуется разрешениеALTER ANY USER
для базы данных. - Если владелец роли базы данных пытается добавить или удалить другого пользователя базы данных в роль или из роли базы данных, может произойти следующая ошибка: В этой базе данных не существует пользователь или роль "Имя". Эта ошибка возникает, потому что данный пользователь не является видимым для владельца. Чтобы устранить эту проблему, предоставьте владельцу роли разрешение
VIEW DEFINITION
по отношению к данному пользователю.
Связанный контент
Дополнительные сведения см. в статье Пользователи автономной базы данных — создание переносимой базы данных.