Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к: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 символов. Рекомендуется использовать максимально длинные и сложные пароли.
- Использование флага пароля:
Зарегистрируйте имена субъектов-служб в созданном ранее субъекте. Необходимо использовать полное доменное имя (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 вручную.
Необходимые компоненты
Убедитесь, что
mssqlпользователь владеет файлом/var/opt/mssql/mssql.conf, а неroot. В противном случае необходимо выполнить команды mssql-conf с помощьюsudo.На контроллере домена в параметрах Active Directory для
network.privilegedadaccountучетной записи (в этих примерахsqluser@CONTOSO.COM) включите следующие параметры на вкладке "Учетная запись " в разделе параметров учетной записи:- Эта учетная запись поддерживает 128-разрядное шифрование Kerberos AES
- Данная учетная запись поддерживает 256-битовое шифрование Kerberos AES
Создание файла keytab
После создания пользователя и имени участника-службы можно создать 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: порт, используемый для создания имен субъектов-служб. Если это не указано, имена субъектов-служб создаются без порта. -
-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