'Пользователь или группа Windows NT не найдены' при создании учетных записей Windows на SQL Server 2019 в Linux

Мне нужно включить аутентификацию Active Directory на SQL Server 2019, работающем на CentOS 7.

На сервере centos-1 уже есть sssd, предварительно настроенный для аутентификации AD. Однако я следовал официальному руководству Microsoft о том, как включить проверку подлинности Windows на SQL Server в Linux:

  1. Добавлен 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) 
  1. Создано SPN для учетной записи службы, используемой для запуска MSSQL в Windows.
setspn -A MSSQLSvc/centos-1.sd.domain.com:1433 sql_server_account
setspn -A MSSQLSvc/CENTOS-1:1433 sql_server_account
  1. Создал файл 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>
  1. Настроил 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 является

Регулярное выражение по умолчанию, описывающее, как разобрать строку, содержащую имя пользователя и домен, на эти компоненты. Для каждого домена можно настроить индивидуальное регулярное выражение. Для некоторых поставщиков идентификаторов также есть регулярные выражения по умолчанию.

Другие вопросы по тегам