Linux에서 SQL Server와 active Directory 인증Active Directory Authentication with SQL Server on Linux

이 항목은 다음에 적용됩니다. 아니요Windows의 SQL Server예Linux의 SQL Server아니요Azure SQL Database아니요Azure SQL Data Warehouse아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: noSQL Server on WindowsyesSQL Server on LinuxnoAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

이 자습서에서는 구성 하는 방법에 설명 SQL ServerSQL Server linux Active Directory (AD) 인증, 라고도 통합된 인증을 지원 하도록 합니다.This tutorial explains how to configure SQL ServerSQL Server on Linux to support Active Directory (AD) authentication, also known as integrated authentication. AD 인증을 통해 인증 하는 데 Windows 또는 Linux에서 도메인에 가입 된 클라이언트 SQL ServerSQL Server 해당 도메인 자격 증명 및 Kerberos 프로토콜을 사용 하 여 합니다.AD Authentication enables domain-joined clients on either Windows or Linux to authenticate to SQL ServerSQL Server using their domain credentials and the Kerberos protocol.

AD 인증을 통해 다음과 같은 이점을 SQL ServerSQL Server 인증:AD Authentication has the following advantages over SQL ServerSQL Server Authentication:

  • Single sign-on을 통해 암호를 입력 하지 않고 사용자를 인증 합니다.Users authenticate via single sign-on, without being prompted for a password.
  • AD 그룹에 대 한 로그인을 만들어 액세스 및 권한을 관리할 수 있습니다 SQL ServerSQL Server AD 그룹 멤버 자격을 사용 하 여 합니다.By creating logins for AD groups, you can manage access and permissions in SQL ServerSQL Server using AD group memberships.
  • 추적 하는 필요 없이 조직 전체에서 단일 id는 각 사용자가 SQL ServerSQL Server 사람에 해당 하는 로그인입니다.Each user has a single identity across your organization, so you don’t have to keep track of which SQL ServerSQL Server logins correspond to which people.
  • AD를 사용 하면 조직 전체에서 중앙 집중화 된 암호 정책을 적용할 수 있습니다.AD enables you to enforce a centralized password policy across your organization.

이 자습서는 다음 작업으로 구성 됩니다.This tutorial consists of the following tasks:

  • 가입 SQL ServerSQL Server AD 도메인에 호스트Join SQL ServerSQL Server host to AD domain
  • 에 대 한 AD 사용자를 만들고 SQL ServerSQL Server SPN을 설정 하 고Create AD user for SQL ServerSQL Server and set SPN
  • 구성 SQL ServerSQL Server 서비스 keytabConfigure SQL ServerSQL Server service keytab
  • TRANSACT-SQL에서 AD 기반 로그인을 만들으십시오Create AD-based logins in Transact-SQL
  • 연결할 SQL ServerSQL Server AD 인증을 사용 하 여Connect to SQL ServerSQL Server using AD Authentication

필수 구성 요소Prerequisites

AD 인증을 구성 하기 전에 해야 합니다.Before you configure AD Authentication, you need to:

중요

제한 사항:Limitations:

  • 이 경우 데이터베이스 미러링 끝점에 지원 되는 유일한 인증 방법에는 인증서입니다.At this time, the only authentication method supported for database mirroring endpoint is CERTIFICATE. 이후 릴리스에서 WINDOWS 인증 방법을 사용할 수 있습니다.WINDOWS authentication method will be enabled in a future release.
  • Centrify, Powerbroker Vintela 등 AD 타사 도구는 지원 되지 않습니다.3rd party AD tools like Centrify, Powerbroker and Vintela are not supported

가입 SQL ServerSQL Server AD 도메인에 호스트Join SQL ServerSQL Server host to AD domain

