SQL Server – Một số khái niệm về tính bảo mật

SQL Server – Một số khái niệm về tính bảo mật

1. 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.

Nguồn: sqlviet[dot]com