Руководство. Настройка проверки подлинности Active Directory в SQL Server на Linux с помощью adutil
Применимо к:SQL Server — Linux
В этом руководстве объясняется, как настроить проверку подлинности Windows Active Directory для SQL Server на Linux с помощью adutil. Другой метод настройки проверки подлинности Active Directory с помощью ktpass см. в руководстве по использованию проверки подлинности Active Directory с SQL Server на Linux.
В этом руководстве рассматриваются следующие задачи:
- Установка adutil
- Присоединение компьютера Linux к домену Active Directory
- Создайте пользователя Active Directory для SQL Server и задайте имя субъекта-службы (SPN) с помощью adutil
- Создание файла keytab (таблица ключей) службы SQL Server
- Настройка SQL Server для использования файла keytab
- Создание имен входа SQL Server на основе Active Directory с помощью Transact-SQL
- Подключение в SQL Server с помощью проверки подлинности Active Directory
Необходимые компоненты
Прежде чем настроить проверку подлинности Active Directory, вам потребуется:
- Контроллер домена Windows, на котором запущены доменные службы Active Directory в вашей сети.
- Средство adutil, установленное на хост-компьютере, присоединенном к домену.
Подготовка компьютера домена
В Active Directory должна быть добавлена запись узла переадресации (A) для IP-адреса узла Linux. В этом учебнике IP-адрес хост-компьютера sql1
— 10.0.0.10
. Мы добавим запись узла пересылки в Active Directory в следующем примере. Эта запись гарантирует, что при подключении пользователей к sql1.contoso.com
они будут обращаться к нужному узлу.
В этом руководстве используется среда Azure с тремя виртуальными машинами (ВМ). Одна виртуальная машина — это компьютер под управлением Windows Server с именем adVM.contoso.com
, который работает как контроллер домена (DC) с доменным именем contoso.com
. Вторая ВМ — это клиентская виртуальная машина под управлением Windows 10 с именем winbox
, на которой установлен SQL Server Management Studio (SSMS). Третья машина — это компьютер с Ubuntu 18.04 LTS. Он имеет имя sql1
, и в нем размещается SQL Server.
Присоединение хост-компьютера Linux к домену Active Directory
Сведения о присоединении sql1
к домену Active Directory см. в разделе "Присоединение к SQL Server" на узле Linux к домену Active Directory.
Установка adutil
Чтобы установить adutil на хост-компьютере, присоединенном к домену, как описано выше, выполните действия, описанные в статье Общие сведения о служебной программе adutil в Active Directory.
Используйте adutil для создания пользователя Active Directory для SQL Server и задания имени субъекта-службы (SPN)
Получите или продлите билет предоставления билета (TGT) Kerberos с помощью команды
kinit
. Для командыkinit
необходимо использовать привилегированную учетную запись, а хост-компьютер уже должен входить в домен. Для учетной записи требуется разрешение на подключение к домену и создание учетных записей и имен субъектов-служб в домене.В этом примере скрипта на контроллере домена уже создается привилегированный
privilegeduser@CONTOSO.COM
пользователь.kinit privilegeduser@CONTOSO.COM
С помощью adutil создайте нового пользователя, который будет использоваться в качестве привилегированной учетной записи Active Directory sql Server.
Пароли можно указать тремя различными способами. Если вы используете более одного из этих методов, они имеют приоритет в следующем порядке:
- Использование флага пароля:
--password <password>
- В переменной среды:
ADUTIL_ACCOUNT_PWD
- Интерактивный ввод в командной строке
Переменная среды или интерактивные методы ввода более безопасны, чем флаг пароля.
adutil user create --name sqluser --distname CN=sqluser,CN=Users,DC=CONTOSO,DC=COM --password 'P@ssw0rd'
Вы можете указать имя учетной записи с помощью различающегося имени (
--distname
), как показано ранее, или использовать имя подразделения. Если указаны оба имени, имя подразделения (--ou
) имеет приоритет над различающимся именем. Чтобы получить дополнительные сведения, можно выполнить следующую команду:adutil user create --help
- Использование флага пароля:
Зарегистрируйте имена субъектов-служб в созданном ранее субъекте. Необходимо использовать полное доменное имя (FQDN) компьютера. В этом учебнике используется порт SQL Server по умолчанию 1433. В вашем случае номер порта может быть другим.
adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 1433
addauto
автоматически создает имена субъектов-служб, если для учетной записи достаточно привилегийkinit
.-n
: имя учетной записи, назначаемой именам субъектов-служб.-s
: имя службы, используемое для создания имен субъектов-служб. В этом случае они предназначены для службы SQL Server, поэтому имя службы —MSSQLSvc
.-H
: имя узла, используемое для создания имен субъектов-служб. Если это не указано, используется полное доменное имя локального узла. В этом случае имя узла —sql1
, а полное доменное имя —sql1.contoso.com
.-p
: порт, используемый для создания имен субъектов-служб. Если это не указано, имена субъектов-служб создаются без порта. Подключения SQL будут работать в этом случае, только если SQL Server прослушивает порт по умолчанию 1433.
Создание файла ключа службы SQL Server с помощью mssql-conf
Вы можете установить adutil и интегрировать его с mssql-conf, чтобы создать и настроить keytab с помощью mssql-conf напрямую. Это предпочтительный метод для создания файла ключей службы SQL Server. В противном случае можно создать файл ключа службы SQL Server вручную.
Необходимые компоненты
Убедитесь, что
/var/opt/mssql/mssql.conf
файл принадлежитmssql
и неroot
принадлежит. Если это не так, необходимо выполнить команды mssql-conf с помощьюsudo
.На контроллере домена в параметрах Active Directory для учетной записи network.privilegedadaccount (в этих примерах
sqluser@CONTOSO.COM
) включите следующие параметры на вкладке "Учетная запись" в разделе параметров учетной записи:- Эта учетная запись поддерживает 128-разрядное шифрование Kerberos AES
- Данная учетная запись поддерживает 256-битовое шифрование Kerberos AES
Создание файла keytab
После создания пользователя и имени субъекта-службы можно создать ключ, выполнив следующие действия.
Переключитесь на пользователя
mssql
.su mssql
Войдите как пользователь Active Directory с помощью
kinit
команды:kinit privilegeduser@CONTOSO.COM
Создайте файл keytab:
/opt/mssql/bin/mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser
Вам будет предложено перезапустить службу SQL Server, чтобы применить новую конфигурацию Active Directory, которую можно сделать в следующем разделе.
Убедитесь, что ключ создается с правильными записями:
klist -kte /var/opt/mssql/secrets/mssql.keytab
Должен отобразиться результат, как в примере ниже:
keytab name: FILE:/var/opt/mssql/secrets/mssql.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 4 12/30/2021 14:02:08 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 4 12/30/2021 14:02:08 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)
Примечание.
/var/opt/mssql/mssql.conf
Если файл не принадлежитmssql
, необходимо настроить mssql-conf, чтобы задать значения network.kerberoskeytabfile и network.privilegedadaccount в соответствии с предыдущими шагами. Введите пароль при появлении запроса./opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab /opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
Проверьте конфигурацию, чтобы убедиться, что проверка подлинности Active Directory работает без каких-либо проблем.
/opt/mssql/bin/mssql-conf validate-ad-config /var/opt/mssql/secrets/mssql.keytab
Выходные данные должны соответствовать следующему примеру.
Detected Configuration: Default Realm: CONTOSO.COM Keytab: /var/opt/mssql/secrets/mssql.keytab Reverse DNS Result: sql1.contoso.com SQL Server Port: 1433 Detected SPNs (SPN, KVNO): (MSSQLSvc/sql1.CONTOSO.COM:1433, 4) (MSSQLSvc/sql1.CONTOSO.COM, 4) (MSSQLSvc/sql1:1433, 4) (MSSQLSvc/sql1, 4) Privileged Account (Name, KVNO): (sqluser, 4)
Создание файла keytab службы SQL Server вручную
Если вы установили adutil и интегрированы с mssql-conf, вы можете перейти к созданию файла ключей службы SQL Server с помощью mssql-conf.
Создайте файл keytab, содержащий записи для каждого из четырех созданных ранее имен субъектов-служб и одну запись для пользователя.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H sql1.contoso.com --password 'P@ssw0rd' -s MSSQLSvc
Возможны следующие варианты командной строки:
-k
: путь, по которомуmssql.keytab
создается файл. В приведенном выше примере каталог/var/opt/mssql/secrets/
уже должен существовать на узле.-p
: порт, используемый для создания имен субъектов-служб. Если это не указано, имена субъектов-служб создаются без порта.-H
: имя узла, используемое для создания имен субъектов-служб. Если это не указано, используется полное доменное имя локального узла. В этом случае имя узла —sql1
, а полное доменное имя —sql1.contoso.com
.-s
: имя службы, используемое для создания имен субъектов-служб. В этом примере имя службы SQL Server —MSSQLSvc
.--password
: пароль привилегированной учетной записи пользователя Active Directory, созданной ранее.-e
или--enctype
: типы шифрования для записи keytab. Используйте разделенный запятыми список значений. Если это не указано, будет представлен интерактивный запрос.
Можно выбрать более одного типа шифрования, если узел и домен поддерживают тип шифрования. В этом примере вы можете выбрать
aes256-cts-hmac-sha1-96
иaes128-cts-hmac-sha1-96
. Тем не менее следует избегатьarcfour-hmac
в рабочей среде, так как она имеет слабое шифрование.Если вы хотите выбрать тип шифрования без запроса, можно указать выбранный тип шифрования с помощью аргумента
-e
в приведенной выше команде. Для получения дополнительных сведений о параметрахadutil keytab
выполните следующую команду:adutil keytab createauto --help
Добавьте запись в keytab для имени субъекта и пароля, который SQL Server использует для подключения к Active Directory:
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password 'P@ssw0rd'
-k
: Путь к созданиюmssql.keytab
файла.-p
: субъект, добавляемый в keytab.
adutil keytab [ create | autocreate ]
не перезаписывает предыдущие файлы. Новые записи просто добавляются в существующий файл.Убедитесь, что создаваемый файл keytab принадлежит пользователю
mssql
, и только у пользователяmssql
есть доступ к нему для чтения и записи. Вы можете выполнитьchown
следующие команды иchmod
команды:chown mssql /var/opt/mssql/secrets/mssql.keytab chmod 440 /var/opt/mssql/secrets/mssql.keytab
Настройка SQL Server для использования файла keytab
Выполните приведенные ниже команды, чтобы настроить SQL Server для использования ключа, созданного на предыдущем шаге, и задайте привилегированную учетную запись Active Directory, созданную ранее. В нашем примере имя пользователя — sqluser
.
/opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
/opt/mssql/bin/mssql-conf set network.privilegedadaccount sqluser
Перезапуск SQL Server
Чтобы перезапустить службу SQL Server, выполните следующую команду:
sudo systemctl restart mssql-server
Создание имен входа SQL Server на основе Active Directory в Transact-SQL
Подключение sql Server и выполните следующие команды, чтобы создать имя входа, чтобы убедиться, что он указан.
CREATE LOGIN [contoso\privilegeduser] FROM WINDOWS;
SELECT name FROM sys.server_principals;
Подключение в SQL Server с помощью проверки подлинности Active Directory
Чтобы подключиться с помощью SSMS или Azure Data Studio, войдите в SQL Server с учетными данными Windows.
Для подключения к SQL Server с использованием проверки подлинности Windows можно также использовать такое средство, как sqlcmd.
sqlcmd -E -S 'sql1.contoso.com'
Связанный контент
- Общие сведения о проверке подлинности Active Directory для SQL Server на Linux и в контейнерах
- Устранение неполадок при проверке подлинности Active Directory для SQL Server на Linux и в контейнерах
- Присоединение SQL Server на узле Linux к домену Active Directory
- Настройка проверки подлинности Active Directory для контейнеров SQL Server на Linux
- Смена файлов keytab для SQL Server на Linux
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по