다음 단계를 사용 하 여 연결할는 SQL ServerSQL Server Active Directory 도메인에 호스트:Use the following steps to join a SQL ServerSQL Server host to an Active Directory domain:

  1. 사용 하 여 realmd AD 도메인에 호스트 컴퓨터를 가입 합니다.Use realmd to join your host machine to your AD Domain. 아직 하지 않는 경우에 realmd와 Kerberos 클라이언트 패키지가 설치는 SQL ServerSQL Server Linux 배포판의 패키지 관리자를 사용 하 여 호스트 컴퓨터:If you haven't already, install both the realmd and Kerberos client packages on the SQL ServerSQL Server host machine using your Linux distribution's package manager:

    # RHEL
    sudo yum install realmd krb5-workstation
    
    # SUSE
    sudo zypper install realmd krb5-client
    
    # Ubuntu
    sudo apt-get install realmd krb5-user software-properties-common python-software-properties packagekit
    
  2. Kerberos 클라이언트 패키지 설치 영역 이름을 요청 하는 경우 도메인 이름을 대문자로 입력 합니다.If the Kerberos client package installation prompts you for a realm name, enter your domain name in uppercase.

    참고

    이 연습에서는 "contoso.com" 및 "CONTOSO.COM" 예제 도메인 및 영역 이름으로 각각 사용 됩니다.This walkthrough uses "contoso.com" and "CONTOSO.COM" as example domain and realm names, respectively. 이러한 고유한 값으로 바꿔야 합니다.You should replace these with your own values. 이러한 명령은 대/소문자, 하므로 반드시 사용 대문자이 연습에서 사용 될 때마다 합니다.These commands are case-sensitive, so make sure you use uppercase wherever it is used in this walkthrough.

  3. 구성 프로그램 SQL ServerSQL Server 호스트 컴퓨터를 AD 도메인 컨트롤러의 IP 주소는 DNS 이름 서버를 사용 합니다.Configure your SQL ServerSQL Server host machine to use your AD domain controller's IP address as a DNS nameserver.

    • Ubuntu:Ubuntu:

      편집 된 /etc/network/interfaces 파일 AD 도메인 컨트롤러의 IP 주소는 dns 이름 서버 목록이 표시 됩니다.Edit the /etc/network/interfaces file so that your AD domain controller's IP address is listed as a dns-nameserver. 예를 들어For example:

      <...>
      # The primary network interface
      auth eth0
      iface eth0 inet dhcp
      dns-nameservers **<AD domain controller IP address>**
      dns-search **<AD domain name>**
      

      참고

      다른 컴퓨터에 대 한 네트워크 인터페이스 (eth0) 다를 수 있습니다.The network interface (eth0) might differ for differnet machines. 사용 하는 어떤 것을 알아보려면 ifconfig를 실행 하 고 인터페이스에는 IP 주소와 전송 및 수신한 바이트를 복사 합니다.To find out which one you are using, run ifconfig and copy the interface that has an IP address and transmitted and received bytes.

      이 파일을 편집한 후 네트워크 서비스를 다시 시작 합니다.After editing this file, restart the network service:

      sudo ifdown eth0 && sudo ifup eth0
      

      이제 있는지 여부를 확인 하면 /etc/resolv.conf 파일에 다음과 같은 줄이 포함 되어 있습니다.Now check that your /etc/resolv.conf file contains a line like the following:

      nameserver **<AD domain controller IP address>**
      
    • RHEL:RHEL:

      편집의 /etc/sysconfig/network-scripts/ifcfg-eth0 파일 (또는 다른 인터페이스 구성 파일을 적절 하 게)를 AD 도메인 컨트롤러의 IP 주소는 DNS 서버 목록이 표시 됩니다.Edit the /etc/sysconfig/network-scripts/ifcfg-eth0 file (or other interface config file as appropriate) so that your AD domain controller's IP address is listed as a DNS server:

      <...>
      PEERDNS=no
      DNS1=**<AD domain controller IP address>**
      

      이 파일을 편집한 후 네트워크 서비스를 다시 시작 합니다.After editing this file, restart the network service:

      sudo systemctl restart network
      

      이제 있는지 여부를 확인 하면 /etc/resolv.conf 파일에 다음과 같은 줄이 포함 되어 있습니다.Now check that your /etc/resolv.conf file contains a line like the following:

      nameserver **<AD domain controller IP address>**
      
  4. 도메인에 가입Join the domain

    DNS가 올바르게 구성 되었는지 확인 하 고 나면 아래 명령을 실행 하 여 도메인에 가입 합니다.Once you've confirmed that your DNS is configured properly, join the domain by running the command below. 새 컴퓨터를 도메인에 가입 하는 AD에 충분 한 권한을 가진 AD 계정을 사용 하 여 인증 해야 합니다.You'll need to authenticate using an AD account that has sufficient privileges in AD to join a new machine to the domain.

    이 명령은 AD에서 새 컴퓨터 계정을 만들를 만들기는 특히는 /etc/krb5.keytab keytab 파일을 호스트 하 고 있는 도메인의 구성 /etc/sssd/sssd.conf:Specifically, this command will create a new computer account in AD, create the /etc/krb5.keytab host keytab file, and configure the domain in /etc/sssd/sssd.conf:

    sudo realm join contoso.com -U 'user@CONTOSO.COM' -v
    <...>
    * Successfully enrolled machine in realm
    

    참고

    오류 표시, "필요한 패키지가 설치 되지 않은" 경우 실행 하기 전에 Linux 배포판의 패키지 관리자를 사용 하 여 이러한 패키지를 설치 해야는 realm join 명령을 다시 합니다.If you see an error, "Necessary packages are not installed," then you should install those packages using your Linux distribution's package manager before running the realm join command again.

    "에 도메인 가입 권한이" 오류가 발생 하는 경우 Linux 컴퓨터를 도메인에 연결 하려면 충분 한 권한이 있는지 도메인 관리자와 함께 확인 해야 합니다.If you receive an error, "Insufficient permissions to join the domain," then you will need to check with a domain administrator that you have sufficient permissions to join Linux machines to your domain.

  5. 도메인에서 사용자에 대 한 정보를 수집할 이제 수 및 해당 사용자로 Kerberos 티켓을 얻을 수 있습니다를 확인 합니다.Verify that you can now gather information about a user from the domain, and that you can acquire a Kerberos ticket as that user.

    We will use id, kinit and klist commands for this.We will use id, kinit and klist commands for this.

    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 반환, "사용자," 명령을 실행 하 여 SSSD 서비스가 성공적으로 시작 되었는지 확인 sudo systemctl status sssd합니다.If id user@contoso.com returns, "No such user," make sure that the SSSD service started successfully by running the command sudo systemctl status sssd. 서비스를 실행 하는 경우 "사용자" 오류가 표시 SSSD에 대 한 자세한 정보 로깅을 사용 하도록 설정 하십시오.If the service is running and you still see the "No such user" error, try enabling verbose logging for SSSD. 자세한 내용은 Red Hat 설명서를 참조 문제 해결 SSSD합니다.For more information, see the Red Hat documentation for Troubleshooting SSSD.

    경우 kinit user@CONTOSO.COM "KDC 회신 일치 하지 않습니다 기대 초기 자격 증명을 가져오는 동안" 반환 대문자로 표시 영역을 지정 했는지 확인 합니다.If kinit user@CONTOSO.COM returns, "KDC reply did not match expectations while getting initial credentials," make sure you specified the realm in uppercase.

