통합 인증 사용

ODBC 드라이버 다운로드

Linux 및 macOS 기반 Microsoft ODBC Driver for SQL Server는 Kerberos 통합된 인증을 사용하는 연결을 지원합니다. MIT Kerberos KDC(키 배포 센터)를 지원하고 GSSAPI(Generic Security Services Application Program Interface) 및 Kerberos v5 라이브러리를 사용하여 작동합니다.

버전 17.6부터 드라이버는 페더레이션 계정을 사용하는 Azure Active Directory에서도 통합 인증을 지원합니다. 그러나 시스템 라이브러리 제한이 있습니다. 자세한 내용은 Azure Active Directory 사용을 참조하세요.

통합 인증을 사용하여 ODBC 애플리케이션에서 SQL Server에 연결

SQLDriverConnect 또는 SQLConnect의 연결 문자열에서 Trusted_Connection = yes를 지정하여 Kerberos 통합 인증을 사용하도록 설정할 수 있습니다. 다음은 그 예입니다.

Driver='ODBC Driver 18 for SQL Server';Server=your_server;Encrypt=yes;Trusted_Connection=yes  

DSN과 연결하는 경우 odbc.ini의 DSN 항목에 Trusted_Connection = yes를 추가할 수도 있습니다.

또한 sqlcmd-E 옵션 및 bcp-T을 사용하여 통합 인증을 지정할 수 있습니다. 자세한 내용은 sqlcmd를 사용하여 연결 및 bcp를 사용하여 연결을 참조하세요.

SQL Server에 연결할 클라이언트 보안 주체가 이미 Kerberos KDC로 인증되었는지 확인합니다.

ServerSPNFailoverPartnerSPN 이 지원되지 않습니다.

서비스로 실행하도록 설계된 Linux 또는 macOS ODBC Driver 애플리케이션 배포

시스템 관리자는 SQL Server에 연결하기 위해 Kerberos 인증을 사용하는 서비스로 실행하도록 애플리케이션을 배포할 수 있습니다.

먼저 클라이언트에서 Kerberos를 구성한 다음, 애플리케이션이 기본 보안 주체의 Kerberos 자격 증명을 사용할 수 있도록 해야 합니다.

다음 방법 중 하나를 통해 연결에서 사용하는 보안 주체에 대해 TGT를 얻고 캐시하도록 kinit 또는 PAM(플러그형 인증 모듈)을 사용해야 합니다.

  • kinit를 실행하여 보안 주체 이름 및 암호를 전달합니다.

  • kinit를 실행하여 ktutil이 만든 보안 주체의 키를 포함하는 keytab 파일의 위치 및 보안 주체의 이름을 전달합니다.

  • 시스템에 대한 로그인이 Kerberos PAM(플러그형 인증 모듈)을 사용하여 수행되었는지 확인합니다.

Kerberos 자격 증명이 설계에 따라 만료되므로 애플리케이션이 서비스로 실행되는 경우 계속해서 서비스 가용성을 보장하도록 자격 증명을 갱신합니다. ODBC 드라이버는 자격 증명 자체를 갱신하지 않으며, 만료되기 전에 주기적으로 실행하여 자격 증명을 갱신하는 cron 작업 또는 스크립트가 있는지 확인합니다. 각 갱신마다 암호를 요구하지 않도록 keytab 파일을 사용할 수 있습니다.

Kerberos 구성 및 사용 은 Linux에서 서비스를 Kerberize하는 방법에 대해 자세하게 설명합니다.

데이터베이스에 대한 액세스 추적

시스템 계정을 사용할 때 데이터베이스 관리자는 데이터베이스에 대한 액세스의 감사 내역을 만들어 통합 인증을 사용하여 SQL Server에 액세스할 수 있습니다.

SQL Server에 로그인할 때 시스템 계정을 사용하고 보안 컨텍스트를 가장하기 위한 Linux 기능은 없습니다. 그러므로 사용자를 확인하기 위해 필요한 작업이 더 이상 없습니다.

시스템 계정이 아닌 사용자 대신 SQL Server의 활동을 감사하려면 애플리케이션이 Transact-SQL EXECUTE AS를 사용해야 합니다.

애플리케이션 성능을 향상하려면 애플리케이션이 통합 인증 및 감사를 사용하는 연결 풀링을 사용하면 됩니다. 그러나 연결 풀링, 통합 인증 및 감사를 함께 사용하면 unixODBC 드라이버 관리자가 서로 다른 사용자에게 풀링 연결을 다시 사용하도록 허용하기 때문에 보안 위험이 생깁니다. 자세한 내용은 ODBC 연결 풀링을 참조하세요.

다시 사용하기 전에 sp_reset_connection을 실행하여 애플리케이션이 풀링 연결을 다시 설정해야 합니다.

