Поворот ключевых элементов для SQL Server на Linux
Область применения: SQL Server — Linux
На основе рекомендаций по безопасности организации может потребоваться регулярно менять пароль для учетной записи Windows Active Directory, предоставленной как network.privilegedadaccount в mssql.conf, или любой другой учетной записи, которая владеет именами субъектов-служб (SPN) для службы SQL Server. Поддерживаемый способ изменения пароля к учетной записи описан в этой статье. Изменение пароля вступает в силу без необходимости перезапускать службу SQL Server на Linux.
Средство adutil используется для обновления ключа. Команда adutil должна выполняться с компьютера, присоединенного к домену. Дополнительные сведения о adutil и о том, как скачать средство, см. в разделе "Введение в adutil — служебная программа Active Directory".
Важно обновить новый пароль в keytab следующим номером kvno , прежде чем обновлять его в Active Directory. Использование следующего номера kvno позволяет избежать перезапуска службы SQL Server после изменения пароля. Если сначала обновить пароль в Active Directory, а затем изменить ключ, необходимо перезапустить службу SQL Server, чтобы убедиться, что проверка подлинности Active Directory работает правильно.
Сценарий смены keytab
Рассмотрим пример. Проверка подлинности Active Directory уже включена для SQL Server на Linux. В файле mssql.conf вы установили для network.privilegedadaccoun значение sqluser
. Учетная запись sqluser@CONTOSO.COM
уже создана в Active Directory, а ключи также были созданы в расположении /var/opt/mssql/secrets/mssql.keytab
по умолчанию. Теперь необходимо изменить пароль для sqluser@CONTOSO.COM
. Ниже приведены шаги, которые необходимо выполнить.
Установите adutil на компьютер, присоединенный к домену.
Получите или продлите билет предоставления билета (TGT) Kerberos с помощью команды
kinit
. Для выполнения командыkinit
используйте привилегированную учетную запись. Учетная запись должна иметь разрешение на подключение к домену, а также возможность создавать учетные записи и имена субъектов-служб в домене. В этом случае мы используем учетную запись privilegeduser@CONTOSO.COM , которая имеет разрешения на создание учетных записей и имен субъектов-служб в нашем домене с именем CONTOSO.COM.kinit privilegeduser@CONTOSO.COM
Когда вы выполните
kinit
, чтобы получить или обновить TGT, запросите текущий номер kvno учетной записи network.privilegedadaccount. В этом случае он выглядит так:sqluser@CONTOSO.COM
.kvno sqluser@CONTOSO.COM
Вы можете повернуть ключ с помощью mssql-conf или повернуть ключ вручную с помощью adutil.
Смена ключа с помощью mssql-conf
Вы можете установить adutil и интегрировать его с mssql-conf, что означает, что вы можете повернуть keytab с помощью mssql-conf.
Войдите в качестве корневого пользователя и переключитесь на
mssql
пользователя.su mssql
Получите или продлите билет предоставления билета (TGT) Kerberos с помощью команды
kinit
. Для выполнения командыkinit
используйте привилегированную учетную запись. Учетная запись должна иметь разрешение на подключение к домену, а также возможность создавать учетные записи и имена субъектов-служб в домене. В этом случае мы используем учетную запись privilegeduser@CONTOSO.COM , которая имеет разрешения на создание учетных записей и имен субъектов-служб в нашем домене с именем CONTOSO.COM.kinit privilegeduser@CONTOSO.COM
Выполните команду mssql-conf, указав ключ SQL Server и сведения о network.privilegedadaccount. В этом примере
privilegedadaccount
используетсяsqluser
../mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno'
При появлении запроса на ввод пароля введите новый пароль, который вы планируете использовать. Параметр
--use-next-kvno
выделяет текущий квно + 1.Необязательно. Вы также можете использовать
--kvno
параметр с командой mssql-confsetup-ad-keytab
для предоставления определенного квно. Сначала необходимо убедиться, что вы получите текущий квно для пользователя, а затем обновите новый квно соответственно, который будет текущим квно + 1.Вы можете перечислить ключи keytab с помощью команды:
klist -kte /var/opt/mssql/secrets/mssql.keytab
Вы заметите, что ключ обновляется следующим квно для записей пользователя и участника-службы.
Теперь вы можете изменить пароль для
sqluser
пользователя. Рассмотрим пример.Внимание
Если вам будет предложено перезапустить SQL Server на этом шаге, его можно игнорировать. Не забудьте также изменить пароль в Active Directory.
bash-4.4$ kinit privilegedaccount@CONTOSO.COM Password for privilegedaccount@CONTOSO.COM: bash-4.4$ ./mssql-conf setup-ad-keytab /var/opt/mssql/secrets/mssql.keytab sqluser --use-next-kvno sqluser@contoso.com's password: Confirm sqluser@contoso.com's password: SQL Server needs to be restarted in order to adopt the new AD configuration, please run 'systemctl restart mssql-server.service'. bash-4.4$ 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) 5 12/30/2021 20:06:34 sqluser@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1.contoso.com@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1:1433@CONTOSO.COM (aes256-cts-hmac-sha1-96) 5 12/30/2021 20:06:34 MSSQLSvc/sql1@CONTOSO.COM (aes256-cts-hmac-sha1-96)
Смена ключа вручную с помощью adutil
Если вы хотите вручную обновить keytab с помощью adutil, выполните следующие действия.
Обновление keytab с помощью adutil добавляет запись в текущую keytab. Например, если номер kvno, полученный после выполнения предыдущей команды, — 2
, при обновлении keytab используйте номер kvno 3
. Ниже приведены команды adutil , которые необходимо выполнить.
- Измените номер порта (-p), имя узла (-H), путь к keytab (-k) и номер квно, чтобы соответствовать вашей среде.
adutil keytab createauto -k /var/opt/mssql/secrets/mssql.keytab -p 1433 -H mssql.contoso.com --password '<newpassword>' -s MSSQLSvc --kvno 3
adutil keytab create -k /var/opt/mssql/secrets/mssql.keytab -p sqluser --password '<newpassword>' --kvno 3
-k — путь к текущему файлу keytab, который используется SQL Server и задается с помощью параметра network.kerberoskeytabfile в файле mssql.conf.
-H — полное доменное имя узла SQL Server.
-p — порт, на ожидание передачи данных через который настроена служба SQL Server с помощью первой команды. Во второй команде -p представляет network.privilegedadaccount , для которой вы собираетесь обновить пароль.
kvno — значение должно быть текущим номером kvno + 1. Текущее значение kvno можно получить, выполнив действия из шага 3.
После выполнения приведенных выше команд необходимо указать тип шифрования для записей keytab. Убедитесь, что выбрали подходящий тип для своей среды.
Просмотр записей keytab
После обновления файла keytab в нем должны отобразиться записи для kvno 3
(новый) и kvno 2
(старый) для тех же учетной записи sqluser@CONTOSO.COM
и имен SPN. Чтобы проверить записи в keytab, выполните следующую klist
команду:
klist -kte /var/opt/mssql/secrets/mssql.keytab
Изменение пароля учетной записи в Active Directory
Последний шаг — обновление пароля к network.privilegedadaccount или учетной записи, которой принадлежат имена SPN SQL Server в Windows Active Directory. В предыдущем сценарии необходимо обновить пароль sqluser@CONTOSO.COM
в Active Directory. Измените пароль на <newpassword>
указанный на шаге 3 в предыдущем разделе. Проверка подлинности Active Directory должна продолжать работать и без необходимости перезапускать службу SQL Server.
Связанный контент
- Настройка проверки подлинности Active Directory в SQL Server на Linux с помощью adutil
- Настройка проверки подлинности Active Directory для контейнеров SQL Server на Linux
- Общие сведения о проверке подлинности Active Directory для SQL Server на Linux и в контейнерах
- Устранение неполадок при проверке подлинности Active Directory для SQL Server на Linux и в контейнерах