자세한 내용은 Red Hat 설명서를 참조 Discovering 및 Id 도메인이 가입합니다.For more information, see the Red Hat documentation for Discovering and Joining Identity Domains.

에 대 한 AD 사용자를 만들고 SQL ServerSQL Server SPN을 설정 하 고Create AD user for SQL ServerSQL Server and set SPN

참고

다음 단계는 사용 하면 정규화 된 도메인 이름합니다.In the next steps we will use your fully qualified domain name. 사용 중인 Azure, ´ ë ç 만드세요 계속 진행 하기 전에.If you are on Azure, you will have to create one before you proceed.

  1. 도메인 컨트롤러에서 실행 하는 New-aduser 만료 되지 않는 암호를 사용 하 여 새 AD 사용자를 만들려면 PowerShell 명령입니다.On your domain controller, run the New-ADUser PowerShell command to create a new AD user with a password that never expires. 이 예에서는 "mssql," 계정 이름이 되지만 필요 하면 계정 이름이 될 수 있습니다.This example names the account "mssql," but the account name can be anything you like. 계정의 새 암호를 입력 하 라는 메시지가 표시 됩니다.You will be prompted to enter a new password for the account:

    Import-Module ActiveDirectory
    
    New-ADUser mssql -AccountPassword (Read-Host -AsSecureString "Enter Password") -PasswordNeverExpires $true -Enabled $true
    

    참고

    전용 AD 계정이 SQL Server에 대 한 보안 모범 사례는 하는 SQL Server 자격 증명 동일한 계정을 사용 하 여 다른 서비스와 공유 되지 않도록 합니다.It is a security best practice to have a dedicated AD account for SQL Server, so that SQL Server's credentials aren't shared with other services using the same account. 그러나 재사용할 수 있습니다 기존 AD 계정 원하는 경우 (다음 단계에서는 keytab 파일을 생성 하는 데 필요) 계정의 암호를 알고 있는 경우.However, you can reuse an existing AD account if you prefer, if you know the account's password (required to generate a keytab file in the next step).

  2. 사용 하 여이 계정에 대 한 서비스 사용자 이름 (SPN) 설정에서 setspn.exe 도구입니다.Set the ServicePrincipalName (SPN) for this account using the setspn.exe tool. SPN은 다음 예제에 지정 된 대로 형식 이어야 합니다:의 정규화 된 도메인 이름을 찾을 수 있습니다는 SQL ServerSQL Server 호스트 컴퓨터를 실행 하 여 hostname --all-fqdnsSQL ServerSQL Server 호스트 및 TCP 포트는 1433 이어야 함 구성 하지 않으면 SQL ServerSQL Server 다른 포트 번호를 사용 하도록 합니다.The SPN must be formatted exactly as specified in the following example: You can find the fully qualified domain name of the SQL ServerSQL Server host machine by running hostname --all-fqdns on the SQL ServerSQL Server host, and the TCP port should be 1433 unless you have configured SQL ServerSQL Server to use a different port number.

    setspn -A MSSQLSvc/**<fully qualified domain name of host machine>**:**<tcp port>** mssql
    

    참고

    "액세스 권한이 부족 합니다" 오류가 발생 하는 경우 수 있는 충분 한 권한이이 계정에 SPN을 설정할 수는 도메인 관리자와 함께 확인 해야 합니다.If you receive an error, "Insufficient access rights," then you need to check with a domain administrator that you have sufficient permissions to set an SPN on this account.

    나중에 TCP 포트를 변경 하면 새 포트 번호로 setspn 명령을 다시 실행 해야 합니다.If you change the TCP port in the future, then you will need to run the setspn command again with the new port number. 다음 섹션의 단계를 수행 하 여 SQL Server 서비스 keytab에 새 SPN을 추가 해야 합니다.You will also need to add the new SPN to the SQL Server service keytab by following the steps in the next section.

  3. 자세한 내용은 Kerberos 연결의 서비스 사용자 이름 등록을 참조하세요.For more information, see Register a Service Principal Name for Kerberos Connections.

구성 SQL ServerSQL Server 서비스 keytabConfigure SQL ServerSQL Server service keytab

  1. 이전 단계에서 만든 AD 계정에 대 한 키 버전 번호 (kvno)를 확인 합니다.Check the Key Version Number (kvno) for the AD account created in the previous step. 일반적으로 2, 됩니다 이지만 여러 번 계정의 암호를 변경 하는 경우 다른 정수 수도 있습니다.Usually it will be 2, but it could be another integer if you changed the account's password multiple times. SQL ServerSQL Server 호스트 컴퓨터를 다음을 실행 합니다.On the SQL ServerSQL Server host machine, run the following:

    kinit user@CONTOSO.COM
    
    kvno MSSQLSvc/**<fully qualified domain name of host machine>**:**<tcp port>**
    
  2. 이전 단계에서 만든 AD 사용자는 keytab 파일을 만듭니다.Create a keytab file for the AD user you created in the previous step. 사용 하 여 그렇게 하려면 ktutil합니다.To do so we will use ktutil. 메시지가 표시 되 면 해당 AD 계정의 암호를 입력 합니다.When prompted, enter the password for that AD account.

    sudo ktutil
    
    ktutil: addent -password -p MSSQLSvc/**<fully qualified domain name of host machine>**:**<tcp port>**@CONTOSO.COM -k **<kvno from above>** -e aes256-cts-hmac-sha1-96
    
    ktutil: addent -password -p MSSQLSvc/**<fully qualified domain name of host machine>**:**<tcp port>**@CONTOSO.COM -k **<kvno from above>** -e rc4-hmac
    
    ktutil: wkt /var/opt/mssql/secrets/mssql.keytab
    
    quit
    

    참고

    Ktutil 도구 암호의 유효성을 검사 하지는 않으므로 올바르게 입력 있는지를 확인 합니다.The ktutil tool does not validate the password, so make sure you enter it correctly.

  3. 이에 액세스할 수 있는 모든 사용자 keytab 파일을 가장할 수 SQL ServerSQL Server 도메인에 있으므로 해야 이러한 파일에 대 한 액세스는 유일한는 mssql 계정에 대 한 읽기 액세스:Anyone with access to this keytab file can impersonate SQL ServerSQL Server on the domain, so make sure you restrict access to the file such that only the mssql account has read access:

    sudo chown mssql:mssql /var/opt/mssql/secrets/mssql.keytab
    sudo chmod 400 /var/opt/mssql/secrets/mssql.keytab
    
  4. 구성 SQL ServerSQL Server 이 하 keytab Kerberos 인증에 대 한 파일:Configure SQL ServerSQL Server to use this keytab file for Kerberos authentication:

    sudo /opt/mssql/bin/mssql-conf set network.kerberoskeytabfile /var/opt/mssql/secrets/mssql.keytab
    sudo systemctl restart mssql-server
    

TRANSACT-SQL에서 AD 기반 로그인을 만들으십시오Create AD-based logins in Transact-SQL

  1. 연결할 SQL ServerSQL Server 새, AD 기반 로그인을 만듭니다.Connect to SQL ServerSQL Server and create a new, AD-based login:

    CREATE LOGIN [CONTOSO\user] FROM WINDOWS;
    
  2. 로그인에 이제 나열 되어 있는지 확인 하십시오.는 sys.server_principals 시스템 카탈로그 뷰:Verify that the login is now listed in the sys.server_principals system catalog view:

    SELECT name FROM sys.server_principals;
    

연결할 SQL ServerSQL Server AD 인증을 사용 하 여Connect to SQL ServerSQL Server using AD Authentication

도메인 자격 증명을 사용 하는 클라이언트 컴퓨터에 로그인 합니다.Log in to a client machine using your domain credentials. 에 연결할 수 이제 SQL ServerSQL Server AD 인증을 사용 하 여 암호를 다시 입력 하지 않고도 합니다.Now you can connect to SQL ServerSQL Server without reentering your password, by using AD Authentication. AD 그룹에 대 한 로그인을 만들면 해당 그룹의 구성원 인 모든 AD 사용자는 동일한 방식으로 연결할 수 있습니다.If you create a login for an AD group, any AD user who is a member of that group can connect in the same way.

AD 인증을 사용 하는 클라이언트에 대 한 특정 연결 문자열 매개 변수는 사용 중인 드라이버에 따라 다릅니다.The specific connection string parameter for clients to use AD Authentication depends on which driver you are using. 몇 가지 예는 다음과 같습니다.A few examples are below.

  • sqlcmd도메인에 가입 된 Linux 클라이언트에서sqlcmd on a domain-joined Linux client

    사용 하 여 도메인에 가입 된 Linux 클라이언트에 로그인 ssh 및 도메인 자격 증명:Log in to a domain-joined Linux client using ssh and your domain credentials:

    ssh -l user@contoso.com client.contoso.com
    

    이전에 설치한 있는지 확인은 mssql 도구 패키지 하 고, 다음 사용 하 여 연결 sqlcmd 자격 증명을 지정 하지 않고:Make sure you've installed the mssql-tools package, then connect using sqlcmd without specifying any credentials:

    sqlcmd -S mssql.contoso.com
    
  • 도메인에 가입 된 Windows 클라이언트에서 SSMSSSMS on a domain-joined Windows client

    도메인 자격 증명을 사용 하는 도메인에 가입 된 Windows 클라이언트에 로그인 합니다.Log in to a domain-joined Windows client using your domain credentials. 있는지 확인 SQL Server Management StudioSQL Server Management Studio 설치 된 다음에 연결 하면 SQL ServerSQL Server 인스턴스를 지정 하 여 Windows 인증서버에 연결 대화 합니다.Make sure SQL Server Management StudioSQL Server Management Studio is installed, then connect to your SQL ServerSQL Server instance by specifying Windows Authentication in the Connect to Server dialog.

  • 다른 클라이언트 드라이버를 사용 하 여 AD 인증AD Authentication using other client drivers

다음 단계Next steps

이 자습서에서는에서는 연습을 통해 방법을 SQL server 설치 프로그램이 Active Directory 인증 linux.In this tutorial, we walked through how to setup Active Directory authentication with SQL Server on Linux. 방법에 대해 배웠습니다에:You learned how to:

  • 가입 SQL ServerSQL Server AD 도메인에 호스트Join SQL ServerSQL Server host to AD domain
  • 에 대 한 AD 사용자를 만들고 SQL ServerSQL Server SPN을 설정 하 고Create AD user for SQL ServerSQL Server and set SPN
  • 구성 SQL ServerSQL Server 서비스 keytabConfigure SQL ServerSQL Server service keytab
  • TRANSACT-SQL에서 AD 기반 로그인을 만들으십시오Create AD-based logins in Transact-SQL
  • 연결할 SQL ServerSQL Server AD 인증을 사용 하 여Connect to SQL ServerSQL Server using AD Authentication

다음으로 Linux에서 SQL Server에 대 한 다른 보안 시나리오를 탐색 합니다.Next, explore other security scenarios for SQL Server on Linux.