Поворот ключевых элементов для 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.privilegedadaccount
значение 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 запросите текущее число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-conf setup-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:
— это путь к текущему ключу, который используется SQL Server и задается с помощью параметра network.kerberoskeytabfile
в mssql.conf
файле.
-H:
— полное доменное имя узла SQL Server.
-p:
— это порт, на который настроена служба SQL Server для прослушивания в первой команде. Во второй команде -p
отображается network.privilegedadaccount
, для которой вы собираетесь обновить пароль.
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
записи, которая владеет именами субъектов-служб 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 и контейнеров