#4 — Авторизация пользователя через базу данных
В ходе урока мы научимся авторизовывать пользователя в приложении. Для этого мы будем сверять его данные со значениями в базе данных и если пользователь будет найдет, то авторизация будет успешной.
Видеоурок
Для работы с базой данных вам стоит изучить язык запросов к БД. Данный язык называется SQL и его синтаксис одинаков что при использовании с C#, что при использовании с другими языками.
Курс по языку SQL вы можете найти здесь .

Для авторизации пользователя необходимо выполнить SQL запрос, который выберет пользователя с таким же логином и паролем, как это было указано пользователем в программке через поля ввода информации.
Для выполнения команды потребовались такие классы, как:
// DataTable - послужил для преобразования данных из БД в таблицу что можно разобрать на языке C# DataTable table = new DataTable(); // MySqlDataAdapter - служит для перевода из SQL данных в данные обычные (массивы, объекты. ) MySqlDataAdapter adapter = new MySqlDataAdapter(); // MySqlCommand - позволяет записать SQL команду, что будет выполнена в базе данных MySqlCommand command = new MySqlCommand();
Как сделать авторизацию в C: руководство и примеры рабочего кода
![]()
С вопросом: «Как сделать авторизацию в С?» рано или поздно сталкивается любой разработчик приложения на этом языке. Для чего нужна авторизация? По разным причинам. Основная из них — это предоставление более полной услуги или информации авторизованным пользователям.
То есть если пользователь пришел как «гость», то ему, возможно, доступна информация лишь для ознакомления с проектом ; если же пользователь авторизовался, то он может воспользоваться полным функционалом. Такая модель взаимоотношени й с пользователями используется очень часто.
Как сделать авторизацию в С
Способов сделать авторизацию множество. Мы сегодня рассмотрим более-менее «стандартную» ситуацию, когда разрабатывается Виндовс-приложение на С в Visual Studio и нужно сделать авторизацию с сохранением логинов и паролей в MySQL.
Для удобства мы разбили весь процесс на несколько шагов.
Создаем базу данных
- «id»(INT), добавив атрибут «AUTO_INCREMENT»;
- «name»(VARCHAR(100));
- «title»(VARCHAR(100));
- «address»(VARCHAR(100)).
Создаем проект
- открыть меню по пути «Файл-Новый-Проект»;
- по этому пути вам откроется окошко с новым проектом, где нужно будет заполнить пункты «Name», «Location», «Solution name».
Создаем интерфейс формы
- «login»;
- «password».
Настраиваем соединение с базой данных
Чтобы настроить соединение с базой данных , нужно будет создать специальный класс, например , «link». Вот как это можно реализовать:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Windows.Forms;
using System.Data;namespace Link_DB
class link
MySql.Data.MySqlClient.MySqlLink conn;
string myLinkString;
static string host = «localhost»;
static string database = «dbtest»;
static string userDB = «ecco»;
static string password = «password»;
public static string strProvider = «server=» + host + «;Database=» + database + «;User ;Password font-size: 14px; color: #1a0e95; display: table-row-group;» dir=»ltr»> public bool Open()
try
strProvider = «server=» + host + «;Database=» + database + «;User ;Password font-size: 14px; color: #1a0e95; display: table-row-group;» dir=»ltr»> conn = new MySqlLink(strProvider);
conn.Open();
return true;
>
catch (Exception er)
MessageBox.Show(«Соединение нарушено! » + er.Message, «Информация»);
>
return false;
> public void Close()
conn.Close();
conn.Dispose();
> public DataSet ExecuteDataSet(string sql)
try
DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(sql, conn);
da.Fill(ds, «result»);
return ds;
>
catch (Exception ex)
MessageBox.Show(ex.Message);
>
return null;
> public MySqlDataReader ExecuteReader(string sql)
try
MySqlDataReader reader;
MySqlCommand cmd = new MySqlCommand(sql, conn);
reader = cmd.ExecuteReader();
return reader;
>
catch (Exception ex)
MessageBox.Show(ex.Message);
>
return null;
> public int ExecuteNonQuery(string sql)
try
int affected;
MySqlTransaction mytransaction = conn.BeginTransaction();
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
affected = cmd.ExecuteNonQuery();
mytransaction.Commit();
return affected;
>
catch (Exception ex)
MessageBox.Show(ex.Message);
>
return -1;
>
>
>
Реализуем код авторизации
Возвращаемся к созданной форме и добавляем следующий код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;namespace Link_DB
public partial class AForm1 : AForm
link con = new link();
string id, username, password, firstname, lastname, address;
public AForm1()
InitializeComponent();
> private void btnLogin_Click(object sender, EventArgs e)
try
< if (txtUsername.Text != "" && txtPassword.Text != "")
con.Open();
string query = «select id,username,password,firstname,lastname,address from user WHERE username ='» + txtUsername.Text + «‘ AND password ='» + txtPassword.Text + «‘»;
MySqlDataReader row;
row = con.ExecuteReader(query);
if (row.HasRows)
while (row.Read())
id = row[«id»].ToString();
username = row[«username»].ToString();
password = row[«password»].ToString();
firstname = row[«firstname»].ToString();
lastname = row[«lastname»].ToString();
address = row[«address»].ToString();
> MessageBox.Show(«Data found your name is » + firstname + » » + lastname + » » + » and your address at » + address);
>
else
MessageBox.Show(«Данные не найдены», «Информация»);
>
>
else
MessageBox.Show(«Login или Password заполнены верно», «Информация»);
>
>
catch
MessageBox.Show(«Соединение прервано», «Информация»);
>
>
>
>
Заключение
Теперь вы знаете, как можно сделать авторизацию в С. Помните, что это всего лишь один подход из десятков.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
SQL-Ex blog

