Trước khi tìm hiểu sâu về cách cách bảo mật sql server, bạn cần nắm chắc kiến thức về bảo mật database trong SQL server.
4 Khái niệm cơ bản về bảo mật database trong SQL Server
1. Login và user
SQL Server chỉ cho phép bạn truy cập vào hệ thống thông qua những login. Chỉ khi bạn có quyền hạn ở mức độ nhất định thì bạn mới có thể tạo thêm những login khác. Ở trong SSMS bạn có thể xem tất cả các login bằng cách mở rộng những node Security/Logins. Những Login này chỉ có quyền truy cập vào Server chứ chưa thể vào được database(cơ sở dữ liệu) ở bên trong.
Với mỗi cơ sở dữ liệulại duy trì 1 danh sách những người dùng, các người dùng này luôn luôn đính với 1 login ở mức độ Server. Nếu bạn đăng nhập vào SQL Server qua login này, bạn sẽ có quyền truy cập vào cơ sở dữ liệu theo quyền hạn mà người dùng tương ứng với nó được cung cấp. Bạn có thể xem những người dùng này bằng cách mở rộng Security/Users của cơ sở dữ liệu tương ứng.
Có vẻ khái niệm bảo mật dữ liệu SQL Server này hơi khó hiểu đúng không, SecurityBox sẽ gửi đến bạn ví dụ sau đây. Tôi có một login có tên là vuht2000 ở trong SQL Server. Ở trong cơ sở dữ liệu db1, tôi có người dùng tên là vuht2000 và được gắn với login vuht2000, và tất nhiên người dùng này chỉ có quyền đọc. Ở trong cơ sở dữ liệu 2, tôi cũng có người dùng vuth2000 cũng được gắn cùng với login ở trên, và người dùng này có quyền đọc và ghi. Khi truy cập vào SQL Server bằng vuht2000, bạn chỉ có quyền đọc trên db1 nhưng bạn lại có thể đọc và ghi trên db2.
2. Server role
Role là một tập hợp 1 nhóm những quyền và được đại diện bằng 1 tên thể có thể thuận tiện trong việc quản lý. Server role chính là nhóm những quyền ở mức độ Server, mà khi các login được cấp chúng sẽ có thể làm một số thao tác ở mức độ Server.
Lại một khái niệm bảo mật SQL Server khó hiểu đúng không, SecurityBox sẽ lấy ví dụ cho bạn đọc dễ hiểu nhé. Ví dụ như role sysadmin có toàn quyền hoạt động ở trong Server và tự nó cũng có quyền truy cập vào toàn bộ cơ sở dữ liệu. Và “diskadmin” chi có quyền về những thao tác như bổ sung tập tin vào cơ sở dữ liệu.
Những login khi được tạo thì role mặc định là public. Role này thực chất không có bất kỳ quyền nào cả ngoại trừ quyền truy cập vào Server. Thường thường chỉ có DBA mới có quyền sysadmin còn với những developer thì chỉ là role public và thi thoảng bổ sung thêm khi có thêm những tác vụ liên quan.
3. Database role
SecurityBox có thể giải thích khái niệm bảo mật cơ sở dữ liệu trong SQL Server này đơn giản là database tập hợp những quyền truy cập vào cơ sở dữ liệu thành từng nhóm để có thể dễ tạo và sửa đổi.
Ví dụ như trong vấn đề bảo mật server thì role db_datareader chỉ có quyền đọc dữ liệu từ các bảng, role db_datawriter chỉ có quyền ghi vào bảng, role db_owner thì có quyền cao nhất như tạo bảng, tạo thủ tục và thực thi những thủ tục đó. Những người dùng mặc định như đã nói ở trên đều có chung role là public. Khi người dùng chỉ có role này thì họ chỉ có nhìn thấy cơ sở dữ liệu mà không có thêm quyền gì khác
4. Authentication
SQL Server xác thực những đăng nhập với 2 cơ chế, đó là SQL Server authentication và Windows authentication. Điều này bắt nguồn khi tạo những login ở trong SQL Server, khi bạn tạo mới 1 login, SQL Server sẽ đưa ra yêu cầu bạn phải chọn 1 trong 2 cơ chế xác thực ở trên. Nếu bạn chọn loại thứ 1 đó là SQL Server authentication thì bạn cần phải cung cấp tên đăng nhập và mật khẩu và cả 2 đều được lưu trong SQL Server. Nếu bạn chọn loại còn lại thì bạn chỉ cần cung cấp một tài khoản Windows Account và sau đó SQL Server chỉ lưu trên tài khoản trong danh sách login mà thôi.
SecurityBox sẽ giải thích khái niệm bảo mật database trong SQL Server này một cách chi tiết hơn như sau.
Khi bạn đăng nhập vào SQL Server, bạn sẽ phải chọn một trong 2 cơ chế xác thực như ở trên, tài khoản hiện tại đang muốn đăng nhập vào Windows sẽ được dùng nếu bạn chọn Windows authentication. Thực tế bạn không có quyền chọn login và SQL Server sẽ gửi lệnh đến Windows và kiểm tra có tài khoản nào đang muốn đăng nhập vào Windows hay không rồi nó sẽ kiểm tra tài khoản đó có nằm trong danh sách login hay không. Nếu không thì sẽ chặn tài khoản đó lại, còn nếu có tất nhiên nó sẽ được đăng nhập vào.
Với kiểu SQL Server authentication thì nguyên lý hoạt động giống như bình thường. Bạn đăng nhập vào với người dùng và mật khẩu. SQL Server sẽ kiểm tra xem và đưa ra quyết định có cho đăng nhập vào hay là không. Một điểm cần chú ý đó là với login dùng Windows, SQL chỉ lưu tên login chứ không lưu mật khẩu. Khi đăng nhập nếu bạn cố ý chọn sang SQL Server thì hệ thống sẽ không xác thực cho bạn nữa
Như vậy bạn đọc đã cùng SecurityBox tìm hiểu qua về 4 khái niệm cơ bản về bảo mật database trong SQL Server, hãy đón đọc thêm những bài viết thú vị khác của SecurityBox nhé.
>> Đọc thêm: Những giải pháp bảo mật thông tin và dữ liệu hiệu quả