데이터 및 로그 파일 보안
SQL Server에서는 특정 계정에 대해 각 데이터베이스의 물리적 데이터 및 로그 파일에 대한 파일 액세스 권한이 설정됩니다. 이러한 사용 권한을 설정하면 누구나 액세스할 수 있는 디렉터리에 있는 파일이 손상되는 것을 막을 수 있습니다. 예를 들어 사용 권한을 설정하지 않고 데이터베이스 디렉터리에 대한 운영 체제 권한을 모든 사용자에게 모든 권한으로 설정하면 데이터베이스 자체를 수정할 수 있는 SQL Server 권한이 없는 계정에서도 해당 디렉터리에 대한 액세스 권한만 있으면 데이터베이스 파일을 삭제하거나 수정할 수 있습니다.
파일 액세스 권한은 만들기, 연결, 분리, 새 파일 추가를 위한 수정, 백업 또는 복원과 같은 데이터베이스 작업을 수행하는 동안 설정됩니다.
관리 고려 사항
사용 권한은 NTFS 파일 시스템과 같이 파일 시스템에서 Win32 액세스 제어를 지원하는 경우에만 설정할 수 있습니다. 데이터베이스 엔진에서는 원시 파티션 또는 FAT 및 FAT32 파일 시스템에 저장된 파일에 대해서는 사용 권한을 설정할 수 없습니다.
운영 체제 관리자가 파일 사용 권한을 수동으로 수정하면 데이터베이스 엔진은 원래 사용 권한을 적용하지 않습니다.
SQL Server Management Studio를 사용하여 SQL Server(MSSQLSERVER) 서비스 계정을 변경하면 Management Studio에서 계정을 추가하고 모든 기존 데이터베이스 파일에 대한 사용 권한을 수정합니다. 서비스 계정을 변경할 때 사용할 수 없는 데이터베이스에 대해서는 이 작업이 실패할 수 있습니다.
Microsoft Windows 서비스를 사용하여 MSSQLSERVER 서비스 계정을 변경한 경우 운영 체제 관리자는 새 서비스 계정에 모든 데이터베이스 및 로그 파일에 대한 모든 권한을 부여해야 합니다.
데이터베이스 만들기 또는 새 파일 추가
데이터베이스를 만들거나 새 파일을 추가하기 위해 수정하면 MSSQLSERVER 서비스 계정과 로컬 Administrators 그룹 멤버에게 데이터 및 로그 파일에 대한 모든 권한이 부여됩니다. 또한 다른 모든 계정에 대한 파일 액세스 권한은 제거됩니다.
데이터베이스 백업 및 복원
MSSQLSERVER 서비스 계정과 로컬 Administrators 그룹 멤버에게는 파일을 복원 또는 백업할 수 있는 모든 권한이 부여됩니다.
MSSQLSERVER 서비스 계정에 이미 사용 권한이 부여되어 있는 기존 파일의 경우 백업 또는 복원 작업은 계속됩니다. 그렇지 않은 경우 데이터베이스 엔진은 이 작업을 수행하는 연결의 Windows 계정을 가장하여 파일 열기를 시도합니다. 파일이 열리면 MSSQLSERVER 서비스 계정과 로컬 Administrators 그룹 멤버에게 사용 권한이 부여됩니다.
대기 파일(실행 취소 파일)도 이와 동일한 방법으로 처리됩니다.
데이터베이스 분리 및 연결
데이터베이스를 분리 또는 연결하는 경우 데이터베이스 엔진은 이 작업을 수행하는 연결의 Windows 계정을 가장하여 해당 계정에 데이터베이스 및 로컬 파일 액세스 권한을 부여하려고 시도합니다. SQL Server 로그인을 사용하는 혼합 보안 계정에는 이러한 가장 방법을 사용할 수 없습니다.
보안 정보 |
---|
알 수 없거나 신뢰할 수 없는 출처의 데이터베이스는 연결하지 않는 것이 좋습니다. 이러한 데이터베이스에 포함된 악성 코드가 의도하지 않은 Transact-SQL 코드를 실행하거나 스키마 또는 물리적 데이터베이스 구조를 수정하여 오류가 발생할 수 있습니다. 알 수 없거나 신뢰할 수 없는 출처의 데이터베이스를 사용하기 전에 프로덕션 서버가 아닌 서버에서 해당 데이터베이스에 대해 DBCC CHECKDB를 실행하고 저장 프로시저 또는 다른 사용자 정의 코드 같은 데이터베이스의 코드도 검사하십시오. |
다음 표에서는 연결 또는 분리 작업이 완료된 후에 데이터베이스와 로그 파일에 설정되는 사용 권한과 데이터베이스 엔진에서 연결 계정을 가장할 수 있는지 여부를 보여 줍니다.
작업 |
연결 계정을 가장할 수 있음 |
파일 사용 권한 부여 대상 |
---|---|---|
분리 |
예 |
작업을 수행하는 계정만. 데이터베이스가 분리된 후에 추가 계정이 필요한 경우에는 운영 체제 관리자가 추가할 수 있습니다. |
분리 |
아니요 |
SQL Server(MSSQLSERVER) 서비스 계정 및 로컬 Windows Administrators 그룹 멤버 |
연결 |
예 |
SQL Server(MSSQLSERVER) 서비스 계정 및 로컬 Windows Administrators 그룹 멤버 |
연결 |
아니요 |
SQL Server(MSSQLSERVER) 서비스 계정 |
시나리오
다음 시나리오에서는 데이터베이스를 만들 때 설정되고 데이터베이스를 분리 및 연결할 때 수정되는 사용 권한을 보여 줍니다.
dbcreator 고정 서버 역할의 멤버인 User1은 Sales 데이터베이스를 만들고 파일을 e:\Data\Sales.mdf 및 f:\Log\Sales.ldf에 저장합니다. 데이터베이스를 만들 때 MSSQLSERVER 서비스 계정은 로컬 계정인 SQLServiceAccount2입니다. SQLServiceAccount2 및 Windows Administrators 그룹 멤버에게 데이터베이스와 로그 파일에 대한 모든 권한이 부여됩니다.
그런데 Sales 데이터베이스를 동일한 서버의 다른 SQL Server 인스턴스로 이동하기로 했습니다. sysadmin 고정 서버 역할의 멤버인 Admin3이 데이터베이스를 분리합니다. 데이터베이스 엔진이 Admin3 계정만 파일에 액세스할 수 있도록 Sales.mdf 및 Sales.ldf 파일에 대한 사용 권한을 설정합니다.
Admin3은 SQL Server의 다른 인스턴스인 SalesServer에 연결합니다. SalesServer 인스턴스에 대한 MSSQLSERVER 서비스 계정은 SQLSalesServiceAccount입니다. 이 인스턴스의 SQL Server 관리자인 Admin3은 Sales 데이터베이스를 연결합니다. SQLSalesServiceAccount와 Windows Administrators 그룹 멤버에게 모든 권한이 부여됩니다.