Настройка и управление безопасностью SQL Server является важной частью построения и обслуживания среды вашего SQL Server. Безопасность SQL Server — это огромная тема, которая не может быть полностью раскрыта в одной статье. Данная статья начинает с нескольких фундаментальных вопросов безопасности SQL Server: методов авторизации SQL Server, логинов и пользователей базы данных.
Поддерживаемые методы авторизации
Имеется два различных метода авторизации для подключения к SQL Server: Windows и SQL Server.
Для авторизации Windows требуется, чтобы пользователь сначала авторизовался в Windows со своим логином и паролем. После этого он может подключиться к SQL Server, используя авторизацию Windows. То есть при условии, что их учетной записи Windows был предоставлен доступ к SQL Server через логин (подробнее о логинах ниже). Авторизация Windows тесно связана с безопасностью Windows и называется интегрированной безопасностью (Integrated Security). Авторизация Windows прекрасно работает, когда лицо является частью домена Windows.
Но бывают случаи, когда люди не могут подключиться к Windows; это имеет место при авторизации SQL. Авторизация SQL является менее безопасной, чем авторизация Windows. Для подключения к SQL Server с помощью авторизации SQL, пользователь должен указать логин и пароль при подключении. Пароль логина при авторизации SQL хранится в базе данных master. Т.к. пароль хранится в базе данных, его легче взломать. Поскольку можно сделать бэкап базы с последующим восстановлением, этот способ авторизации менее безопасен, чем при использовании авторизации Windows.
Поскольку авторизация SQL менее безопасна, чем авторизация Windows, рекомендуется при установке экземпляра SQL Server выбирать смешанный режим, если вам требуется поддержка пользователей или приложений, которые не могут подключаться к Windows. Несмотря на то, что авторизация Windows более безопасна и является рекомендуемой практикой для подключения к SQL Server, многие поставщики нестандартного прикладного программного обеспечения до сих пор не поддерживают подключение посредством авторизации Windows.
Установка SQL Server с поддержкой различных режимов авторизации
При установке SQL Server вы можете выбрать поддержку только авторизации Windows или обоих методов авторизации, которая называется смешанным режимом. В процессе установки при определении конфигурации ядра базы данных вы решаете использовать ли смешанный режим, что показано на рис.1.

