Như thực tiễn tốt nhất của SQL Server nói, " Chế độ xác thực Windows an toàn hơn xác thực SQL ". Và bây giờ tôi muốn biết: có cách nào để bảo vệ SQL Server khỏi người dùng với quyền quản trị viên Windows không?
Như thực tiễn tốt nhất của SQL Server nói, " Chế độ xác thực Windows an toàn hơn xác thực SQL ". Và bây giờ tôi muốn biết: có cách nào để bảo vệ SQL Server khỏi người dùng với quyền quản trị viên Windows không?
Câu trả lời:
Không.
Nếu người dùng là Quản trị viên Windows của hộp, giả sử rằng họ sở hữu mọi thứ trên hộp (bao gồm SQL Server). Với quyền Quản trị viên Windows, việc bỏ qua bất kỳ sự bảo vệ được nhắm mục tiêu nào mà bạn áp dụng (chẳng hạn như trình kích hoạt đăng nhập xác định tên người dùng của họ) là rất đơn giản mạo danh người khác (bao gồm cả NT AUTHORITY\SYSTEM
quyền quản trị trên thực tế đối với tất cả các phiên bản SQL Server cục bộ ). Kiểm toán sẽ không giúp được gì nhiều, vì họ có thể dễ dàng tắt nó đi, nhưng bạn nên có nó trong trường hợp này.
Nếu bạn không tin tưởng ai đó, đừng cho họ quyền Quản trị viên Windows, thời gian.
Không, không thể ngăn chặn hoàn toàn các quản trị viên cục bộ sysadmin
truy cập vào phiên bản SQL Server.
Nếu phiên bản được khởi động lại ở chế độ người dùng đơn , SQL Server được mã hóa cứng để cho phép các sysadmin
đặc quyền của quản trị viên cục bộ , mặc dù có thể không có thông tin đăng nhập rõ ràng. Lý do điều này tồn tại là vì mục đích phục hồi vì có thể tự khóa mình khỏi một ví dụ.
Điều đó nói rằng, hạn chế quyền truy cập trong khi phiên bản đang chạy ở chế độ nhiều người dùng (không bị gián đoạn dịch vụ) không khó như vậy. Như Aaron đã đề cập, quản trị viên cục bộ có thể mạo danh NT AUTHORITY\SYSTEM
, theo mặc định có sysadmin
thông tin đăng nhập -level được tạo trong SQL Server 2008. Điều này có thể được khai thác để khôi phục sysadmin
quyền truy cập trong khi máy chủ đang chạy. (Lưu ý: trong SQL Server 2012, thông tin đăng nhập này không còn nữa sysadmin
.) Tôi không biết chính xác thông tin đăng nhập này được sử dụng cho mục đích gì (nâng cấp / sửa lỗi nóng / v.v., có lẽ), nhưng tôi nghĩ an toàn để vô hiệu hóa ngoại trừ trong khi những sự kiện đó Nếu không có thông tin đăng nhập không thể mạo danh khác, điều đó là đủ để từ chối truy cập. Một lần nữa, chỉ khi cá thể đang chạy, không bị gián đoạn .
Theo mặc định trong SQL 2008 và 2012, không có quyền truy cập mặc định cho quản trị viên Windows vào SQL Server. Để quản trị viên Windows (nghĩa là người nào đó là Quản trị viên tên miền hoặc Quản trị viên cục bộ) có quyền truy cập, thông tin đăng nhập của họ cần được cấp quyền truy cập rõ ràng hoặc nhóm mà họ thuộc quyền truy cập cùng với quyền trong chính SQL Server. Bạn được yêu cầu, khi thiết lập thể hiện, để chỉ định một nhóm đăng nhập hoặc nhóm Active Directory làm quản trị viên, nhưng tên đăng nhập / nhóm đó có thể là bất kỳ ai trong miền của bạn.
Trong SQL 2005, có một BUILTIN\Administrators
nhóm có quyền truy cập sysadmin. Nhóm này sẽ cho phép quản trị viên địa phương sysadmin truy cập vào SQL Server. Nhóm này có thể được gỡ bỏ khỏi SQL Server và nó được coi là thực tiễn tốt nhất để làm như vậy.
Điều đó đang được nói, không có cách nào để ngăn Windows (cục bộ hoặc tên miền) ảnh hưởng đến máy chủ mà SQL Server sống. Điều này có nghĩa là các quản trị viên vẫn có thể ảnh hưởng đến các dịch vụ và cấu hình cấp hệ điều hành, thay đổi bảo mật thư mục và các tác vụ cấp hệ điều hành khác. Rốt cuộc, đây là lý do tại sao họ là quản trị viên Windows.
Nói chung, bạn nên tin tưởng quản trị viên của mình, cả SQL Server và Windows. Mặc dù các quản trị viên Windows không thể thực hiện các tác vụ hoặc truy cập dữ liệu (theo mặc định) trong chính Máy chủ SQL, họ vẫn kiểm soát môi trường mà SQL Server của bạn sống. Bạn cần quan tâm với những người bạn giao cho những vai trò đó.