Tìm hiểu về khái niệm role trong SQL Server
Trong bất kỳ hệ thống cơ sở quản trị dữ liệu nào, thì vấn đề an ninh, bảo mật luôn được
đặt lên hàng đầu. Và với SQL Server, nếu chúng ta tận dụng được nhiều ưu điểm của ứng
dụng này, những người làm công việc quản trị hệ thống sẽ giảm bớt được rất nhiều gánh
nặng cũng như áp lực trong công việc. Với bài viết hướng dẫn dưới đây, chúng tôi sẽ giới thiệu
với các bạn một số thông tin cơ bản cũng như cách sử dụng, quản lý role của SQL Server.
Bước đầu tiên cần thực hiện trong toàn bộ quá trình bảo mật dữ liệu cho người dùng là xác định
rõ ràng những tài khoản nào sẽ được quyền truy cập, xem hoặc chỉnh sửa dữ liệu. Ví dụ, các
trưởng bộ phận có thể xem được tài khoản lương của nhân viên, trong khi các bậc quản lý ở cấp
cao hơn sẽ có quyền xem và chỉnh sửa, trong khi nhân viên chỉ có thể xem được tài khoản của
chính họ.
Tiếp theo, cần phải xác định rõ tài khoản nào sẽ được cấp quyền điều chỉnh, thay đổi cơ sở dữ
liệu. Do vậy, tùy từng mô hình hệ thống, quy mô của công ty, tổ chức mà khối lượng công việc
của người quản trị cũng sẽ tăng lên, bên cạnh đó, kiến thức và kinh nghiệm sử dụng của mỗi
người lại khác nhau, do vậy việc làm sao đảm bảo được mức an toàn tối thiểu cho toàn bộ nhân
viên cũng trở nên vất vả hơn rất nhiều. Cụ thể, trong phần tiếp theo của bài viết, chúng tôi sẽ đề
cập đến khái niệm role và mối quan hệ với Windows Group, làm thế nào để gán thêm hoặc từ
chối quyền truy cập của 1 hoặc nhiều tài khoản người dùng trong thời gian hoạt động.
Về mặt bản chất, role là 1 phần của tiered security model:
- Login security: thực hiện quá trình kết nối tới server
- Database security: nhận quyền truy cập tới cơ sở dữ liệu
- Database object: nhận quyền truy cập tới từng đối tượng và dữ liệu riêng biệt trong toàn hệ
thống
Trước tiên, người dùng phải tiến hành đăng nhập vào server bằng cách nhập mật khẩu, sau khi
quá trình kết nối này hoàn tất, việc truy cập tới các cơ sở dữ liệu đã lưu trữ sẽ được thực hiện qua
việc chỉ định tài khoản. Và khi người quản trị đã hoàn tất việc gán quyền cho những tài khoản
này, họ sẽ không thể truy cập đến những vùng dữ liệu không được phép khác.
Tuy nhiên, ưu điểm lớn nhất của việc sử dụng role chính là hiệu quả trong quá trình quản lý. Các
bạn hãy thử tưởng tượng rằng, nếu 1000 nhân viên cần xem hoặc chỉnh sửa dữ liệu cá nhân của
tác vụ hoạt động của SQL Server
- Security Admin: toàn bộ người dùng đều có thể quản lý các thành phần có liên quan đến an
ninh, bảo mật
- ProcessAdmin: toàn bộ người dùng đều có thể tắt hoặc tạm dừng bất kỳ tiến trình nào hoạt
động trên SQL Server
- DbCreator: toàn bộ người dùng đều có thể tạo, thay đổi, xóa hoặc khôi phục cơ sở dữ liệu
- DiskAdmin: toàn bộ người dùng có thể quản lý các file của SQL Server
- BulkAdmin: toàn bộ người dùng có thể thực hiện nhiều lệnh insert khác nhau
Tiếp theo, chúng ta sẽ sử dụng SQL Server Enterprise Manager để gán Windows group và cơ
sở dữ liệu Pubs (database mẫu đi kèm với SQL Server 2000). Bước đầu tiên là tạo tài khoản đăng
nhập của Group Guest, qua đó người sử dụng có thể truy cập được vào SQL Server:
- Khởi động Enterprise Manager, mở thư mục security
- Nhấn chuột phải vào mục Logins, chọn New Login từ menu hiển thị, cửa sổ New Login sẽ
hiển thị như hình dưới. Lưu ý rằng trong trường hợp này, Windows Authentication đã được lựa
chọn sẵn, và chúng ta sẽ sử dụng Windows Authentication Mode, trái ngược với SQL Server
Mixed Mode (Mixed Mode bao gồm Windows Security và mô hình bảo mật sẵn có của SQL
Server, và Windows Authentication luôn khuyến cáo được sử dụng cùng với SQL Server):
- Nhấn nút bên cạnh ô Name để hiển thị SQL Server Login Properties – New Login, chọn tiếp
Windows group tương ứng (ở đây là Guests), nhấn tiếp nút Add sau đó nhấn OK để đóng cửa sổ
SQL Server Login Properties—New Login:
- Tại thẻ General, chọn cơ sở dữ liệu Pubs từ danh sách Database, lựa chọn mặc định là
Master nhưng các bạn đừng nên gán quyền truy cập cho database này, bởi vì nó sẽ can thiệp trực
tiếp tới quá trình cài đặt của SQL Server.
- Chọn tiếp thẻ Database Access để xem thông tin về cơ sở dữ liệu có sẵn trên hệ thống
Để tiếp tục, chúng ta phải chọn database mặc định trước khi SQL Server kích hoạt role database.
Chọn tiếp Pubs (như hình dưới), phần Public role sẽ tự động được gán. Tại thời điểm này,
chúng ta có thể chọn và gán bất kỳ role nào, bên cạnh đó, group Guest đã được liệt kê sẵn trong
Sau khi tạo role mới - Purchasing dành cho database Pubs, chúng ta phải khởi tạo tài khoản
user nào sẽ được gán vào role của Purchasing (qua group Guest). Và cũng tại đây, các bạn hãy
thiết lập 1 vài mức phân quyền đơn giản cho role Purchasing này:
- Mở lại phần role Purchasing vừa tạo ở bước trên trong cửa sổ Enterprise Manager, và lần
này nút chức năng Permissions sẽ hoạt động được
- Nhấn nút Permissions để mở bảng điều khiển thuộc tính Database Role Properties. Tại đây,
các bạn có thể thiết lập mức phân quyền tương ứng cho từng đối tượng tại đây.
- Ví dụ, nếu đánh dấu vào cột Delete như hình trên tại dòng authors thì toàn bộ thành viên của
role này đều có thể xóa các bản ghi dữ liệu trong bảng Authors
- Nếu để ý kỹ, các bạn có thể thấy rằng việc lựa chọn bảng Authors đồng thời cũng đã kích hoạt
nút chức năng Columns. Nhấn vào nút Columns này để hiển thị bảng Column Permissions.
Trong bảng này, chúng ta có thể giới hạn số lượng truy cập trong từng cột nhất định.
Các server role server từ trước đến nay, như 1 quy luật chung chung, phần lớn những người quản
trị sẽ không tiến hành gán bất kỳ tài khoản người dùng nào tới server role cố định, vì chúng chỉ
được dùng cho việc quản trị cơ sở dữ liệu và tài khoản Administrator. Nhưng bên cạnh đó, chúng
ta vẫn có thể thực hiện được việc gán tài khoản người dùng tới server role bằng 2 cách: dùng
Enterprise Manager hoặc Query Analyzer. Ví dụ, để gán thêm tài khoản Guest tới server role
Database Creators qua Enterprise Manager thì cần làm như sau:
- Mở rộng phần Security Folder
- Nhấn đúp vào mục Server Roles > Database Creators
- Nếu muốn chọn và gán group Windows tới phần role, các bạn nhấn nút Add để mở cửa sổ
Add Members
- Chọn tiếp group Windows Guest sau đó nhấn OK để đóng cửa sổ này, gán tiếp group Guest
vào bảng Server Role Properties:
Lưu ý rằng tại thời điểm này thì cả 2 tab của bảng này đã có thể xem được, mở tab General để
gán tiếp phần login tới role, hoặc sử dụng tab Permissions để chọn câu lệnh SQL tương ứng mà
server role này có thể thực thi. Sau đó, nhấn OK để hoàn tất quá trình này.
Còn nếu muốn sử dụng Query Analyzer, các bạn hãy gõ cấu trúc lệnh dưới đây, với thông số