Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: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 '<password>'Вы можете указать имя учетной записи с помощью различающегося имени (
--distname), как показано ранее, или использовать имя подразделения. В случае, если указаны как имя организационного подразделения (--ou), так и отличительное имя, имя подразделения имеет приоритет. Для получения дополнительных сведений можно выполнить следующую команду:adutil user create --helpВнимание
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
- Использование флага пароля:
Зарегистрируйте SPN (имена субъектов-служб) в ранее созданном субъекте. Необходимо использовать полное доменное имя (FQDN) компьютера. В этом учебнике используется порт SQL Server по умолчанию 1433. В вашем случае номер порта может быть другим.
adutil spn addauto -n sqluser -s MSSQLSvc -H sql1.contoso.com -p 1433-
addautoавтоматически создает SPN, если для учетной записиkinitпредоставлены достаточные привилегии. -
-n: имя учетной записи для назначения SPN. -
-s: имя службы, используемое для создания имен SPN. В этом случае это относится к службе SQL Server, поэтому имя службы —MSSQLSvc. -
-H: хост, используемый для создания имен субъектов-служб (SPN). Если это не указано, используется полное доменное имя локального узла. В этом случае имя узла —sql1, а полное доменное имя —sql1.contoso.com. -
-p: порт для генерации имен субъектов обслуживания (SPN). Если это не указано, SPN создаются без порта. Подключения SQL работают только в этом случае, если экземпляр SQL Server прослушивает порт по умолчанию 1433.
-
Создать keytab-файл службы SQL Server с помощью mssql-conf
Вы можете установить adutil и интегрировать его с mssql-conf, чтобы напрямую с помощью mssql-conf создать и настроить кейтаб. Этот метод предпочтителен для создания файла ключей службы SQL Server. В противном случае можно создать файл ключа службы SQL Server вручную.
Предварительные условия
Убедитесь, что
mssqlпользователь владеет файлом/var/opt/mssql/mssql.conf, а неroot. В противном случае необходимо выполнить командыmssql-confс помощьюsudo.На контроллере домена в параметрах Active Directory для
network.privilegedadaccountучетной записи (в этих примерахsqluser@CONTOSO.COM) включите следующие параметры на вкладке "Учетная запись " в разделе параметров учетной записи:- Эта учетная запись поддерживает 128-разрядное шифрование Kerberos AES
- Данная учетная запись поддерживает 256-битовое шифрование Kerberos AES
Создание файла keytab
После создания пользователя и имени основной службы (SPNs) можно создать 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 '<password>' -s MSSQLSvcВнимание
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
Возможны следующие варианты командной строки:
-
-k: путь, где создается файлmssql.keytab. В предыдущем примере каталог/var/opt/mssql/secrets/уже должен существовать на узле. -
-p: порт, используемый для генерации SPN. Если не указано, SPN (имена субъектов-служб) создаются без указания порта. -
-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 '<password>'Внимание
Пароль должен соответствовать политике паролей по умолчанию SQL Server. По умолчанию пароль должен быть не короче восьми символов и содержать три вида символов из следующих: прописные буквы, строчные буквы, десятичные цифры, специальные символы. Пароли могут иметь длину до 128 символов. Рекомендуется использовать максимально длинные и сложные пароли.
-
-k: Путь, по которому вы хотите создать файлmssql.keytab. -
-p: принципал, добавляемый в keytab.
adutil keytab [ create | autocreate ]не перезаписывает предыдущие файлы; он просто добавляет данные в файл, если файл уже существует.-
Убедитесь, что
mssqlпользователь владеет созданным keytab, и что только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
Используйте учетные данные Windows для подключения к экземпляру SQL Server с помощью SQL Server Management Studio (SSMS).
Вы также можете использовать средство, например служебную программу sqlcmd , для подключения к экземпляру SQL Server с помощью проверки подлинности Windows.
sqlcmd -E -S 'sql1.contoso.com'
Связанный контент
- Общие сведения о проверке подлинности Active Directory для SQL Server на Linux и контейнеров
- Устранение неполадок проверки подлинности Active Directory для SQL Server на Linux и в контейнерах
- Проверка подлинности Active Directory для SQL Server на Linux
- Руководство по настройке проверки подлинности Active Directory с помощью контейнеров SQL Server на Linux
- Поворот ключевых элементов для SQL Server на Linux