Thứ Hai, 7 tháng 9, 2015

Các cơ chế bảo mật trong SQL SERVER

Các cơ chế bảo mật trong SQL SERVER

Sơ lược chung về SQL SERVER
Cơ sở dữ liệu và quản trị cơ sở dữ liệu là một trong những vấn đề cốt lõi của tin học. Xét cho cùng ứng dụng tin học để giải quyết các bàitoán thì người ta phải giải quyết vấn đề xây dựng cơ sở dữ liệu và xâydựng thuật toán xử lý chúng. Khi cơ sở dữ liệu càng lớn nhu cầu xử lý phức tạp, yêu cầu bảo mật càng cao thì vấn đề quản trị cơ sở dữ liệu càng phức tạp.
Đối với một số doanh nghiệp, hiệu quả kinh doanh phụ thuộc hoàn toàn vào giá trị thông tin thì vấn đề an toàn thông tin được đặt trọng tâm hàng đầu. Hiện nay, các doanh nghiệp thường gặp khó khăn hoặc không thể trả lời các câu hỏi như: ai đã truy cập đến dữ liệu quan trọng này và vào thời gian nào ? ai đã chỉnh sửa thông tin nhạy cảm của khách hàng ? tại sao dữ liệu này lại bị thay đổi ? hệ thống dữ liệu hiện có bị ai xâm nhập trái phép hay không ? Để trả lời các câu hỏi này, doanh nghiệp cần thiết phải trang bị giải pháp giám sát đầy đủ và chính xác, đồng thời giải pháp phải đảm bảo không tăng tải và làm chậm hệ thống hiện tại. Trong một số lĩnh vực kinh doanh nhạy cảm, tính bí mật của thông cần được bảo đảm tuyệt đối. Thông tin cần đạt tính bí mật và nguyên vẹn ngay khi được lưu trên đĩa cứng, và khi thông tin được trao đổi vào ra trong mạng cũng phải được
Điều đó cho thấy tầm quan trọng của việc bảo vệ dữ liệu trong một hệ quản trị CSDL. Dựa trên những lí do đó, chúng em quyết định chọn đề tài Cơ chế bảo mật trong SQL SERVER. Trong đây sẽ đề cập tới những đặc trưng tính bảo mật CSDL. Trong quá trình tìm hiểu sẽ không tránh khỏi thiếu sót, mong Thầy và các bạn quan tâm theo dõi và đóng góp ý kiến, chúng em xin chân thành tiếp thu và sửa đổi.

Nhóm bao gồm :
( Tự ghi vào )


Kiến trúc Security trong SQL Server dựa vào 3 thành phần chính:
·         Principals: các tài khỏan bảo mật
·         Securables: các đối tựơng được bảo vệ
·         Permissions: quyền sử dụng các Securables của Principals.

Ví dụ dễ hiểu từ Facebook, các tài khoản của các bạn luôn luôn có mật khẩu, các tin nhắn luôn luôn bí mật, nếu các bạn thích riêng tư có thể nội dung bài viết của các bạn ở chế độ xem 1 mình. Đối tượng bảo vệ là những người sử dụng tài khoản.
Đi sâu hơn 1 chút, ta cần phải hiểu luật đất nước ta sống, ví dụ như VN là 1 nước 1 đảng, nếu bạn mà lập cái fanpage Đảng khác thì nên cẩn thận



Giới thiệu SQL Server Authentication (Chế độ xác thực)
SQL Server có 2 cơ chế xác thực User.
SQL Server có thể xác thực các đăng nhập dựa vào cơ chế bên trong của riêng nó hay dựa vào Windows để xác thực việc đăng nhập. Mỗi cơ chế đều có những thuận tiện và bất tiện riêng.
·         SQL Server Authentication: Đây là cơ chế xác thực của SQL Server. Với chế độ này, SQL Server lưu trữ các tài khỏan đăng nhập và mật mã trong database Master.
Điểm thuận tiện của chế độ này là SQL Server có thể xác thực bất kỳ phiên đăng nhập nào mà không quan tâm người dùng đã được xác thực như thế nào trong Window, miễn là họ có một tài khoản SQL Server. Chế độ này làm giảm tính bảo mật.
·         Windows Authentication: cơ chế này dựa vào Windows. Windows thực hiện xác thực và SQL Server tin tưởng điều này và cung cấp quyền truy cập cho các tài khỏan Windows.
DBA có thể cấu hình những chế độ xác thực này bằng 2 cách:
·         Mixed Security: Một login có thể thực hiện dựa vào kết nối SQL Server hay Windows.
Windows Only: Chỉ những login có quyền trong Windows mới được đăng nhập.


