'Windows NT user or group not found' при создании Windows логинов на SQL Server 2019 на Linux - PullRequest
1 голос
/ 25 мая 2020

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

На сервере centos-1 alresdy sssd предварительно настроен для аутентификации AD. Тем не менее, я следовал официальному руководству Microsoft о том, как включить аутентификацию Windows на SQL сервере на 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) 
Создано SPN для учетной записи службы, используемой для запуска MS SQL в 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 Сервером
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>
Настроен MS SQL для использования 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 Сервер не может создавать 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.

Я считаю, что проблема в том, что ms sql -server передает sd\db_users полное имя учетной записи, не пропуская префикс домена sd.

Есть ли параметр или способ разрешить MS SQL использовать AD в моей настройке?

1 Ответ

0 голосов
/ 26 мая 2020

Исправлено, добавив эту строку в /etc/sssd/sssd.conf под [domain/SD.DOMAIN.COM]

re_expression = (\? (? P [^ \] + $))

re_expression - это

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

...