Linux 호스트의 SQL Server를 Active Directory 도메인에 가입

적용 대상:SQL Server - Linux

이 문서에서는 SQL Server Linux 호스트 머신을 Active Directory 도메인에 조인하는 방법에 관한 일반 지침을 제공합니다. 기본 제공 SSSD 패키지를 사용하거나 타사 Active Directory 공급자를 사용하는 두 가지 방법이 있습니다. 타사 도메인 가입 제품의 예로는 PBIS(PowerBroker Identity Services), One IdentityCentrify가 있습니다. 이 가이드에는 Active Directory 구성을 확인하는 단계가 포함되어 있습니다. 그러나 타사 유틸리티를 사용하는 경우 컴퓨터를 할 일기본 조인하는 방법에 대한 지침을 제공하기 위한 것은 아닙니다.

필수 조건

Active Directory 인증을 구성하려면 먼저 네트워크에서 Active Directory 도메인 컨트롤러인 Windows를 설정해야 합니다. 그런 다음 SQL Server on Linux 호스트를 Active Directory 도메인에 가입시킵니다.

이 문서에서 설명하는 샘플 단계는 지침에만 해당하며 Ubuntu 16.04, RHEL(Red Hat Enterprise Linux) 7.x 및 SLES(SUSE Linux Enterprise Server) 12 운영 체제를 참조하세요. 실제 단계는 전체 환경이 구성된 방식과 운영 체제 버전에 따라 환경이 약간 다를 수 있습니다. 예를 들어 Ubuntu 18.04는 넷플랜을 사용하고 RHEL(Red Hat Enterprise Linux) 8.x는 nmcli를 사용하여 네트워크를 관리하고 구성합니다. 특정 도구, 구성, 사용자 지정 및 필요한 문제 해결을 위해 사용자 환경에 대한 시스템 및 기본 관리자를 참여시키는 것이 좋습니다.

참고 항목

최신 버전의 Ubuntu, RHEL 또는 SLES로 Active Directory를 구성하는 방법에 대한 자세한 내용은 자습서: adutil을 사용하여 SQL Server on Linux에서 Active Directory 인증을 구성합니다.

역방향 DNS(rDNS)

Windows Server를 실행하는 컴퓨터를 할 일기본 컨트롤러로 설정하는 경우 기본적으로 rDNS 영역이 없을 수 있습니다. SQL Server를 실행할 Linux 컴퓨터의 do기본 컨트롤러 및 IP 주소 둘 다에 적용 가능한 rDNS 영역이 있는지 확인합니다.

또한 도메인 컨트롤러를 가리키는 PTR 레코드가 있는지 확인합니다.

도메인 컨트롤러의 연결 확인

도메인의 짧은 이름과 정규화된 이름을 모두 사용하고 도메인 컨트롤러의 호스트 이름을 사용하여 도메인 컨트롤러에 연결할 수 있는지 확인합니다. 도메인 컨트롤러의 IP도 도메인 컨트롤러의 FQDN에 대해 확인되어야 합니다.

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

이 자습서에서는 예제 도메인과 영역 이름으로 각각 contoso.comCONTOSO.COM을 사용합니다. 또한 DC1.CONTOSO.COM을 도메인 컨트롤러의 정규화된 도메인 이름 예제로 사용합니다. 이러한 이름을 사용자 고유의 값으로 바꾸어야 합니다.

이러한 이름 확인 중 하나라도 실패하면 도메인 검색 목록을 업데이트합니다. 다음 섹션에서는 각각 Ubuntu, RHEL(Red Hat Enterprise Linux) 및 SLES(SUSE Linux Enterprise Server)에 관한 지침을 제공합니다.

Ubuntu 16.04

  1. Active Directory 도메인이 도메인 검색 목록에 있도록 /etc/network/interfaces 파일을 편집합니다.

    # 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. Active Directory 도메인이 도메인 검색 목록에 있도록 [sudo vi /etc/netplan/******.yaml] 파일을 편집합니다.

    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. Active Directory 도메인이 도메인 검색 목록에 있도록 /etc/sysconfig/network-scripts/ifcfg-eth0 파일을 편집합니다. 또는 다른 인터페이스 구성 파일을 적절하게 편집합니다.

    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. do기본 컨트롤러를 ping할 수 없는 경우 do기본 컨트롤러의 정규화된 do기본 이름 및 IP 주소를 찾습니다. 예제 도메인 이름은 DC1.CONTOSO.COM입니다. /etc/hosts에 다음 항목을 추가합니다.

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

SLES 12

  1. 도메인 컨트롤러 IP가 DNS 쿼리에 사용되고 Active Directory 도메인이 도메인 검색 목록에 있도록 /etc/sysconfig/network/config 파일을 편집합니다.

    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 도메인 조인

이 방법에서는 realmdsssd 패키지를 사용하여 SQL Server 호스트를 Active Directory 도메인에 조인합니다.

참고

Linux 호스트를 Active Directory 도메인 컨트롤러에 조인할 때 기본적으로 사용하는 방법입니다.

