다음을 통해 공유


통합 인증 사용

ODBC 드라이버 다운로드

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

버전 17.6을 기준으로 드라이버는 페더레이션된 계정, 시스템 라이브러리 제한에도 불구하고 Microsoft Entra ID(이전 Azure Active Directory)와의 통합 인증도 지원합니다. 자세한 내용은 Microsoft Entra ID 사용을 참조하세요.

통합 인증을 사용하여 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 드라이버 애플리케이션 배포

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

먼저 클라이언트에서 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에 대한 별도의 로그인 자격 증명 집합을 관리할 필요가 없습니다. Active Directory를 통합 인증을 위한 키 배포 센터(KDC)로 구성할 수 있습니다. 자세한 내용은 Microsoft Kerberos를 참조하세요.

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

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

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

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

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

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

통합 인증 및 sqlcmd

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

통합 인증 및 bcp

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

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

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

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

구문 설명
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를 사용할 수 있습니다. 이제 Kerberos를 사용하여 kinit alias@YYYY.CORP.CONTOSO.COM 명령을 실행하여 도메인 로그인할 수 있습니다. kinit에 전달되는 매개 변수는 대소문자를 구분하며 도메인에 위치하도록 구성된 SQL Server 컴퓨터에는 로그인을 위해 해당 alias@YYYY.CORP.CONTOSO.COM 사용자가 추가되어야 합니다. 이제 신뢰할 수 있는 연결(연결 문자열, bcp -T 또는 sqlcmd -E에서 Trusted_Connection=YES)을 사용할 수 있습니다.

Linux 또는 macOS 컴퓨터의 시간과 Kerberos 키 배포 센터(KDC)의 시간이 비슷해야 합니다. 예를 들어, 네트워크 시간 프로토콜(NTP)을 사용하여 시스템 시간이 올바르게 설정되었는지 확인합니다.

Kerberos 인증에 실패하면 Linux 또는 macOS의 ODBC 드라이버는 NTLM 인증을 사용하지 않습니다.

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

참고 항목

프로그래밍 지침

릴리스 정보

Microsoft Entra ID 사용