Присоединение SQL Server на узле Linux к домену Active Directory

Применимо к:SQL Server — Linux

В этой статье приведены общие рекомендации по присоединению хост-компьютера SQL Server Linux к домену Active Directory. Доступно два метода: использование встроенного пакета SSSD или сторонних поставщиков Active Directory. Примерами сторонних продуктов для присоединения к домену являются PowerBroker Identity Services (PBIS), One Identity и Centrify. Это руководство содержит инструкции по проверке конфигурации Active Directory. Однако он не предназначен для предоставления инструкций по присоединению компьютера к домену при использовании сторонних служебных программ.

Необходимые компоненты

Перед настройкой проверки подлинности Active Directory необходимо настроить контроллер домена Active Directory в сети Windows. Затем присоедините SQL Server на узле Linux к домену Active Directory.

Примеры шагов, описанных в этой статье, предназначены только для руководства и ссылаются только на операционные системы Ubuntu 16.04, Red Hat Enterprise Linux (RHEL) 7.x и SUSE Linux Enterprise Server (SLES) 12. Фактические шаги могут немного отличаться в вашей среде в зависимости от того, как настроена общая среда и версия операционной системы. Например, Ubuntu 18.04 использует netplan, а Red Hat Enterprise Linux (RHEL) 8.x использует nmcli среди других средств для управления и настройки сети. Рекомендуется привлечь системных и доменных администраторов для вашей среды для конкретных инструментов, настройки, настройки и любых необходимых неполадок.

Примечание.

Сведения о настройке Active Directory с более новыми версиями Ubuntu, RHEL или SLES см. в руководстве. Использование adutil для настройки проверки подлинности Active Directory с помощью SQL Server на Linux.

Обратный DNS (rDNS)

При настройке компьютера под управлением Windows Server в качестве контроллера домена может не быть зоны rDNS по умолчанию. Убедитесь, что соответствующая зона rDNS существует как для контроллера домена, так и ДЛЯ IP-адреса компьютера Linux, который будет работать под управлением SQL Server.

Также проверьте существование записи типа PTR, указывающей на контроллеры домена.

Проверка подключения к контроллеру домена

Убедитесь, что вы можете связаться с контроллером домена как по короткому, так и по полному доменному имени, а также с помощью имени узла контроллера домена. IP-адрес контроллера домена также должен разрешаться в полное доменное имя контроллера домена:

ping contoso
ping contoso.com
ping dc1.contoso.com
nslookup <IP address of dc1.contoso.com>

Совет

В этом руководстве используются contoso.com и CONTOSO.COM в качестве примеров доменных и доменных имен соответственно. Он также используется DC1.CONTOSO.COM в качестве примера полного доменного имени контроллера домена. Эти имена нужно заменить собственными значениями.

Если любая из этих проверок имен завершается ошибкой, обновите список поиска доменов. В следующих разделах приведены инструкции для Ubuntu, Red Hat Enterprise Linux (RHEL) и SUSE Linux Enterprise Server (SLES) соответственно.

Ubuntu 16.04

  1. Измените /etc/network/interfaces файл, чтобы домен Active Directory был в списке поиска домена:

    # The primary network interface
    auto eth0
    iface eth0 inet dhcp
    dns-nameservers <Domain controller IP address>
    dns-search <Active Directory domain name>
    

    Примечание.

    Сетевой интерфейс (eth0) может отличаться для разных компьютеров. Чтобы узнать, какой из них вы используете, выполните команду ifconfig. Затем скопируйте интерфейс, имеющий IP-адрес и переданные и полученные байты.

  2. После изменения этого файла перезапустите сетевую службу.

    sudo ifdown eth0 && sudo ifup eth0
    
  3. Затем проверка, что файл /etc/resolv.conf содержит строку, как показано в следующем примере:

    search contoso.com com
    nameserver <Domain controller IP address>
    