다음 단계에 따라 SQL Server 호스트를 Active Directory 도메인에 조인합니다.

  1. realmd를 사용하여 호스트 머신을 Active Directory 도메인에 조인합니다. 먼저 Linux 배포판의 패키지 관리자를 사용하여 SQL Server 호스트 머신에 realmd 및 Kerberos 클라이언트 패키지를 모두 설치해야 합니다.

    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 호스트 keytab 파일을 만들고, /etc/sssd/sssd.conf에서 도메인을 구성하고, /etc/krb5.conf를 업데이트합니다.

    realmd 관련 문제로 인해 먼저 머신 호스트 이름을 머신 이름 대신 FQDN으로 설정합니다. 그러지 않으면 도메인 컨트롤러에서 동적 DNS 업데이트를 지원하는 경우에도 realmd가 머신에 필요한 일부 SPN을 만들 수 없으며 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 배포판의 패키지 관리자를 사용하여 패키지를 설치합니다.
    Insufficient permissions to join the domain Linux 머신을 도메인에 조인할 수 있는 권한이 있는지 도메인 관리자에게 확인합니다.
    KDC reply did not match expectations 사용자의 올바른 영역 이름을 지정하지 않았을 수 있습니다. 영역 이름은 대/소문자를 구분하고 대개 대문자이며 명령 영역 검색 contoso.com을 사용하여 식별할 수 있습니다.

    SQL Server는 SSSD 및 NSS를 사용하여 사용자 계정 및 그룹을 SID(보안 식별자)에 매핑합니다. SSSD가 구성되어 실행 중이어야 SQL Server가 Active Directory 로그인을 성공적으로 만들 수 있습니다. realmd 는 일반적으로 도메인 조인을 하는 중인 이 작업을 자동으로 수행하지만 경우에 따라 이 작업을 별도로 수행해야 합니다.

    자세한 내용은 SSSD를 수동으로 구성하는 방법과 SSSD를 사용하도록 NSS를 구성하는 방법을 참조하세요.

  4. 이제 도메인에서 사용자에 관한 정보를 수집할 수 있고 해당 사용자로 Kerberos 티켓을 가져올 수 있는지 확인합니다. 다음 예제에서는 이를 위해 id, kinitklist 명령을 사용합니다.

    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를 반환하는 경우 sudo systemctl status sssd 명령을 실행하여 SSSD 서비스가 시작되었는지 확인하세요. SSSD 서비스가 실행 중인데도 오류가 계속 표시되는 경우에는 SSSD의 자세한 정보 로깅을 사용하도록 설정해 보세요. 자세한 내용은 Red Hat 설명서에서 Troubleshooting SSSD(SSSD 문제 해결)에 관한 내용을 참조하세요.

    kinit user\@CONTOSO.COM에서 KDC reply didn't match expectations while getting initial credentials를 반환하는 경우 영역을 대문자로 지정했는지 확인하세요.

자세한 내용은 Red Hat 설명서에서 Discovering and Joining Identity Domains(ID 도메인 검색 및 조인)에 관한 내용을 참조하세요.

옵션 2: 타사 OpenLDAP 공급자 유틸리티 사용

PBIS, VAS 또는 Centrify와 같은 타사 유틸리티를 사용할 수 있습니다. 이 문서에서는 각 개별 유틸리티에 대한 단계를 다루지 않습니다. 계속하기 전에 먼저 이러한 유틸리티 중 하나를 사용하여 SQL Server의 Linux 호스트를 도메인에 조인해야 합니다.

SQL Server는 Active Directory 관련 쿼리에 타사 통합자의 코드 또는 라이브러리를 사용하지 않습니다. SQL Server는 항상 이 설정에서 직접 OpenLDAP 라이브러리 호출을 사용하여 Active Directory를 쿼리합니다. 타사 통합자는 Linux 호스트를 Active Directory에 조인하는 데만 사용되며기본 SQL Server는 이러한 유틸리티와 직접 통신하지 않습니다.

Important

mssql-confnetwork.disablesssd 구성 옵션 사용에 관한 권장 사항은 Use Active Directory authentication with SQL Server on Linux(SQL Server on Linux에서 Active Directory 인증 사용) 문서의 Additional configuration options(추가 구성 옵션) 섹션을 참조하세요.

/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를 실행하는 호스트의 FQDN(정규화된 도메인 이름)을 반환해야 합니다. 예제는 SqlHost.contoso.com입니다.

host <IP address of SQL Server host>

이 명령의 출력은 <reversed IP address>.in-addr.arpa domain name pointer SqlHost.contoso.com과 비슷해야 합니다. 이 명령이 호스트의 FQDN을 반환하지 않거나 FQDN이 잘못된 경우 SQL Server on Linux 호스트에 대한 역방향 DNS 항목을 DNS 서버에 추가합니다.

다음 단계

이 문서에서는 Active Directory 인증을 사용하여 Linux 호스트 컴퓨터에서 SQL Server를 구성하는 방법을 설명했습니다. Active Directory 계정을 지원하도록 Linux에서 SQL Server 구성을 완료하려면 다음 지침을 따릅니다.