SQL Server는 애플리케이션, 분석 및 보고에 대한 중요한 비즈니스 데이터를 저장하고 관리하는 RDBMS(관계형 데이터베이스 관리 시스템)입니다. 고객 레코드, 재무 데이터 및 지적 재산권과 같은 중요한 정보를 포함하는 경우가 많기 때문에 SQL Server 보안은 데이터 침해, 무단 액세스 및 규정 준수 위험으로부터 조직을 보호하는 데 필수적입니다.
이 문서에서는 SQL Server를 가장 안전하게 보호하는 방법에 대한 지침을 제공합니다.
네트워크 보안
SQL Server에 대한 네트워크 액세스를 보호하면 무단 연결을 방지하고 공격에 대한 노출을 줄이며 신뢰할 수 있는 원본만 데이터베이스에 연결할 수 있습니다.
방화벽 및 NSG를 사용하여 인바운드 트래픽 제한: 데이터베이스 엔진 액세스를 위해 Windows 방화벽을 구성하여 SQL Server에 대한 네트워크 액세스를 제한합니다. Azure VM(가상 머신)의 SQL Server의 경우 Azure Firewall 및 NSG(네트워크 보안 그룹) 를 사용하여 이러한 제한을 적용합니다.
SQL Server에 대한 연결 암호화: 인증서를 사용하여 연결을 암호화하도록 SQL Server 데이터베이스 엔진을 구성합니다. 이렇게 하면 전송 중인 데이터가 도청 및 변조로부터 보호됩니다. 자세한 내용은 SQL Server 데이터베이스 엔진에 대한 연결 암호화를 참조하세요.
보안 원격 관리: 모든 원격 연결에 암호화된 프로토콜(예: TLS 1.3)을 사용합니다. 자세한 내용은 TLS 1.3 구성을 참조하세요.
엄격한 암호화를 사용하여 SQL Server에 연결: SQL Server 2022에는 암호화를 사용하기 위해 모든 연결이 필요한 암호화 옵션이 도입되었습니다
strict. 이렇게 하면 전송 중인 모든 데이터가 보호됩니다. 자세한 내용은 엄격한 암호화를 사용하여 SQL Server에 연결을 참조하세요.
ID 관리
강력한 ID 및 인증 제어를 사용하면 권한 있는 사용자 및 애플리케이션만 SQL Server 리소스에 액세스할 수 있습니다.
Windows 인증 또는 Microsoft Entra 인증 사용: 중앙 집중식 ID 관리 및 더 쉬운 계정 수명 주기 제어를 위해 SQL 인증보다 Windows 인증 또는 Microsoft Entra 인증을 선호합니다. 자세한 내용은 인증 모드 선택을 참조하세요.
서비스에 gMSA(그룹 관리 서비스 계정) 사용: gMSA를 사용하여 서비스 계정 자격 증명을 자동으로 안전하게 관리합니다. 자세한 내용은 Group-Managed 서비스 계정 개요를 참조하세요.
강력한 암호 정책 적용: SQL 인증을 사용하는 경우 쉽게 추측할 수 없고 다른 계정에 사용되지 않는 복잡한 암호가 필요합니다. 정기적으로 암호를 업데이트하고 Active Directory 정책을 적용합니다. 자세한 내용은 강력한 암호를 참조하세요.
적절한 경우 포함된 데이터베이스 사용자 사용: 서버 수준 로그인 없이 데이터베이스 수준 인증이 필요한 애플리케이션에 대해 포함된 데이터베이스 사용자를 고려합니다. 자세한 내용은 포함된 데이터베이스 사용자를 참조하세요.
권한 있는 액세스
권한 있는 액세스를 제한하고 모니터링하면 무단 변경을 방지하고 손상된 계정의 영향을 줄일 수 있습니다.
필요한 최소 권한 부여: 각 사용자 또는 서비스에 필요한 가장 낮은 수준의 권한을 할당합니다. 최소 권한을 유지하려면 정기적으로 사용 권한을 검토하고 조정합니다. 자세한 내용은 데이터베이스 엔진 사용 권한 시작을 참조하세요.
별도의 DBA(데이터베이스 관리자) 및
sysadmin역할: 모든 DBA에sysadmin대한 권한을 부여하지 마세요. 사용 권한을 존중하고 보다 세부적인 제어를 허용하므로 가능하면DENY권한을 사용합니다. 가상 머신에 대한 액세스를 제한하는 업무 분리, 운영 체제에 로그인하는 기능, 오류 및 감사 로그를 수정하는 기능, 애플리케이션 및/또는 기능을 설치하는 기능을 고려합니다. 자세한 내용은 사용 권한(데이터베이스 엔진)을 참조하세요.권한 있는 활동 모니터링 및 감사: 감사를 사용하여 권한 있는 계정의 변경 내용을 추적하고 의심스러운 활동에 대한 로그를 정기적으로 검토합니다. 자세한 내용은 SQL Server Audit(데이터베이스 엔진)을 참조하세요.
역할 분리 구현: AD 그룹에 Active Directory 사용자를 배치하고, AD 그룹을 SQL Server 역할에 매핑하고, SQL Server 역할에 애플리케이션에 필요한 최소 권한을 부여합니다. 자세한 내용은 데이터베이스 엔진 사용 권한 시작을 참조하세요.
데이터 보호
무단 공개 또는 변조를 방지하기 위해 미사용 데이터와 전송 중인 데이터를 보호하는 것이 중요합니다.
상시 암호화를 사용하여 중요한 정보 암호화: 보안 Enclave와 함께 Always Encrypted 및 Always Encrypted를 사용하여 SQL Server에서 중요한 데이터를 보호합니다. 더 강력한 보안을 위해 임의 암호화를 선호합니다. 자세한 내용은 Always Encrypted를 참조하세요.
데이터베이스 파일에 TDE(투명한 데이터 암호화) 사용: TDE를 사용하여 데이터베이스, 백업 및 tempdb 파일을 암호화하고 물리적 미디어가 손상된 경우 데이터를 보호합니다. 자세한 내용은 TDE(투명한 데이터 암호화)를 참조하세요.
DDM(동적 데이터 마스킹)을 사용하여 중요한 데이터 마스킹: 암호화가 불가능한 경우 DDM을 사용하여 쿼리 결과에서 중요한 데이터를 난독 처리합니다. 자세한 내용은 동적 데이터 마스킹을 참조하세요.
열 수준 사용 권한 부여: 권한 있는 사용자에게만 권한을 부여하여
SELECTREFERENCES중요한 열에 대한 액세스를 제한합니다UPDATE. 자세한 내용은 사용 권한을 참조GRANT하세요.Row-Level 보안(RLS)을 사용하여 데이터 액세스를 제한합니다. RLS를 구현하여 사용자에게 관련 데이터만 볼 수 있도록 합니다. 사용자가 SQL 계정을 공유하는 중간 계층 애플리케이션에 사용합니다
SESSION_CONTEXT. 자세한 내용은 Row-Level 보안을 참조하세요.최대 보호를 위한 보안 기능 결합: Row-Level 보안을 Always Encrypted 또는 동적 데이터 마스킹과 함께 사용하여 조직의 보안 상태를 최대화합니다. 자세한 내용은 Row-Level 보안 모범 사례를 참조하세요.
로깅 및 위협 감지
포괄적인 로깅 및 모니터링은 위협을 감지하고 인시던트 조사를 수행하며 규정 준수 요구 사항을 충족하는 데 도움이 됩니다.
SQL Server 감사 사용 및 구성: 서버 및 데이터베이스 수준에서 중요한 데이터 및 구성의 액세스 및 변경을 감사합니다. 보안 조치가 적용된 중요한 데이터가 있는 테이블 및 열을 감사하는 것이 좋습니다. 특히 완전한 보안 조치가 불가능한 중요한 정보가 포함된 테이블의 경우 감사 로그를 정기적으로 검토합니다. 자세한 내용은 SQL Server Audit(데이터베이스 엔진)을 참조하세요.
SQL Server에서 원장 사용: 원장을 사용하도록 설정하여 중요한 데이터에 대한 변경 내용의 변경할 수 없는 레코드를 만들어 변조 방지 로깅을 제공합니다. 자세한 내용은 원장 데이터베이스 구성을 참조하세요.
백업 및 복구
신뢰할 수 있는 백업 및 복구 프로세스는 오류, 재해 또는 공격으로 인한 손실로부터 데이터를 보호합니다.
일반 백업 자동화: 데이터베이스, 시스템 구성 및 트랜잭션 로그에 대한 자동화된 백업을 예약합니다. Azure Backup 또는 SQL Server 네이티브 도구를 사용합니다. 자세한 내용은 SSMS를 사용하여 SQL Server 데이터베이스 백업 및 복원 , Azure VM의 SQL Server에 대한 백업 및 복원을 참조하세요.
백업 데이터 암호화: TDE(투명한 데이터 암호화)를 사용하여 백업 파일을 보호합니다.
정기적으로 복구 절차 테스트: 주기적으로 백업을 복원하여 복구 프로세스의 유효성을 검사하고 복구 시간 및 지점 목표를 충족할 수 있는지 확인합니다. 자세한 내용은 VM 백업에서 파일 복원을 참조하세요.
보안 평가 및 위협 완화
SQL Server 환경을 정기적으로 평가하면 취약성을 식별하고 보안 태세를 개선하는 데 도움이 됩니다.
공격 노출 영역을 줄이기 위한 제한 사용 기능: 환경에 필요한 SQL Server 기능만 사용하도록 설정합니다. 자세한 내용은 노출 영역 구성을 참조하세요.
취약성 평가 실행: SQL용 Microsoft Defender 통해 제공되는 SQL 취약성 평가를 사용하여 클라우드 및 온-프레미스 리소스에서 잠재적인 데이터베이스 취약성을 검색하고 수정합니다. 자세한 내용은 SQL Server 대한 취약성 평가를 참조하세요.
중요한 데이터 분류 및 레이블 지정: SQL 데이터 검색 및 분류를 사용하여 더 나은 보호 및 규정 준수를 위해 중요한 데이터를 식별하고 레이블을 지정합니다. 자세한 내용은 SQL 데이터 검색 및 분류를 참조하세요.
일반적인 위협 검토 및 완화: 입력 유효성 검사, 패치 및 액세스 제어에 대한 권장 사례를 따라 SQL 삽입, 사이드 채널 공격, 무차별 암호 대입, 암호 스프레이 및 랜섬웨어로부터 보호합니다. 자세한 내용은 SQL 삽입 및 랜섬웨어 공격을 참조하세요.
심층 방어 보안 구현: 다양한 보안 범위를 대상으로 하는 여러 보안 기능을 사용하여 다양한 위협에 대한 포괄적인 보호를 제공합니다. 자세한 내용은 SQL Server 보안 모범 사례를 참조하세요.