SQL Server 연결 암호화

SQL Server는 SSL(Secure Sockets Layer)을 지원하며 IPSec(인터넷 프로토콜 보안)과 호환됩니다.

SSL(Secure Sockets Layer)

Microsoft SQL Server에서는 SSL(Secure Sockets Layer)을 사용하여 네트워크를 통해 SQL Server 인스턴스와 클라이언트 응용 프로그램 간에 전송되는 데이터를 암호화할 수 있습니다. SSL 암호화는 프로토콜 계층 내에서 수행되며 DB 라이브러리 및 MDAC 2.53 클라이언트를 제외한 모든 SQL Server 클라이언트에서 사용할 수 있습니다.

클라이언트 연결 시 암호화를 요청하는 경우 서버 유효성 검사를 위해 SSL을 사용할 수 있습니다. 공개 인증 기관에서 발급한 인증서가 할당된 컴퓨터에서 SQL Server 인스턴스를 실행하는 경우 신뢰할 수 있는 루트 인증 기관까지 연결된 인증서 체인에 의해 SQL Server 인스턴스와 해당 컴퓨터의 ID가 보증됩니다. 이러한 서버의 유효성을 검사할 때는 클라이언트 응용 프로그램을 실행하는 컴퓨터가 서버에 사용되는 인증서의 루트 인증 기관을 신뢰하도록 구성되어 있어야 합니다. 자체 서명된 인증서를 통해 암호화가 가능하며 이에 대한 내용은 다음 섹션에서 설명합니다. 그러나 자체 서명된 인증서의 보호 기능은 제한되어 있습니다.

SSL, 40비트 또는 128비트에 사용되는 암호화 수준은 응용 프로그램 및 데이터베이스 컴퓨터에서 실행하는 Microsoft Windows 운영 체제의 버전에 따라 달라집니다.

SSL 암호화를 사용하면 네트워크에서 SQL Server 인스턴스와 응용 프로그램 간에 전송되는 데이터에 대한 보안이 강화됩니다. 그러나 암호화를 사용하면 성능이 저하됩니다. SQL Server와 클라이언트 응용 프로그램 간의 모든 트래픽이 SSL을 사용하여 암호화되는 경우 다음의 추가 처리 작업이 필요합니다.

  • 연결 시에는 별도의 네트워크 왕복이 필요합니다.

  • 응용 프로그램에서 SQL Server 인스턴스로 전송되는 패킷은 클라이언트 Net-Library에 의해 암호화되고 서버 Net-Library에 의해 해독되어야 합니다.

  • SQL Server 인스턴스에서 응용 프로그램으로 전송되는 패킷은 서버 Net-Library에 의해 암호화되고 클라이언트 Net-Library에 의해 해독되어야 합니다.

SQL Server의 SSL 구성

다음 절차에서는 SQL Server의 SSL을 구성하는 방법을 설명합니다.

SSL을 구성하려면

  1. 서버 컴퓨터의 Windows 인증서 저장소에 인증서를 설치합니다.

  2. 시작을 클릭하고 Microsoft SQL Server 프로그램 그룹에서 구성 도구를 가리킨 다음 SQL Server 구성 관리자를 클릭합니다.

  3. SQL Server 네트워크 구성을 확장하고 원하는 서버에 대한 프로토콜을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.

    [!참고]

    이는 도구 오른쪽 창의 특정 프로토콜이 아니라 왼쪽 창의 <instance_name>에 대한 프로토콜 섹션을 가리킵니다.

  4. 인증서 탭에서 인증서를 사용할 데이터베이스 엔진을 구성합니다.

  5. 플래그 탭에서 프로토콜 암호화 옵션을 보거나 지정합니다. 로그인 패킷은 항상 암호화됩니다.

    • 데이터베이스 엔진의 암호화 적용 옵션이 로 설정되어 있으면 모든 클라이언트/서버 통신이 암호화되며 암호화를 지원할 수 없는 클라이언트는 액세스가 거부됩니다.

    • 데이터베이스 엔진의 암호화 적용 옵션이 아니요로 설정되어 있으면 클라이언트 응용 프로그램에서도 암호화를 요청할 수 있지만 요청하지 않아도 됩니다.

    • 암호화 적용 설정을 변경한 후 SQL Server를 다시 시작해야 합니다.

    클라이언트 응용 프로그램이 SQL Server에 연결될 때 전송되는 자격 증명(로그인 패킷에 포함)은 항상 암호화됩니다. 가능한 경우 SQL Server는 신뢰할 수 있는 인증 기관에서 발급한 인증서를 사용할 수 있습니다. 신뢰할 수 있는 인증서를 설치하지 않으면 SQL Server에서 인스턴스가 시작될 때 자체 서명된 인증서를 생성하고 자체 서명된 인증서를 사용하여 자격 증명을 암호화합니다. 이 자체 서명된 인증서는 보안을 향상하는 데 도움이 되지만 서버의 ID 스푸핑을 방지하는 기능은 제공하지 않습니다. 자체 서명된 인증서를 사용하고 암호화 적용 옵션의 값이 로 설정되어 있으면 네트워크를 통해 SQL Server와 클라이언트 응용 프로그램 간에 전송된 모든 데이터는 자체 서명된 인증서를 사용하여 암호화됩니다.

    주의 사항주의

    자체 서명된 인증서를 사용하여 암호화된 SSL 연결은 강력한 보안을 제공하지 않으며 중재자 공격(man-in-the-middle attack)에 취약합니다. 프로덕션 환경이나 인터넷에 연결된 서버에서는 자체 서명된 인증서를 사용한 SSL에 의존해서는 안 됩니다.

