Авторизация доступа к Базе данных SQL, Управляемому экземпляру SQL и Azure Synapse Analytics

Область применения: База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics

В этой статье раскрываются следующие темы:

  • Возможности настройки Базы данных SQL Azure, Управляемого экземпляра SQL и Azure Synapse Analytics, чтобы пользователи могли выполнять административные задачи и получать доступ к данным, хранящимся в этих базах данных.
  • Настройка доступа и авторизации после первоначального создания нового сервера.
  • Добавление имен входа и учетных записей пользователей в базу данных master и предоставление этим учетным записям прав администратора.
  • Добавление в пользовательские базы данных учетных записей пользователей, либо связанных с именами входа, либо автономных.
  • Настройка учетных записей пользователей, имеющих разрешения в пользовательских базах данных, полученные с помощью ролей базы данных или явно.

Важно!

В оставшейся части этой статьи собирательным термином "базы данных" называются базы данных в Базе данных SQL Azure, Управляемом экземпляре SQL Azure и Azure Synapse, а термином "сервер" — сервер, на котором размещены базы данных для Базы данных SQL Azure и Azure Synapse.

Аутентификация и авторизация

Аутентификацией или проверкой подлинности называют процесс подтверждения личности пользователя. Пользователь подключается к базе данных с помощью учетной записи пользователя. Когда пользователь пытается подключиться к базе данных, он предоставляет учетную запись пользователя и данные аутентификации. Аутентификация пользователя выполняется с помощью одного из следующих двух методов:

  • Аутентификация SQL.

    При использовании этого метода пользователь отправляет имя учетной записи пользователя и связанный пароль, чтобы установить соединение. Этот пароль хранится в базе данных master для учетных записей пользователей, связанных с именем для входа, или в базе данных, которая содержит не связанные с именем для входа учетные записи пользователей.

  • Аутентификация Azure Active Directory

    При использовании этого метода проверки подлинности пользователь отправляет имя учетной записи пользователя и запрашивает, чтобы служба использовала учетные данные, хранящиеся в Azure Active Directory (Azure AD).

Имена входа и пользователи. Учетная запись пользователя в базе данных может быть связана с именем входа, хранящимся в базе данных master, или именем пользователя, которое хранится в отдельной базе данных.

  • Имя для входа — это отдельная учетная запись в базе данных master, к которой может быть привязана учетная запись пользователя в одной или нескольких базах данных. Если используется имя для входа, вместе с ним хранятся учетные данные для учетной записи пользователя.
  • Учетная запись пользователя — это отдельная учетная запись в любой базе данных, которая может быть не связана с именем входа. Если учетная запись пользователя не связана с именем для входа, то учетные данные хранятся вместе с учетной записью пользователя.

Авторизация предоставляется для доступа к данным и выполнения различных действий. Управление ей осуществляется с помощью ролей базы данных и явных разрешений. Авторизация — это по сути набор разрешений, которые назначены пользователю и которые определяют, какие действия доступны этому пользователю. Авторизация определяется членством в ролях и разрешениями уровня объекта базы данных, назначенными учетной записи пользователя. Обычно пользователям рекомендуется предоставлять наименьшие необходимые привилегии.

Существующие имена для входа и учетные записи пользователей после создания базы данных

При первом развертывании Azure SQL нужно указать имя для входа администратора и соответствующий пароль. Эта административная учетная запись называется администратором сервера. Следующая конфигурация имен входа и пользователей в базах данных master и user настраивается во время развертывания.

  • Создается имя для входа SQL с правами администратора с использованием указанного имени для входа. Имя входа — это отдельная учетная запись пользователя для входа в Базу данных SQL, Управляемый экземпляр SQL и Azure Synapse.
  • Этому имени для входа предоставляются полные права администратора во всех базах данных в качестве субъекта серверного уровня. Имя входа имеет все доступные разрешения и не может быть ограничено. В Управляемом экземпляре SQL это имя входа добавляется в предопределенную роль сервера sysadmin (эта роль не существует в Базе данных SQL Azure).
  • Для этого имени для входа в каждой пользовательской базе данных создается учетная запись пользователя с именем dbo. Пользователь dbo имеет все разрешения базы данных и сопоставлен с предопределенной ролью базы данных db_owner. Дополнительные предопределенные роли базы данных рассматриваются далее в этой статье.

Чтобы определить учетные записи администратора для базы данных, откройте портал Azure и перейдите на вкладку Свойства сервера или управляемого экземпляра.

Администраторы SQL Server

Снимок экрана: пункт меню

Важно!

Имя входа администратора нельзя изменить после его создания. Чтобы сбросить пароль администратора сервера, на портале Azure щелкните Серверы SQL, выберите в списке сервер и щелкните Сбросить пароль. Чтобы сбросить пароль для Управляемого экземпляра SQL, перейдите на портал Azure, выберите экземпляр и нажмите Сбросить пароль. Вы также можете использовать PowerShell или Azure CLI.

Создание дополнительных имен для входа и пользователей с правами администратора

На этом этапе ваш сервер или управляемый экземпляр настроен для доступа только с помощью одного имени входа SQL и учетной записи пользователя. Для создания дополнительных учетных записей с полными или частичными правами администратора доступны следующие варианты (в зависимости от режима развертывания).

  • Создание учетной записи администратора Azure Active Directory с полными правами администратора

    Включите аутентификацию Azure Active Directory и создайте учетную запись администратора Azure AD. Одну учетную запись Azure Active Directory можно настроить в качестве администратора развертывания Azure SQL с полными правами администратора. Эта учетная запись может быть отдельной учетной записью или учетной записью группы безопасности. Если нужно использовать учетные записи Azure AD для подключения к Базе данных SQL Azure, Управляемому экземпляру SQL или Azure Synapse, обязательно настройте администратора Azure AD. Подробные сведения о включении проверки подлинности Azure AD для всех типов развертывания Azure SQL см. в следующих статьях:

  • В Управляемом экземпляре SQL создайте имена входа SQL с полными разрешениями администратора.

  • В Базе данных SQL создайте имена входа SQL с ограниченными административными разрешениями.

    • Создайте дополнительное имя входа SQL в базе данных master.
    • Создайте учетную запись пользователя в базе данных master, связанную с этим новым именем входа.
    • Добавьте эту учетную запись пользователя в роль dbmanager, loginmanager или в обе эти роли в базе данных master с помощью инструкции ALTER ROLE (для Azure Synapse используйте инструкцию sp_addrolemember).

    Примечание

    Роли dbmanager и loginmanagerне относятся к развертываниям Управляемого экземпляра SQL.

    Члены этих специальных ролей базы данных master для Базы данных SQL Azure имеют полномочия на создание баз данных и имен входа и управление ими. В базах данных, созданных пользователем, который является членом роли dbmanager, этот пользователь сопоставляется с фиксированной ролью базы данных db_owner и может входить в нее и управлять ею с помощью учетной записи пользователя dbo. У этих ролей нет явных разрешений вне базы данных master.

    Важно!

    Нельзя создать дополнительное имя входа SQL с полными правами администратора в Базе данных SQL.

Создание учетных записей для пользователей без прав администратора

Учетные записи для пользователей без прав администратора можно создавать одним из двух способов.

  • Создает вход

    Создайте имя для входа SQL в базе данных master. Затем создайте учетную запись пользователя в каждой базе данных, к которой пользователю требуется доступ, и свяжите учетную запись пользователя с этим именем для входа. Этот подход предпочтителен, если пользователь должен получить доступ к нескольким базам данных и вы хотите синхронизировать пароли. Однако с этим подходом возникают сложности при использовании георепликации, так как имя для входа нужно создать как на сервере-источнике, так и на серверах-получателях. Дополнительные сведения см. в статье Настройка безопасности Базы данных SQL Azure и управление ею для геовосстановления или отработки отказа.

  • Создание учетной записи пользователя

    Создайте учетную запись пользователя в базе данных, к которой пользователю нужен доступ (также называется автономным пользователем).

    • В Базе данных SQL вы всегда можете создать учетную запись этого типа.
    • Если используется Управляемый экземпляр SQL, поддерживающий субъекты сервера Azure AD, можно создавать учетные записи пользователей для проверки подлинности в Управляемый экземпляре SQL без необходимости создания пользователей базы данных в качестве автономных пользователей.

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