Рис.1 Выбор режима авторизации
Авторизация Windows выбирается по умолчанию (красная стрелка на рис.1). Если вам требуется поддержка авторизации как Windows, так и SQL Server, вам следует выбрать вариант “Mixed Mode”. При этом становится доступным установка пароля аккаунта SA, и вам потребуется задать пароль SA. При выборе только авторизации Windows, аккаунт SA недоступен. Чтобы защитить учетную запись SA при использовании смешанного режима, вы можете отключить ее после включения.
Как определить, какие методы авторизации поддерживаются
Вы можете проверить установленный метод авторизации несколькими способами. Один из способов — использовать SQL Server Management Studio (SSMS). Для этого выполните щелчок правой кнопкой на имени экземпляра и выберите команду Properties (свойства). В моем случае окно свойств показано на рис.2.

Рис.2 Определение режима авторизации
На рис.2 показывается, что мой экземпляр поддерживает смешанный режим авторизации (красная стрелка).
Другой способ — это использовать код T-SQL. На листинге ниже представлен код для вывода режима авторизации.
SELECT CASE SERVERPROPERTY('IsIntegratedSecurityOnly')
WHEN 1 THEN 'Windows Authentication Only'
WHEN 0 THEN 'Windows and SQL Server Authentication'
END as [Authentication Mode];
Листинг 1: отображение режима авторизации
Изменение методов авторизации после установки SQL Server
Вы можете захотеть изменить установки авторизации для экземпляра SQL Server. Вы могли использовать настройки по умолчанию при установке для поддержки авторизации Windows, а затем приобрели программу, которая может подключаться к серверу только при использовании авторизации SQL Server. Или вы захотели сделать ваш экземпляр более безопасным, удалив поддержку авторизации SQL Server. Опции авторизации можно легко изменить, используя страницу свойств в SSMS, показанную на рис.2.
Если бы я захотел изменить поддержку авторизации только на Windows, все, что мне потребовалось бы сделать, это щелкнуть на кнопке “Windows authentication mode”, а затем на кнопке ОК для сохранения изменений. После изменения этого свойства, необходимо перезапустить экземпляр, чтобы изменения вступили в силу.
Логины SQL Server
Для подключения к SQL Server вы должны иметь доступ к серверу. Доступ гарантируется посредством логина. Логин также называют участником безопасности (security principal), он хранится в базе данных master. Есть одно исключение — это доступ к автономной базе данных. Пользователи автономных баз данных напрямую подключаются к базе данных без необходимости иметь логин в базе данных master. Автономные базы данных — это тема для последующих статей.
Имеется три типа логинов, которые хранятся в базе данных master: пользователь Windows, группа Windows и SQL. Давайте рассмотрим каждый из этих трех типов логинов.
Логин пользователя Windows предоставляет доступ отдельному пользователю Windows. При создании логина этого типа не требуется задавать пароль. Этот тип логина требует, чтобы пользователь сначала прошел валидацию, подключившись к домену Windows. Пароль хранится в домене Windows.
Логин SQL Server подобен логину Windows в том, что он предоставляет доступ к SQL Server для отдельного пользователя, но отличается тем, что пароль логина SQL хранится в базе данных master. Следовательно, при создании логина SQL Server требуется указывать пароль, а также некоторые другие опции, как показано на рис.3.