Giới thiệu Server-Level Roles:
Để dễ dàng quản lý các Permission trên Server, SQL Server cung cấp các Role. Role cũng tương tự như Groups trong hệ điều hành Windows.
Server-Level Roles còn gọi là Fixed Server Roles. Nó cố định vì ta không thể tạo thêm Server-level roles.
Ví dụ về những Server-level roles tiêu biểu:
·         Sysadmin: thành viên của sysadmin có thể thực hiện bất kỳ hành động nào trên Server.
·         Serveradmin: thành viên của serveradmin có thể thay đổi cấu hình và shut down Server.
·         Securityadmin: thành viên của Securityadmin có thể quản lý các login và thuộc tính của chúng.
Để làm việc với các Server-Level Roles ta có thể dùng các commands, Views, Functions.
Một Số Khái Niệm Về Bảo Mật Trong SQL Server
Login và user
SQL Server cho phép truy nhập vào hệ thống thông qua các login. Chỉ khi có quyền ở mức độ nhất định bạn mới có thể tạo thêm login. Trong SSMS bạn có thể xem các login này bằng cách mở rộng node Security/Logins. Các login này mới chỉ có quyền truy nhập vào server chứ chưa hẳn đã truy nhập được vào các database chứa trong đó.
Đến lượt mỗi database lại duy trì một danh sách các user, các user này luôn luôn đính (mapped) với một login ở mức server. Khi bạn đăng nhập vào SQL Server thông qua login này, bạn sẽ có quyền truy nhập vào database theo quyền hạn mà user tương ứng với nó được cung cấp. Bạn xem các user này bằng cách mở rộng node Security/Users của database tương ứng.
Ví dụ, tôi có một login tên là vuht2000 trong SQL Server. Ở database db1 tôi có user vuht2000 được gắn với login vuht2000, và user này chỉ có quyền đọc. Ở database db2 tôi cũng có user vuht2000 được gắn với cùng login trên, và user này có quyền đọc/ghi. Khi truy nhập vào SQL Server bằng login vuht2000, bạn sẽ có quyền đọc trên database db1 và đọc/ghi trên database db2.
2. Server role
Role thực chất là tập hợp một nhóm các quyền và đại diện bằng một tên để thuận tiện cho việc quản lý. Server role là nhóm các quyền ở mức server mà login khi được cấp sẽ có thể thực hiện một số thao tác nhất định ở mức server. Ví dụ role sysadmin có toàn quyền hoạt động trong server (tạo database, khởi động lại server…) và tự khắc nó cũng có quyền truy nhập vào tất cả database, diskadmin chỉ có quyền trong các thao tác về đĩa (như bổ sung thêm file vào database…). Login khi mới được tạo sẽ có role public, role này thực chất không có quyền gì ngoài quyền truy nhập vào server. Thông thường chỉ DBA mới nên có quyền sysadmin, còn các developer chỉ cần role public và bổ sung thêm khi cần.
3. Database role
Cũng với mục đích như vậy, database role tập hợp các quyền truy nhập vào database thành từng nhóm để dễ tạo lập và sửa đổi. Ví dụ role db_datareader có quyền đọc dữ liệu từ tất cả các bảng, role db_datawriter có quyền ghi vào tất cả các bảng; role db_owner có quyền cao nhất trong database (tạo bảng, tạo thủ tục, thực thi thủ tục…). Các user đều mặc định có role public. Khi user chỉ có role public, user chỉ có thể nhìn thấy tên database mà không có quyền gì khác.
4. Authentication
SQL Server xác thực các đăng nhập bằng hai cơ chế, windows authentication và SQL Server authentication. Việc này bắt nguồn từ khi tạo login trong SQL Server. Khi bạn tạo một login mới, SQL Server sẽ yêu cầu bạn chọn cơ chế xác thực windows hay SQL Server cho login đó. Nếu chọn windows, bạn cần cung cấp một windows account và SQL Server sẽ chỉ lưu tên của account đó trong danh sách login. Nếu chọn SQL Server authentication, bạn cần cung cấp login name và password và cả hai đều được lưu trong SQL Server.
Khi đăng nhập vào SQL Server, bạn cũng sẽ phải chọn một trong hai cơ chế xác thực. Nếu chọn windows, chính account hiện đang đăng nhập vào windows được dùng. Bạn không có quyền chọn login và thực tế, SQL Server sẽ vòng xuống windows và kiểm tra xem account nào đang đăng nhập vào windows, nó sẽ lấy account đó và xem có nằm trong danh sách login của nó hay không. Nếu có thì nó cho vào còn nếu không nó sẽ chặn lại.
Còn với SQL Server authentication thì cơ chế giống như bình thường – bạn cung cấp login ID và password. SQL Server sẽ kiểm tra và quyết định có cho vào hay không.
Một điểm cần lưu ý là với login sử dụng windows authentication, SQL Server chỉ lưu login name và không hề lưu password. Và khi đăng nhập nếu bạn cố tình chọn sang SQL Server authentication, hệ thống sẽ không xác thực cho bạn.

·          



Không có nhận xét nào:

Đăng nhận xét