인증서 요구 사항

SQL Server에서 SSL 인증서를 로드하도록 하려면 인증서는 다음 조건을 만족해야 합니다.

  • 인증서가 로컬 컴퓨터 인증서 저장소나 현재 사용자 인증서 저장소에 있어야 합니다.

  • 현재 시스템 시간은 인증서의 Valid from 속성 이후이고 인증서의 Valid to 속성 이전이어야 합니다.

  • 인증서는 서버 인증용이어야 합니다. **Server Authentication (1.3.6.1.5.5.7.3.1)**을 지정하려면 인증서의 Enhanced Key Usage 속성이 필요합니다.

  • 인증서는 AT_KEYEXCHANGEKeySpec 옵션을 사용하여 만들어야 합니다. 일반적으로 인증서의 키 용도 속성(KEY_USAGE)에는 키 암호화(CERT_KEY_ENCIPHERMENT_KEY_USAGE)도 포함됩니다.

  • 인증서의 Subject 속성은 일반 이름(CN)이 서버 컴퓨터의 호스트 이름이나 정규화된 도메인 이름(FQDN)과 동일함을 나타내야 합니다. SQL Server가 장애 조치(Failover) 클러스터에서 실행 중일 경우 일반 이름은 가상 서버의 호스트 이름이나 FQDN과 일치해야 하며 인증서는 장애 조치(Failover) 클러스터의 모든 노드에 제공되어야 합니다.

  • SQL Server 2008 R2 및 SQL Server 2008 R2 Native Client는 와일드카드 인증서를 지원합니다. 다른 클라이언트는 와일드카드 인증서를 지원하지 않을 수 있습니다. 자세한 내용은 클라이언트 설명서 및 KB258858을 참조하십시오.

SQL Server Native Client 인증서 요구 사항

이전에는 완화된 유효성 검사로 인해 해당 제목이 FQDN(정규화된 도메인 이름)을 지정하는 인증서와 함께 "SERVER=shortname; ENCRYPT=yes"를 사용하는 응용 프로그램도 연결할 수 있었습니다. SQL Server 2008 R2에서는 인증서 제목을 정확하게 일치시켜 보안을 강화합니다. 완화된 유효성 검사를 사용하는 응용 프로그램에서는 다음 조치 중 하나를 취해야 합니다.

  • 연결 문자열에 FQDN 사용

    • 연결 문자열의 SERVER 키워드가 응용 프로그램 외부에서 구성된 경우 이 옵션을 사용하면 응용 프로그램을 다시 컴파일할 필요가 없습니다.

    • 응용 프로그램의 연결 문자열이 하드 코딩된 경우 이 옵션을 사용할 수 없습니다.

    • 미러된 서버는 단순한 이름으로 응답하므로 응용 프로그램에서 데이터베이스 미러링을 사용하는 경우 이 옵션을 사용할 수 없습니다.

  • 짧은 이름에 대해 FQDN에 매핑할 별칭 추가

    • 이 옵션은 응용 프로그램의 연결 문자열이 하드 코딩된 경우에도 사용할 수 있습니다.

    • 공급자는 수신된 장애 조치(Failover) 파트너 이름의 별칭을 조회하지 않으므로 응용 프로그램에서 데이터베이스 미러링을 사용하는 경우 이 옵션을 사용할 수 없습니다.

  • 짧은 이름에 대해 인증서 발급

    • 이 옵션은 모든 응용 프로그램에서 사용할 수 있습니다.

클러스터에서 암호화

장애 조치(Failover) 클러스터에서 암호화를 사용하려면 장애 조치(failover) 클러스터형 인스턴스의 정규화된 DNS 이름을 갖는 서버 인증서를 장애 조치(failover) 클러스터의 모든 노드에 설치해야 합니다. 예를 들어 클러스터에 test1.your company.comtest2. your company.com이라는 두 개의 노드 클러스터가 있고 SQL Server의 장애 조치(failover) 클러스터형 인스턴스인 fcisql이 있으면 fcisql.your company.com에 대한 인증서를 가져와서 두 노드 모두에 설치해야 합니다. 그런 다음 SQL Server 네트워크 구성<server>에 대한 프로토콜 속성 상자에서 암호화 적용 확인란을 선택하여 암호화에 대한 장애 조치(failover) 클러스터를 구성할 수 있습니다.

IPSec(인터넷 프로토콜 보안)

SQL Server 데이터는 전송 중 IPSec을 사용하여 암호화될 수 있습니다. IPSec은 클라이언트와 서버 운영 체제에서 제공되며 별도의 SQL Server 구성이 필요하지 않습니다. IPSec에 대한 자세한 내용은 Windows 또는 네트워킹 설명서를 참조하십시오.