Active Directory를 사용하여 사용자 ID 관리

애플리케이션 시스템 관리자는 SQL Server에 대한 별도의 로그인 자격 증명 집합을 관리할 필요가 없습니다. 통합 인증에 대한 KDC(키 배포 센터)로 Active Directory를 구성할 수 있습니다. 자세한 내용은 Microsoft Kerberos를 참조하세요.

연결된 서버 및 분산 쿼리 사용

개발자는 별도의 SQL 자격 증명 집합을 유지하는 데이터베이스 관리자 없이 연결된 서버 또는 분산 쿼리를 사용하는 애플리케이션을 배포할 수 있습니다. 이 경우 개발자는 통합된 인증을 사용하기 위해 애플리케이션을 구성해야 합니다.

  • 사용자는 클라이언트 컴퓨터에 로그인하고 애플리케이션 서버의 인증을 받습니다.

  • 애플리케이션 서버를 다른 데이터베이스로 인증하고 SQL Server에 연결합니다.

  • SQL Server는 다른 데이터베이스에 데이터베이스 사용자로 인증합니다(SQL Server.

통합된 인증을 구성한 후 자격 증명이 연결된 서버에 전달됩니다.

통합 인증 및 sqlcmd

통합 인증을 사용하여 SQL Server에 액세스하려면 sqlcmd-E 옵션을 사용합니다. sqlcmd를 실행하는 계정이 기본 Kerberos 클라이언트 보안 주체와 연결되었는지 확인합니다.

통합 인증 및 bcp

통합 인증을 사용하여 SQL Server에 액세스하려면 bcp-T 옵션을 사용합니다. bcp를 실행하는 계정이 기본 Kerberos 클라이언트 보안 주체와 연결되었는지 확인합니다.

-T-U 또는 -P 옵션과 함께 사용하는 것은 오류입니다.

SQL Server에서 등록한 SPN에 대해 지원되는 구문

SPN이 연결 문자열 또는 연결 특성에서 사용하는 구문은 다음과 같습니다.

구문 Description
MSSQLSvc/fqdn:port TCP가 사용될 때 공급자가 생성하는 기본 SPN입니다. port 는 TCP 포트 번호입니다. fqdn 은 정규화된 도메인 이름입니다.

Active Directory를 사용하여 Linux 또는 macOS 컴퓨터 인증

Kerberos를 구성하려면 데이터를 krb5.conf 파일에 입력합니다. krb5.conf/etc/에 있지만 구문(예: export KRB5_CONFIG=/home/dbapp/etc/krb5.conf)을 사용하여 다른 파일을 참조할 수 있습니다. 다음은 krb5.conf 파일의 예입니다.

[libdefaults]  
default_realm = YYYY.CORP.CONTOSO.COM  
dns_lookup_realm = false  
dns_lookup_kdc = true  
ticket_lifetime = 24h  
forwardable = yes  
  
[domain_realm]  
.yyyy.corp.contoso.com = YYYY.CORP.CONTOSO.COM  
.zzzz.corp.contoso.com = ZZZZ.CORP.CONTOSO.COM  

Linux 또는 macOS 컴퓨터가 사용할 DNS 서버를 제공하는 Windows DHCP 서버에서 DHCP(Dynamic Host Configuration Protocol)를 사용하도록 구성된 경우 dns_lookup_kdc=true를 사용할 수 있습니다. 이제 kinit alias@YYYY.CORP.CONTOSO.COM 명령을 실행하면 Kerberos를 사용하여 도메인에 로그인할 수 있습니다. kinit에 전달된 매개 변수는 대/소문자를 구분하며 도메인에 있도록 구성된 SQL Server 컴퓨터에서 해당 사용자 alias@YYYY.CORP.CONTOSO.COM을 로그인 대상으로 추가했어야 합니다. 이제 신뢰할 수 있는 연결(연결 문자열의Trusted_Connection=YES, bcp -T 또는 sqlcmd -E)을 사용할 수 있습니다.

Linux 또는 macOS 컴퓨터의 시간과 KDC Kerberos KDC(Key Distribution Center)의 시간이 비슷해야 합니다. NTP(Network Time Protocol)를 사용하여 시스템 시간이 올바르게 설정되었는지 확인합니다.

Kerberos 인증이 실패하는 경우 Linux 또는 macOS 기반 ODBC 드라이버가 NTLM 인증을 사용하지 않습니다.

Active Directory를 사용하여 Linux 또는 macOS 컴퓨터를 인증하는 방법에 대한 자세한 내용은 Active Directory를 사용하여 Linux 클라이언트 인증을 참조하세요. Kerberos 구성에 대한 자세한 내용은 MIT Kerberos 설명서를 참조하세요.

참고 항목

프로그래밍 지침

릴리스 정보

Azure Active Directory 사용