Ubuntu 18.04

  1. Измените файл [sudo vi /etc/netplan/******.yaml], чтобы ваш домен Active Directory находился в списке поиска доменов.

    network:
      ethernets:
        eth0:
                dhcp4: true
    
                dhcp6: true
                nameservers:
                        addresses: [<Domain controller IP address>]
                        search: [<Active Directory domain name>]
      version: 2
    

    Примечание.

    Сетевой интерфейс (eth0) может отличаться для разных компьютеров. Чтобы узнать, какой из них вы используете, выполните команду ifconfig. Затем скопируйте интерфейс, имеющий IP-адрес и переданные и полученные байты.

  2. После изменения этого файла перезапустите сетевую службу.

    sudo netplan apply
    
  3. Затем проверка, что файл /etc/resolv.conf содержит строку, как показано в следующем примере:

    search contoso.com com
    nameserver <Domain controller IP address>
    

RHEL 7.x

  1. Измените /etc/sysconfig/network-scripts/ifcfg-eth0 файл, чтобы домен Active Directory был в списке поиска домена. Или измените другой файл конфигурации интерфейса соответствующим образом.

    PEERDNS=no
    DNS1=<Domain controller IP address>
    DOMAIN="contoso.com com"
    
  2. После изменения этого файла перезапустите сетевую службу.

    sudo systemctl restart network
    
  3. Теперь проверка, что файл /etc/resolv.conf содержит строку, как показано в следующем примере:

    search contoso.com com
    nameserver <Domain controller IP address>
    
  4. Если вы по-прежнему не можете выполнить связь с контроллером домена, найдите полное доменное имя и IP-адрес контроллера домена. Примером доменного имени является DC1.CONTOSO.COM. Добавьте следующую запись /etc/hostsв:

    <IP address> DC1.CONTOSO.COM CONTOSO.COM CONTOSO
    

SLES 12

  1. Измените /etc/sysconfig/network/config файл, чтобы IP-адрес контроллера домена использовался для DNS-запросов, и домен Active Directory находится в списке поиска домена:

    NETCONFIG_DNS_STATIC_SEARCHLIST=""
    NETCONFIG_DNS_STATIC_SERVERS="<Domain controller IP address>"
    
  2. После изменения этого файла перезапустите сетевую службу.

    sudo systemctl restart network
    
  3. Затем проверка, что файл /etc/resolv.conf содержит строку, как показано в следующем примере:

    search contoso.com com
    nameserver <Domain controller IP address>
    

Присоединение к домену Active Directory

После проверки базовой конфигурации и подключения к контроллеру домена существует два варианта присоединения хост-компьютера SQL Server Linux к контроллеру домена Active Directory:

Вариант 1. Использование пакета SSSD для присоединения к домену Active Directory

Этот метод присоединяет узел SQL Server к домену Active Directory с помощью областей и пакетов sssd .

Примечание.

Это предпочтительный способ присоединения узла Linux к контроллеру домена Active Directory.

Для присоединение узла SQL Server к домену Active Directory сделайте следующее.

  1. Используйте область для присоединения хост-компьютера к домен Active Directory. Сначала нужно установить пакеты realmd и клиента Kerberos на хост-компьютере SQL Server с помощью диспетчера пакетов дистрибутива Linux.

    RHEL:

    sudo yum install realmd krb5-workstation
    

    SLES 12:

    Эти действия относятся к SLES 12.

    sudo zypper addrepo https://download.opensuse.org/repositories/network/SLE_12/network.repo
    sudo zypper refresh
    sudo zypper install realmd krb5-client sssd-ad
    

    Ubuntu 16.04:

    sudo apt-get install realmd krb5-user software-properties-common python-software-properties packagekit
    

    Ubuntu 18.04:

    sudo apt-get install realmd krb5-user software-properties-common python3-software-properties packagekit
    sudo apt-get install adcli libpam-sss libnss-sss sssd sssd-tools
    
  2. Если при установке пакета клиента Kerberos запрашивается имя области, введите имя домена прописными буквами.

  3. Убедившись, что DNS настроена правильно, присоединитесь к домену с помощью указанной ниже команды. Для присоединения нового компьютера к домену необходимо выполнить проверку подлинности с помощью учетной записи Active Directory, которая имеет достаточные привилегии в Active Directory. Эта команда создает новую учетную запись компьютера в Active Directory, создает /etc/krb5.keytab файл ключей узла, настраивает домен в /etc/sssd/sssd.confи обновляется /etc/krb5.conf.

    Из-за проблемы с realmd сначала укажите для узла компьютера полное доменное имя, а не имя компьютера. В противном случае realmd может не создать все необходимые имена субъекта-службы для компьютера, а записи DNS не будут обновляться автоматически, даже если контроллер домена поддерживает динамические обновления DNS.

    sudo hostname <old hostname>.contoso.com
    

    После выполнения приведенной выше команды файл /etc/hostname должен содержать <прежнее имя узла>.contoso.com.

    sudo realm join contoso.com -U 'user@CONTOSO.COM' -v
    

    Должно появиться сообщение Successfully enrolled machine in realm.

    В следующей таблице перечислены некоторые сообщения об ошибках, которые вы можете получить, и рекомендации по их устранению.

    Сообщение об ошибке Рекомендация
    Necessary packages are not installed Установите эти пакеты с помощью диспетчера пакетов дистрибутива Linux, прежде чем снова выполнять команду realm join.
    Insufficient permissions to join the domain Выясните у администратора домена, достаточно ли у вас разрешений для присоединения компьютеров Linux к домену.
    KDC reply did not match expectations Возможно, вы не указали правильное имя области для пользователя. В именах областей учитывается регистр, обычно используются прописные буквы, и их можно определить с помощью команды realm discover contoso.com.

    SQL Server использует SSSD и NSS для сопоставления учетных записей пользователей и групп с идентификаторами безопасности (SID). SSSD необходимо настроить и запустить для SQL Server, чтобы успешно создать имена входа Active Directory. realmd обычно выполняет это автоматически при присоединении к домену, но в некоторых случаях это нужно делать отдельно.

    Дополнительные сведения см. в статьях о настройке SSSD вручную и настройке NSS для работы с SSSD.

  4. Убедитесь, что теперь вы можете собирать сведения о пользователе из домена и получить билет Kerberos от имени этого пользователя. В следующем примере для этого используются команды id, kinit и klist.

    id user@contoso.com
    
    uid=1348601103(user@contoso.com) gid=1348600513(domain group@contoso.com) groups=1348600513(domain group@contoso.com)
    
    kinit user@CONTOSO.COM
    
    Password for user@CONTOSO.COM:
    
    klist
    Ticket cache: FILE:/tmp/krb5cc_1000
    Default principal: user@CONTOSO.COM
    

    Примечание.

    Если id user\@contoso.com возвращается, убедитесь, No such userчто служба SSSD успешно запущена, выполнив команду sudo systemctl status sssd. Если служба запущена и вы по-прежнему видите ошибку, попробуйте включить подробное ведение журнала для SSSD. Дополнительные сведения см. в разделе об устранении неполадок SSSD в документации по Red Hat.

    Если kinit user\@CONTOSO.COM возвращается, убедитесь, KDC reply didn't match expectations while getting initial credentialsчто вы указали область в верхнем регистре.

Дополнительные сведения см. в разделе об обнаружении доменов удостоверений и присоединении к ним в документации по Red Hat.

Вариант 2. Использование сторонних служебных программ поставщика OpenLDAP

Вы можете использовать сторонние служебные программы, такие как PBIS, VAS или Centrify. В этой статье не рассматриваются шаги для каждой отдельной служебной программы. Прежде чем продолжить, нужно воспользоваться одной из этих служебных программ, чтобы присоединить узел Linux для SQL Server к домену.

SQL Server не использует код или библиотеку сторонних интеграторов для любых запросов, связанных с Active Directory. SQL Server всегда запрашивает Active Directory с помощью вызовов библиотеки OpenLDAP непосредственно в этой настройке. Сторонние интеграторы используются только для присоединения узла Linux к домену Active Directory, а SQL Server не имеет прямого взаимодействия с этими служебными программами.

Важно!

Ознакомьтесь с рекомендациями по использованию параметра конфигурации mssql-confnetwork.disablesssd в разделе "Дополнительные параметры конфигурации" статьи "Использование проверки подлинности Active Directory с SQL Server на Linux".

Убедитесь, что настроено /etc/krb5.conf правильно. Для большинства сторонних поставщиков Active Directory эта конфигурация выполняется автоматически. Однако проверка /etc/krb5.conf для следующих значений, чтобы предотвратить любые будущие проблемы:

[libdefaults]
default_realm = CONTOSO.COM

[realms]
CONTOSO.COM = {
}

[domain_realm]
contoso.com = CONTOSO.COM
.contoso.com = CONTOSO.COM

Проверка правильности настройки обратной DNS

Следующая команда должна возвращать полное доменное имя узла, на котором выполняется SQL Server. Например, SqlHost.contoso.com.

host <IP address of SQL Server host>

Выходные данные этой команды должны быть похожи на <reversed IP address>.in-addr.arpa domain name pointer SqlHost.contoso.com. Если эта команда не возвращает полное доменное имя узла или полное доменное имя, добавьте обратную запись DNS для узла SQL Server на Linux на DNS-сервер.

Следующий шаг

В этой статье описано, как настроить SQL Server на хост-компьютере Linux с проверкой подлинности Active Directory. Чтобы завершить настройку SQL Server на Linux для поддержки учетных записей Active Directory, выполните следующие инструкции.