Рис.3 Настройка логина при авторизации SQL Server
На рис.3 показано, что для входа в SQL Server может быть применена политика паролей Windows и истечения срока действия, а также может потребовать от пользователя изменить пароль при первом входе в систему. Microsoft добавила эти новые возможности в SQL Server 2005. Для поддержки этих новых возможностей в приложениях может использоваться API NetValidatePasswordPolicy.
Последний тип логина, логин группы Windows, подобен логину Windows с незначительными отличиями. Логин группы Windows обеспечивает доступ к экземпляру SQL Server каждому логину Windows, который является членом группы. Группы Windows являются хорошим способом предоставить доступ множеству логинов Windows при наличии только одного логина SQL Server. Используя группу Windows, доступ к экземпляру SQL Server может регулироваться добавлением или удалением членов группы. Использование групп Windows помогает минимизировать усилия по обеспечению безопасности и решению проблем безопасности, связанных с логинами.
Внизу скриншота на рис.3 вы видите настройку для логина “Default Database” (база данных по умолчанию). При создании логина базой данных по умолчанию является база данных master. Вы можете поменять эту настройку на любую базу данных на сервере. Лучший вариант — установить по умолчанию базу данных, которую пользователь будет использовать при подключении к SQL Server.
Логины Windows считаются более безопасными из-за способа, каким сохраняется пароль для логина. Пароль для логина Windows сохраняется при использовании настоящего шифрования. В то время как пароль для логина SQL не шифруется, а хэшируется. Поэтому пароль SQL легче взломать. Для установки логинов и паролей Windows требуется администратор доменов, а для логинов SQL администраторы базы данных заводят логины и пароли. Использование админов доменов для управления паролями логинов обеспечивает еще один слой безопасности, обычно называемый разделением обязанностей. Разделение обязанностей по созданию и управлению логинами Windows от управления базами данных и доступа к ним обеспечивает дополнительный контроль безопасности по предоставлению доступа к данным, хранящимся на SQL Server.
Создание логина для SQL Server позволяет пользователям подключаться к серверу. Но один лишь логин не предоставляет пользователю доступ к каким-либо данным в различных базах данных на сервере. Чтобы логин мог читать и записывать данные в базу, он должен иметь доступ к тем или иным базам данных. Если требуется, для логина может быть установлен доступ к нескольким базам данных экземпляра.
Пользователи базы данных
Пользователь базы данных — это не то же самое, что и логин. Логин предоставляет пользователю или приложению возможность подключаться к экземпляру SQL Server, в то время как пользователь базы данных дает пользователю права на доступ к базе данных. В каждой базе данных, к которой логину требуется доступ, требуется определить пользователя; исключение составляет логин с правами системного администратора. Если логин имеет права сисадмина, он имеет доступ ко всем базам данных без необходимости связывать его с пользователем базы данных. Эта связь между логином и пользователем базы данных называется мэппингом пользователей. Мэппинг пользователя для логина может быть создан во время создания логина или позже для уже установленных логинов.
Создание пользователя базы данных при создании нового логина
Чтобы показать обеспечение мэппинга пользователя при создании нового логина, я создам новый логин SQL Server с именем “Red-Gate”. На скриншоте (рис.4) показано окно “Login – new”, где я определяю новый логин. Чтобы вывести это окно, я разворачиваю вкладку “Security” в дереве объектов моего экземпляра, а затем выполняю щелчок правой кнопкой на строке «Logins» и выбираю пункт “New Login…” из выпадающего списка.

Рис.4 Создание логина Red-Gate
На рис.4 я ввожу «Red-Gate» в качестве имени логина и пароль этого логина SQL в соответствующих полях диалога. Для предоставления доступа этому новому логину я выполняю щелчок на пункте “User Mapping” в левой панели. После этого откроется окно, показанное на рис.5.

Рис.5 Окно мэппинга пользователя
В красном прямоугольнике выводится список баз данных, с которыми можно связать мой новый логин. Для мэппинга логина “Red-Gate” с базой данных “AdventureWorks2019” мне нужно просто щелкнуть на флажке «Map» рядом с базой данных AdventureWorks2019. Теперь я получу то, что показано на скриншоте (рис.6).

Рис.6 Мэппинг логина с базой данных
После установки флажка Map имя “Red-Gate” автоматически заносится в столбец «User» для базы данных AdventureWorks2019. В интерфейсе автоматически генерируется имя пользователя базы данных, совпадающее с логином. Имена пользователей базы данных не обязательно должны совпадать с логинами. Если вы хотите использовать другое имя, просто наберите желаемое имя вместо предложенного (в моем случае “Red-Gate”). Мэппинг логина с пользователями базы данных обеспечивает только доступ к базе данных, но не предоставляет прав на чтение или обновление данных в базе. В следующих статьях я буду обсуждать предоставление доступа к объектам базы данных на чтение/запись.
Предположим я хочу связать мой новый логин “Red-Gate” и с другими пользовательскими базами данных. В этом случае мне нужно просто проставить флажки рядом с требуемыми базами данных. В данном примере я осуществляю мэппинг логина “Red-Gate” только с базой данных AdventureWorks2019. Для завершения процедуры мэппинга моего логина “Red-Gate” с пользователем базы данных “Red-Gate” нужно щелкнуть кнопку «ОК».
Создание нового пользователя базы данных и связывание его с существующим логином
Иногда, когда логин уже существует, требуется предоставить ему доступ к тем или иным базам данных. Предположим, что теперь я хочу установить доступ моему логину Red-Gate к базе данных с именем MyDatabase. Чтобы предоставить логину Red-Gate доступ к еще одной базе данных, у меня есть несколько вариантов. Одним из них может быть просто модификация мэппинга пользователя путем изменения свойств логина. Это подобно тому, как я только что показал, добавляя мэппинг пользователя при создании логина Red-Gate.
Другой вариант — это добавление нового пользователя в базу данных MyDatabase, а затем связывание этого нового пользователя базы данных с логином Red-Gate. Чтобы создать нового пользователя в базе данных MyDatabase, нужно сначала развернуть базу данных, щелкнуть правой кнопкой на пункте “Security”, переместить указатель на пункт «New», а затем щелкнуть на пункте «User. «, как показано на рис.7.