Важно!

Чтобы создать автономных пользователей, сопоставленных с удостоверениями Azure AD, необходимо войти в систему с помощью учетной записи Azure AD в базе данных Базы данных SQL Azure. В Управляемом экземпляре SQL при использовании имени входа SQL с разрешениями sysadmin также можно создавать имя входа или пользователя Azure AD.

Примеры, демонстрирующие создание имен для входа и пользователей, см. в следующих статьях:

Совет

Инструкции по безопасности, включая создание пользователей в Базе данных SQL Azure, см. в руководстве по защите Базы данных SQL Azure.

Использование фиксированных и настраиваемых ролей базы данных

После создания учетной записи пользователя в базе данных на основе имени для входа или в виде автономного пользователя можно авторизовать этого пользователя для выполнения различных действий и доступа к данным в определенной базе данных. Для авторизации доступа можно использовать следующие методы.

  • Фиксированные роли базы данных

    Добавьте учетную запись пользователя к фиксированной роли базы данных. Существует 9 фиксированных ролей базы данных, у каждой из которых свой определенный набор разрешений. Самые распространенные роли базы данных: db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter и db_denydatareader. Роль db_owner обычно используется для предоставления полных прав ограниченному числу пользователей. Другие фиксированные роли можно использовать для быстрого получения простых баз данных при разработке, но их не рекомендуется использовать для большинства рабочих баз данных. Например, фиксированная роль базы данных db_datareader предоставляет доступ на чтение ко всем таблицам в базе данных —это больше, чем необходимо для работы.

  • Настраиваемая роль базы данных

    Создайте настраиваемую роль базы данных с помощью оператора CREATE ROLE. Настраиваемая роль позволяет создавать определяемые пользователем роли базы данных, а затем предоставлять каждой роли наименьший набор разрешений, необходимый для работы. Затем можно добавить пользователей в настраиваемую роль. Если пользователь является участником нескольких ролей, то ему предоставлены разрешения всех этих ролей.

  • Предоставление разрешений напрямую

    Предоставьте учетной записи пользователя разрешения напрямую. Существует более 100 разрешений, которые можно по отдельности предоставлять или отменять в базе данных SQL. Многие эти разрешения являются частью других разрешений. Например, разрешение UPDATE на схеме включает в себя разрешение UPDATE для каждой таблицы в этой схеме. Как и в большинстве систем разрешений, отмена разрешения переопределяет предоставление. Так как некоторые разрешения включены в другие разрешения и их достаточно много, необходимо внимательно изучить их, чтобы спроектировать соответствующую систему разрешений, которая будет надежно защищать базу данных. Изучите список разрешений на этой странице и ознакомьтесь с графическим представлением разрешений.

Использование групп

Эффективное управление доступом основано на разрешениях, назначенных группам безопасности Active Directory, и фиксированным или настраиваемым ролям, а не отдельным пользователям.

  • Если используется аутентификация Azure Active Directory, поместите пользователей Azure Active Directory в соответствующую группу безопасности. Создайте пользователя автономной базы данных для группы. Добавьте одного или нескольких пользователей базы данных в качестве члена пользовательских или встроенных ролей базы данных с определенными разрешениями, соответствующими этой группе пользователей.

  • Если используется аутентификация SQL, создайте пользователей автономной базы данных в базе данных. Поместите одного или нескольких пользователей базы данных в настраиваемую роль базы данных с конкретными разрешениями, соответствующими этой группе пользователей.

    Примечание

    Можно также использовать группы для пользователей неавтономной базы данных.

Ознакомьтесь со следующими возможностями, которые можно использовать, чтобы ограничить или расширить права:

Дальнейшие действия

Обзор всех функций обеспечения безопасности Базы данных SQL Azure и Управляемого экземпляра SQL см. в разделе Общие сведения о безопасности.