'Пользователь или группа Windows NT не найдены' при создании учетных записей Windows на SQL Server 2019 в Linux
Мне нужно включить аутентификацию Active Directory на SQL Server 2019, работающем на CentOS 7.
На сервере centos-1 уже есть sssd, предварительно настроенный для аутентификации AD. Однако я следовал официальному руководству Microsoft о том, как включить проверку подлинности Windows на SQL Server в Linux:
- Добавлен Linux сервер в домен с
user-1@centos-1:~$ sudo realm join SD.DOMAIN.COM -U 'sduserwithpermissions@sd.domain.com' -v
Сервер может запрашивать домен
user-1@centos-1:~$ id sql_server_account
uid=10608(sql_server_account) gid=13502(service_accounts)
- Создано SPN для учетной записи службы, используемой для запуска MSSQL в Windows.
setspn -A MSSQLSvc/centos-1.sd.domain.com:1433 sql_server_account
setspn -A MSSQLSvc/CENTOS-1:1433 sql_server_account
- Создал файл keytab и скопировал его на машину centos-1 с SQL Server
ktpass /princ MSSQLSvc/centos-1.sd.domain.com:1433@SD.DOMAIN.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser SD\sql_server_account /out mssql.keytab -setpass -setupn /kvno 2 /pass <passw>
ktpass /princ MSSQLSvc/centos-1.sd.domain.com:1433@SD.DOMAIN.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser SD\sql_server_account /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno 2 /pass <passw>
ktpass /princ sql_server_account@SD.DOMAIN.COM /ptype KRB5_NT_PRINCIPAL /crypto aes256-sha1 /mapuser SD\svc_sql_server_dev /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno 2 /pass <passw>
ktpass /princ sql_server_account@SD.DOMAIN.COM /ptype KRB5_NT_PRINCIPAL /crypto rc4-hmac-nt /mapuser SD\svc_sql_server_dev /in mssql.keytab /out mssql.keytab -setpass -setupn /kvno 2 /pass <passw>
- Настроил MSSQL для использования keytab
user-1@centos-1:~$ sudo mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
user-1@centos-1:~$ sudo service mssql-server restart
Хотя AD может аутентифицировать пользователей, подключающихся к серверу, SQL Server не может создавать учетные записи Windows. Это говорит
Windows NT user or group 'SD\db_users' not found. Check the name again.
sssd.log говорит, что
(Mon May 24 19:45:11 2020) [sssd[be[SD.DOMAIN.COM]]] [dp_get_account_info_handler] (0x0200): Got request for [0x12][BE_REQ_USER_AND_GROUP][name=sd\db_users@sd.domain.com]
(Mon May 24 19:45:11 2020) [sssd[be[SD.DOMAIN.COM]]] [sss_domain_get_state] (0x1000): Domain SD.DOMAIN.COM is Active
(Mon May 24 19:45:11 2020) [sssd[be[SD.DOMAIN.COM]]] [sdap_get_groups_next_base] (0x0400): Searching for groups with base [dc=sd,dc=domain,dc=com]
(Mon May 24 19:45:11 2020) [sssd[be[SD.DOMAIN.COM]]] [sdap_get_generic_ext_step] (0x0400): calling ldap_search_ext with [(&(cn=sd\5cdb_users)(objectClass=group)(cn=*)(&(gidNumber=*)(!(gidNumber=0))))][dc=sd,dc=domain,dc=com].
(Mon May 24 19:45:11 2020) [sssd[be[SD.DOMAIN.COM]]] [sdap_get_generic_ext_step] (0x1000): Requesting attrs: [objectClass]
(Mon May 24 19:45:11 2020) [sssd[be[SD.DOMAIN.COM]]] [sdap_get_groups_process] (0x0400): Search for groups, returned 0 results.
(Mon May 24 19:45:11 2020) [sssd[be[SD.DOMAIN.COM]]] [sysdb_search_object_attr] (0x0400): No such entry.
(Mon May 24 19:45:11 2020) [sssd[be[SD.DOMAIN.COM]]] [sysdb_delete_by_sid] (0x0400): search by sid did not return any results.
Я считаю, что проблема в том, что mssql-server передает sd\db_users
полное имя учетной записи без исключения префикса домена sd
.
Есть ли параметр или способ разрешить MSSQL использовать AD в моей настройке?
1 ответ
Исправлено, добавив эту строку в /etc/sssd/sssd.conf под [domain/SD.DOMAIN.COM]
re_expression = (\?(?P[^\]+$))
В re_expression
является
Регулярное выражение по умолчанию, описывающее, как разобрать строку, содержащую имя пользователя и домен, на эти компоненты. Для каждого домена можно настроить индивидуальное регулярное выражение. Для некоторых поставщиков идентификаторов также есть регулярные выражения по умолчанию.