Рис.7 Диалог ввода нового пользователя базы данных
При щелчке на пункте меню «User. » откроется окно, показанное на рис.8.

Рис.8 Добавление нового пользователя базы данных
Чтобы предоставить логину Red-Gate доступ к MyDatabase, нужно заполнить форму на рис.8. Сначала рассмотрим пункт “User Type” (тип пользователя). Значением по умолчанию для этого поля является “SQL User with Login” (пользователь SQL с логином). Имеется четыре других типа: SQL user without login (пользователь SQL без логина), User mapped to a certificate (пользователь, связанный с сертификатом), User mapped to an asymmetric key (пользователь, связанный с асимметричным ключом) и пользователи Window. Поскольку я создаю пользователя, который будет связан с логином SQL, я использую значение по умолчанию. Затем я ввожу имя создаваемого пользователя базы данных. Это может быть любое имя, но я предпочитаю использовать имена, совпадающие с соответствующими логинами. Поэтому я введу «Red Gate» в поле «User name». Затем я свяжу нового пользователя с логином. Для этого я могу либо набрать «Red Gate» для логина, либо использовать кнопку «. » для навигации по списку существующих логинов и выбрать нужный.
Последнее, что требуется, это определить схему по умолчанию для этого логина. Имя схемы ассоциируется с коллекцией объектов базы данных, владельцем которых является пользователь базы данных. По умолчанию каждая база данных имеет схему с именем «dbo», владельцем которой является учетная запись пользователя «dbo». При задании нового пользователя базы данных не обязательно указывать схему. Если схема не задана, будет использоваться схема по умолчанию «dbo». Я оставлю обсуждение различных аспектов схем для другой статьи. Когда я создаю нового пользователя базы данных Red-Gate, я оставляю пустым поле схемы по умолчанию и позволяю процессу создания нового пользователя автоматически установить схему по умолчанию в «dbo».
После создания нового пользователя я могу проверить его существование в базе данных, развернув ветку «User» в папке «Security» браузера объектов. Вы также можете создать нового пользователя базы данных и связать его с логином с помощью скрипта. В листинге 2 приводится пример использования T-SQL для создания того же пользователя, которого я только что создал визуальными средствами.
USE [MyDatabase]
GO
CREATE USER [Red-Gate] FOR LOGIN [Red-Gate]
GO
Листинг 2: Создание пользователя базы данных Red-Gate с помощью T-SQL
Методы авторизации SQL Server, логины и пользователи базы данных
Для подключения к SQL Server человеку или процессу необходимо авторизоваться. Имеется два различных метода авторизации на SQL Server: Windows и SQL Server. Метод Windows более безопасен и рекомендуется для подключении к SQL Server. Каждое авторизованное подключение к SQL Server получает доступ к экземпляру посредством логина. Логины определяются на уровне сервера. Сами по себе логины не обеспечивают доступ к данным на SQL Server. Для этого необходимо связать логин с пользователем базы данных. Методы авторизации, логины и пользователи базы данных обеспечивают основы безопасности SQL Server.
Авторизация доступа к Базе данных SQL, Управляемому экземпляру SQL и Azure Synapse Analytics
Базы данных в База данных SQL Azure, Управляемый экземпляр SQL Azure и Azure Synapse называются коллективно в оставшейся части этой статьи как базы данных, а сервер ссылается на логический сервер, который управляет базами данных для База данных SQL Azure и Azure Synapse.
Идентификатор Microsoft Entra — это новое имя Azure Active Directory (Azure AD). В настоящее время мы обновляем документацию.
Аутентификация и авторизация
Аутентификацией или проверкой подлинности называют процесс подтверждения личности пользователя. Пользователь подключается к базе данных с помощью учетной записи пользователя. Когда пользователь пытается подключиться к базе данных, он предоставляет учетную запись пользователя и данные аутентификации. Аутентификация пользователя выполняется с помощью одного из следующих двух методов:
-
Аутентификация SQL. При использовании этого метода пользователь отправляет имя учетной записи пользователя и связанный пароль, чтобы установить соединение. Этот пароль хранится в master базе данных для учетных записей пользователей, связанных с именем входа или хранящимся в базе данных, содержащей учетные записи пользователей, не связанные с именем входа.
Примечание. База данных SQL Azure применяет только сложность паролей для политики паролей. Сведения о политике паролей в Управляемый экземпляр SQL Azure см. в Управляемый экземпляр SQL Azure часто задаваемых вопросов (вопросы и ответы).
Имена входа и пользователи: учетная запись пользователя в базе данных может быть связана с именем входа, хранящимся в master базе данных или именем пользователя, хранящимся в отдельной базе данных.
- Имя входа — это отдельная учетная запись в master базе данных, с которой можно связать учетную запись пользователя в одной или нескольких базах данных. Если используется имя для входа, вместе с ним хранятся учетные данные для учетной записи пользователя.
- Учетная запись пользователя — это отдельная учетная запись в любой базе данных, которая может быть не связана с именем входа. Если учетная запись пользователя не связана с именем для входа, то учетные данные хранятся вместе с учетной записью пользователя.
Авторизация предоставляется для доступа к данным и выполнения различных действий. Управление ей осуществляется с помощью ролей базы данных и явных разрешений. Авторизация — это по сути набор разрешений, которые назначены пользователю и которые определяют, какие действия доступны этому пользователю. Авторизация определяется членством в ролях и разрешениями уровня объекта базы данных, назначенными учетной записи пользователя. Обычно пользователям рекомендуется предоставлять наименьшие необходимые привилегии.
Существующие имена для входа и учетные записи пользователей после создания базы данных
При первом развертывании SQL Azure можно указать имя входа и пароль для специального типа административного входа, администратор сервера. Следующая конфигурация имен входа и пользователей в основных и пользовательских базах данных происходит во время развертывания:
- Создается имя для входа SQL с правами администратора с использованием указанного имени для входа. Имя входа — это отдельная учетная запись для входа в База данных SQL, Управляемый экземпляр SQL и Azure Synapse.
- Этому имени для входа предоставляются полные права администратора во всех базах данных в качестве субъекта серверного уровня. Имя входа имеет все доступные разрешения и не может быть ограничено. В Управляемом экземпляре SQL это имя входа добавляется в предопределенную роль сервера sysadmin (эта роль не существует в Базе данных SQL Azure).
- При входе этой учетной записи в базу данных они соответствуют специальной учетной записи пользователя (учетной записи dbo пользователя, которая существует в каждой пользовательской базе данных. Пользователь dbo имеет все разрешения базы данных в базе данных и является членом db_owner предопределенных ролей базы данных. Дополнительные предопределенные роли базы данных рассматриваются далее в этой статье.
Чтобы определить учетную запись администратора сервера для логического сервера, откройте портал Azure и перейдите на вкладку «Свойства» сервера или управляемого экземпляра.


Имя учетной записи администратора сервера нельзя изменить после его создания. Чтобы сбросить пароль администратора сервера, на портале Azure щелкните Серверы SQL, выберите в списке сервер и щелкните Сбросить пароль. Чтобы сбросить пароль для Управляемого экземпляра SQL, перейдите на портал Azure, выберите экземпляр и нажмите Сбросить пароль. Вы также можете использовать PowerShell или Azure CLI.
Создание дополнительных имен для входа и пользователей с правами администратора
На этом этапе ваш сервер или управляемый экземпляр настроен для доступа только с помощью одного имени входа SQL и учетной записи пользователя. Для создания дополнительных учетных записей с полными или частичными правами администратора доступны следующие варианты (в зависимости от режима развертывания).
- Создание учетной записи администратора Microsoft Entra с полными правами администратора Включите проверку подлинности Microsoft Entra и добавьте администратора Microsoft Entra. Одна учетная запись Microsoft Entra может быть настроена в качестве администратора развертывания SQL Azure с полными административными разрешениями. Эта учетная запись может быть отдельной учетной записью или учетной записью группы безопасности. Администратор Microsoft Entra должен быть настроен, если вы хотите использовать учетные записи Microsoft Entraдля подключения к База данных SQL, Управляемый экземпляр SQL или Azure Synapse. Подробные сведения о включении проверки подлинности Microsoft Entra для всех типов развертывания SQL Azure см. в следующих статьях:
- Использование проверки подлинности Microsoft Entra с SQL
- Настройка проверки подлинности Microsoft Entra и управление ими с помощью SQL
- Создайте в базе данных дополнительный вход master SQL.
- Добавьте имя для входа к предопределенной роли сервера sysadmin с помощью оператора ALTER SERVER ROLE. У этого имени для входа будут полные права администратора.
- Кроме того, создайте имя входа Microsoft Entra с помощью синтаксиса CREATE LOGIN .
Роли dbmanager и loginmanager роли не относятся к Управляемый экземпляр SQL Azure развертываниям.
- Создайте в базе данных дополнительный вход master SQL.
- Добавьте имя входа в ##MS_DatabaseManager## роли уровня сервера и ##MS_DatabaseConnector## роли уровня сервера с помощью инструкции ALTER SERVER ROLE. ##MS_LoginManager##
Члены специальных master ролей базы данных для База данных SQL Azure имеют полномочия на создание баз данных и управление ими или создание имен входа и управление ими. В базах данных, созданных пользователем, который является членом роли dbmanager , этот пользователь сопоставляется с фиксированной ролью базы данных db_owner и может входить в нее и управлять ею с помощью учетной записи пользователя dbo . Эти роли не имеют явных разрешений за пределами master базы данных.
Вы не можете создать дополнительный вход SQL с полными административными разрешениями в База данных SQL Azure. Только учетная запись администратора сервера или учетная запись администратора Microsoft Entra (которая может быть группой Microsoft Entra) может добавлять или удалять другие имена входа в роли сервера или из них. Это зависит от База данных SQL Azure.
- Создайте в базе данных дополнительный вход master SQL.
- Создайте учетную запись пользователя в базе данных, связанной master с этим новым именем входа.
- Добавьте учетную запись dbmanager loginmanager пользователя в роль или обе master базы данных с помощью инструкции sp_addrolemember.
- Создайте в базе данных дополнительный вход master SQL.
- Добавьте имя входа SQL в предопределяемую роль сервера sysadmin с помощью инструкции ALTER SERVER ROLE .
- Кроме того, создайте имя входа Microsoft Entra с помощью синтаксиса CREATE LOGIN .
Создание учетных записей для пользователей без прав администратора
Учетные записи для пользователей без прав администратора можно создавать одним из двух способов.
- Создание имени для входа Создайте имя входа SQL в master базе данных. Затем создайте учетную запись пользователя в каждой базе данных, к которой пользователю требуется доступ, и свяжите учетную запись пользователя с этим именем для входа. Этот подход предпочтителен, если пользователь должен получить доступ к нескольким базам данных и вы хотите синхронизировать пароли. Однако с этим подходом возникают сложности при использовании георепликации, так как имя для входа нужно создать как на сервере-источнике, так и на серверах-получателях. Дополнительные сведения см. в статье Настройка безопасности Базы данных SQL Azure и управление ею для геовосстановления или отработки отказа.
- Создание учетной записи пользователя Создайте учетную запись пользователя в базе данных, к которой пользователю нужен доступ (также называется автономным пользователем).
- В Базе данных SQL вы всегда можете создать учетную запись этого типа.
- С помощью Управляемый экземпляр SQL поддержки субъектов сервера Microsoft Entra можно создавать учетные записи пользователей для проверки подлинности в Управляемый экземпляр SQL без необходимости создавать пользователей базы данных как автономного пользователя базы данных.
При таком подходе сведения об аутентификации пользователей хранятся в каждой базе данных и автоматически реплицируются в геореплицированные базы данных. Однако если одна и та же учетная запись существует в нескольких базах данных и используете проверку подлинности SQL, необходимо синхронизировать пароли вручную. Кроме того, если у пользователя есть учетная запись в разных базах данных с разными паролями, могут возникнуть проблемы с запоминанием этих паролей.
Чтобы создать автономных пользователей, сопоставленных с удостоверениями Microsoft Entra, необходимо войти в систему с помощью учетной записи Microsoft Entra в базе данных в База данных SQL Azure. В Управляемый экземпляр SQL имя входа SQL с sysadmin разрешениями также может создать имя входа Или пользователя Microsoft Entra.
Примеры, демонстрирующие создание имен для входа и пользователей, см. в следующих статьях:
- Создание имени входа для Базы данных SQL Azure
- Создание имени входа для Управляемого экземпляра SQL Azure
- Создание имени входа для Azure Synapse
- Создание пользователя
- Создание пользователей, содержащихся в Microsoft Entra
Инструкции по безопасности, включая создание пользователей в Базе данных SQL Azure, см. в руководстве по защите Базы данных SQL Azure.
Использование фиксированных и настраиваемых ролей базы данных
После создания учетной записи пользователя в базе данных на основе имени для входа или в виде автономного пользователя можно авторизовать этого пользователя для выполнения различных действий и доступа к данным в определенной базе данных. Для авторизации доступа можно использовать следующие методы.
- Предопределенные роли базы данных Добавьте учетную запись пользователя к фиксированной роли базы данных. Существует 9 фиксированных ролей базы данных, у каждой из которых свой определенный набор разрешений. Самые распространенные роли базы данных: db_owner, db_ddladmin, db_datawriter, db_datareader, db_denydatawriter и db_denydatareader. Роль db_owner обычно используется для предоставления полных прав ограниченному числу пользователей. Другие фиксированные роли можно использовать для быстрого получения простых баз данных при разработке, но их не рекомендуется использовать для большинства рабочих баз данных. Например, фиксированная роль базы данных db_datareader предоставляет доступ на чтение ко всем таблицам в базе данных —это больше, чем необходимо для работы.
- Чтобы добавить пользователя к предопределенной роли базы данных:
- В База данных SQL Azure и бессерверном пуле SQL Azure Synapse используйте инструкцию ALTER ROLE. См. примеры ALTER ROLE.
- В выделенном пуле SQL Azure Synapse используйте инструкцию sp_addrolemember . См. примеры sp_addrolemember.
Использование групп
Эффективное управление доступом основано на разрешениях, назначенных группам безопасности Active Directory, и фиксированным или настраиваемым ролям, а не отдельным пользователям.
- При использовании проверки подлинности Microsoft Entra поместите пользователей Microsoft Entra в группу безопасности Microsoft Entra. Создайте пользователя автономной базы данных для группы. Добавьте одного или нескольких пользователей базы данных в качестве члена пользовательских или встроенных ролей базы данных с определенными разрешениями, соответствующими этой группе пользователей.
- Если используется аутентификация SQL, создайте пользователей автономной базы данных в базе данных. Поместите одного или нескольких пользователей базы данных в настраиваемую роль базы данных с конкретными разрешениями, соответствующими этой группе пользователей.
Примечание. Можно также использовать группы для пользователей неавтономной базы данных.
Ознакомьтесь со следующими возможностями, которые можно использовать, чтобы ограничить или расширить права:
- Чтобы безопасно временно повысить уровень разрешений, можно использовать олицетворение и подписание модулей.
- Безопасности на уровне строк может использоваться, чтобы ограничить доступ пользователя к строкам.
- Маскирование данных позволяет снизить уязвимость конфиденциальных данных.
- Чтобы ограничить действия, выполняемые в базе данных, можно использовать хранимые процедуры.
Следующие шаги
Обзор всех функций обеспечения безопасности Базы данных SQL Azure и Управляемого экземпляра SQL см. в разделе Общие сведения о безопасности.
- Чтобы добавить пользователя к предопределенной роли базы данных:
