SQL Server 설치에 대한 보안 고려 사항
적용 대상: SQL Server - Windows만 해당
보안은 모든 제품과 모든 비즈니스에 중요합니다. 간단한 권장 사항을 따르면 많은 보안상의 취약점을 방지할 수 있습니다. 이 문서에서는 SQL Server를 설치하기 전과 SQL Server를 설치한 후에 모두 고려해야 하는 보안 모범 사례에 대해 설명합니다. 특정 기능에 대한 보안 지침은 해당 기능에 대한 참조 문서에 포함되어 있습니다.
SQL Server를 설치하기 전에
서버 환경을 설정할 때 다음 모범 사례를 따릅니다.
물리적 보안 강화
물리적 및 논리적 격리는 SQL Server 보안의 기초를 구성합니다. SQL Server 설치의 물리적 보안을 강화하려면 다음 작업을 수행합니다.
권한이 있는 사용자만 액세스할 수 있는 방에 서버를 배치합니다.
데이터베이스를 호스트하는 컴퓨터를 물리적으로 보호된 위치에 배치합니다. 이상적으로는 모니터링되는 홍수 감지 및 화재 감지 또는 억제 시스템이 있는 잠긴 컴퓨터실에 배치합니다.
회사 인트라넷의 보안 영역에 데이터베이스를 설치하고 SQL Server 인스턴스를 인터넷에 직접 연결하지 않습니다.
모든 데이터를 정기적으로 백업하고 멀리 떨어진 지역에 백업을 안전하게 보관합니다.
방화벽 사용
방화벽은 SQL Server 설치의 보안에 중요합니다. 다음 지침을 따르는 경우 방화벽이 가장 효과적입니다.
방화벽을 서버와 인터넷 사이에 둡니다. 방화벽을 사용하도록 설정합니다. 방화벽이 해제되어 있으면 설정하고 방화벽이 설정되어 있으면 해제하지 마십시오.
네트워크를 방화벽으로 구분된 보안 영역으로 나눕니다. 모든 트래픽을 차단한 다음, 필요한 항목만 선택적으로 인정합니다.
다중 계층 환경에서 여러 방화벽을 사용하여 스크린된 서브넷을 만듭니다.
Windows 도메인 내에 서버를 설치할 경우 Windows 인증을 허용하도록 내부 방화벽을 구성합니다.
애플리케이션에서 분산 트랜잭션을 사용하는 경우 MS DTC(Microsoft Distributed Transaction Coordinator) 트래픽이 개별 MS DTC 인스턴스 간에 전달될 수 있도록 방화벽을 구성해야 할 수도 있습니다. 또한 MS DTC와 SQL Server와 같은 리소스 관리자 간에 트래픽이 흐르도록 방화벽을 구성해야 합니다.
기본 Windows 방화벽 설정 방법과 데이터베이스 엔진, Analysis Services, Reporting Services 및 Integration Services에 영향을 주는 TCP 포트에 대한 설명은 SQL Server 액세스를 허용하도록 Windows 방화벽 구성을 참조하세요.
서비스 격리
서비스를 격리하면 손상된 서비스가 다른 서비스를 손상시키는 데 사용될 수 있는 위험이 줄어듭니다. 서비스를 격리하려면 다음 지침을 고려하세요.
- 별도의 Windows 계정으로 별도의 SQL Server 서비스를 실행합니다. 가능하면 각 SQL Server 서비스에 대해 별도의 낮은 권한의 Windows 또는 로컬 사용자 계정을 사용합니다. 자세한 내용은 Windows 서비스 계정 및 권한 구성를 참조하세요.
보안 파일 시스템 구성
올바른 파일 시스템을 사용하면 보안이 강화됩니다. SQL Server 설치의 경우 다음 작업을 수행해야 합니다.
NTFS(NT 파일 시스템) 또는 ReFS(복원 파일 시스템)를 사용합니다. NTFS와 ReFS는 FAT32 파일 시스템에 비해 안정적이고 복구 가능하기 때문에 SQL Server 설치에 권장되는 파일 시스템입니다. NTFS 또는 ReFS는 파일 및 디렉터리 ACL(액세스 제어 목록)과 같은 보안 옵션을 사용할 수도 있습니다. NTFS는 EFS(파일 시스템 암호화), 즉 파일 암호화도 지원합니다. 설치하는 동안 SQL Server는 NTFS를 검색하는 경우 레지스트리 키 및 파일에 적절한 ACL을 설정합니다. 이러한 사용 권한은 변경해서는 안 됩니다. SQL Server의 향후 릴리스에서는 FAT 파일 시스템이 있는 컴퓨터에서 설치를 지원하지 않을 수 있습니다.
참고
EFS를 사용하는 경우 데이터베이스 파일은 SQL Server를 실행하는 계정의 ID로 암호화됩니다. 파일 해독도 이 계정으로만 할 수 있습니다. SQL Server를 실행하는 계정을 변경해야 하는 경우 먼저 이전 계정으로 파일을 해독한 다음 새 서비스 계정으로 파일을 다시 암호화해야 합니다.
Warning
암호화하면 비동기 I/O가 동기화되므로 EFS를 통한 파일 암호화를 사용하면 I/O 성능이 느려질 수 있습니다. Windows에서 비동기 디스크 I/O가 동기로 표시됨을 참조하세요. 대신 TDE(투명한 데이터 암호화), Always Encrypted 및 열 수준 암호화 T-SQL 함수와 같은 SQL Server 암호화 기술을 사용하는 것이 좋습니다.
NetBIOS 및 서버 메시지 블록 사용 안 함
경계 네트워크의 서버에는 NetBIOS 및 SMB(서버 메시지 블록)를 포함하여 모든 불필요한 프로토콜을 사용하지 않도록 설정해야 합니다.
NetBIOS는 다음 포트를 사용합니다.
UDP/137(NetBIOS 이름 서비스)
UDP/138(NetBIOS 데이터그램 서비스)
TCP/139(NetBIOS 세션 서비스)
SMB는 다음 포트를 사용합니다.
TCP/139
TCP/445
웹 서버 및 DNS(Domain Name System) 서버에는 NetBIOS 또는 SMB가 필요 없습니다. 이러한 서버에서 두 프로토콜을 모두 사용하지 않도록 설정하여 사용자 열거 위협을 줄입니다.
도메인 컨트롤러에 SQL Server 설치
보안상의 이유로 SQL Server 는 도메인 컨트롤러에 설치하지 않는 것이 좋습니다. SQL Server 설치 프로그램은 도메인 컨트롤러 컴퓨터에 설치하는 것을 차단하지는 않지만 다음과 같은 제한 사항을 적용합니다.
도메인 컨트롤러에서는 로컬 서비스 계정으로 SQL Server 서비스를 실행할 수 없습니다.
SQL Server 를 컴퓨터에 설치한 후에는 도메인 멤버에서 도메인 컨트롤러로 컴퓨터를 변경할 수 없습니다. 호스트 컴퓨터를 도메인 컨트롤러로 변경하려면 먼저 SQL Server 를 제거해야 합니다.
SQL Server 를 컴퓨터에 설치한 후에는 도메인 컨트롤러에서 도메인 멤버로 컴퓨터를 변경할 수 없습니다. 호스트 컴퓨터를 도메인 멤버로 변경하려면 먼저 SQL Server 를 제거해야 합니다.
SQL Server 장애 조치(failover) 클러스터 인스턴스는 클러스터 노드가 도메인 컨트롤러인 경우 지원되지 않습니다.
SQL Server 설치 프로그램은 읽기 전용 도메인 컨트롤러에서 보안 그룹을 만들거나 SQL Server 서비스 계정을 프로비전할 수 없습니다. 이 경우 설치 프로그램에서 오류가 발생합니다.
SQL Server 설치 중 또는 설치 후
설치 후에는 계정 및 인증 모드와 관련된 모범 사례를 따라 SQL Server 설치의 보안을 강화할 수 있습니다.
서비스 계정
가능한 가장 낮은 권한을 사용하여 SQL Server 서비스를 실행합니다.
SQL Server 서비스를 권한이 낮은 Windows 로컬 사용자 계정 또는 도메인 사용자 계정과 연결합니다.
자세한 내용은 Windows 서비스 계정 및 권한 구성를 참조하세요.
인증 모드
SQL Server 연결에 Windows 인증이 필요합니다.
Kerberos 인증을 사용합니다. 자세한 내용은 Kerberos 연결의 서비스 사용자 이름 등록을 참조하세요.
강력한 암호
sa 계정에는 항상 강력한 암호를 지정합니다.
암호 강도 및 만료를 검사하는 암호 정책을 항상 사용하도록 설정합니다.
모든 SQL Server 로그인에 항상 강력한 암호를 사용합니다.
중요
SQL Server Express를 설정하는 동안 BUILTIN\Users 그룹에 대한 로그인이 추가됩니다. 이렇게 하면 컴퓨터의 모든 인증된 사용자가 공용 역할의 멤버로 SQL Server Express 인스턴스에 액세스할 수 있습니다. 개별 로그인이 있거나 로그인이 있는 다른 Windows 그룹의 구성원인 컴퓨터 사용자에 대한 데이터베이스 엔진 액세스를 제한하기 위해 BUILTIN\Users 로그인을 안전하게 제거할 수 있습니다.
참고 항목
SQL Server 설치를 위한 하드웨어 및 소프트웨어 요구 사항
네트워크 프로토콜 및 네트워크 라이브러리
Kerberos 연결의 서비스 사용자 이름 등록