다음을 통해 공유


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

적용 대상: SQL Server - Linux

이 문서에서는 SQL Server Linux 호스트 머신을 Active Directory 도메인에 조인하는 방법에 관한 일반 지침을 제공합니다. 기본 제공 SSSD 패키지를 사용하거나 타사 Active Directory 공급자를 사용하는 두 가지 방법이 있습니다. 타사 도메인 가입 제품의 예로는 PBIS(PowerBroker Identity Services), One IdentityCentrify가 있습니다.

이 가이드에는 Active Directory 구성을 확인하는 단계가 포함되어 있습니다. 그러나 타사 유틸리티를 사용할 때 컴퓨터를 도메인에 참가시키는 방법은 제공하지 않습니다.

참고 항목

최신 버전의 Ubuntu, RHEL 또는 SLES를 사용하여 Active Directory를 구성하는 방법에 관한 자세한 내용은 자습서: adutil을 사용하여 SQL Server on Linux에서 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에서는 netplan을 사용하는 반면, RHEL(Red Hat Enterprise Linux) 8.x에서는 이외의 도구 중에서 nmcli를 사용하여 네트워크를 관리하고 구성합니다. 특정 도구, 구성, 사용자 지정 및 필요한 문제 해결 관련 정보는 사용자 환경의 시스템 및 도메인 관리자에게 문의해야 합니다.

역방향 DNS(RDNS)

Windows Server를 도메인 컨트롤러로 실행하는 컴퓨터를 설정하는 경우 기본값으로 rDNS 영역이 없을 수 있습니다. SQL Server를 실행할 Linux 컴퓨터의 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을 도메인 컨트롤러의 정규화된 도메인 이름 예제로 사용합니다. 이러한 이름을 사용자 고유의 값으로 바꾸어야 합니다.

적절한 도메인 이름 확인을 위해 이름 확인 중에 불일치가 발견되면 /etc/resolv.conf 파일을 업데이트하는 것이 중요합니다. 업데이트 절차는 여러 배포에서 달라집니다. 따라서 정확한 지침은 공식 설명서를 참조하는 것이 좋습니다. 다음 목록에서는 일부 배포 및 해당 배포의 주요 버전에 대한 링크를 제공합니다.

배포 참조 문서
RHEL 8 수동으로 /etc/resolv.conf 구성
RHEL 9 수동으로 /etc/resolv.conf 구성
SLES 15 NETCONFIG_DNS_STATIC_SEARCHLIST 및 NETCONFIG_DNS_STATIC_SERVERS 설정
Ubuntu 이름 확인 섹션

보다 쉽게 도메인 이름을 확인할 수 있도록 배포에 맞게 /etc/resolv.conf를 올바르게 구성하는 것이 목표입니다. 예를 들어 도메인이 contoso.com이고 Active Directory IP 주소가 10.0.0.4인 경우 호스트에서 성공적인 이름 확인을 위해 /etc/resolv.conf를 적절하게 설정해야 합니다.

cat /etc/resolv.conf

결과 집합은 다음과 같습니다.

# Generated by NetworkManager
search contoso.com com
nameserver 10.0.0.4

RHEL 7.x

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

    sudo vi /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 파일에 다음 예제와 같은 줄이 포함되어 있는지 확인합니다.

    sudo vi /etc/resolv.conf
    

    콘텐츠는 다음 예제와 비슷합니다.

    search contoso.com com
    nameserver <Domain controller IP address>
    
  4. 여전히 도메인 컨트롤러를 ping할 수 없으면 도메인 컨트롤러의 정규화된 도메인 이름 및 IP 주소를 찾습니다. 예제 도메인 이름은 DC1.CONTOSO.COM입니다. /etc/hosts에 다음 항목을 추가합니다.

    sudo vi /etc/hosts
    

    콘텐츠는 다음 예제와 비슷합니다.

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

Active Directory 도메인에 조인

기본 구성 및 도메인 컨트롤러와의 연결이 확인된 후에는 두 가지 옵션을 통해 SQL Server Linux 호스트 머신을 Active Directory 도메인 컨트롤러에 조인할 수 있습니다.

옵션 1: SSSD 패키지를 사용하여 Active Directory 도메인 조인

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

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

최신 지침은 배포 파트너가 제공하는 공식 설명서를 참조하세요.

배포 참조 문서
RHEL 8 SSSD를 사용하여 AD 도메인 검색 및 참가
RHEL 9 SSSD를 사용하여 AD 도메인 검색 및 참가
SLES SUSE Linux Enterprise Server 15에서 realmd를 사용하여 AD 참가
Ubuntu Active Directory를 사용하여 SSSD를 설정하는 방법

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

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

    RHEL:

    sudo yum install realmd krb5-workstation
    

  1. Kerberos 클라이언트 패키지 설치에서 영역 이름을 입력하라는 메시지가 표시되면 도메인 이름을 대문자로 입력합니다.

  2. 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 파일이 <old 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를 구성하는 방법을 참조하세요.

  3. 이제 도메인에서 사용자에 관한 정보를 수집할 수 있고 해당 사용자로 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를 쿼리합니다. 타사 통합자는 Active Directory 도메인에 Linux 호스트를 참가시키는 데만 사용되며, SQL Server는 이러한 유틸리티와 직접 통신하지 않습니다.

Important

SQL Server on Linux에서 Active Directory 인증 사용 문서의 추가 구성 옵션 섹션에서 mssql-conf network.disablesssd 구성 옵션 사용에 관한 권장 사항을 참조하세요.

/etc/krb5.conf가 올바르게 구성되어 있는지 확인합니다. 타사 Active Directory 공급자 대부분의 경우 이 구성이 자동으로 수행됩니다. 그러나 이후 문제를 방지하기 위해 /etc/krb5.conf에서 다음 값을 확인하세요.

sudo vi /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 계정을 지원하도록 SQL Server on Linux 구성하는 작업을 마무리하려면 다음 지침을 따르세요.