Quyền và vai trò (role) trong MongoDB

Một phần của tài liệu TIỂU LUẬN kết THÚC học PHẦN đề tài tìm HIỂU về hệ QUẢN TRỊ cơ sở dữ LIỆU MONGODB (Trang 43)

Khi làm việc với bất kì cơ sở dữ liệu nào, việc phân quyền, thiết lập tài khoản cho user là một việc vô cùng cần thiết. Nhất là khi ta xây dựng các phần mềm, hoặc chia sẻ cơ sở dữ liệu trong một nhóm. Với MongoDB thì điều này cũng không phải là ngoại lệ. MongoDB cung cấp quyền truy cập của user dựa trên vai trò (roles) của user đó. Hệ quản trị này cung cấp nhiều role tích hợp để gán cho người dùng. Bên cạnh đó , nó cũng cho phép tạo người sử dụng tạo ra các role theo nhu cầu.

1. Các quyền và vai trò tích hợp có sẵn trong hệ thống

Trong MongoDB, các role có sẵn này được chia ra làm 4 nhóm role : a) Nhóm Database User Roles

34

Các role thuộc nhóm này được thiết lập riêng cho một database được chỉ định và chỉ cho phép người dùng thao tác trên dữ liệu chứ không cho phép tác động đến các user khác trong hệ thống. Các role này thường được phân quyền cho các client. Nhóm này bao gồm hai quyền như sau:

Bảng 10 Nhóm Database User Roles

Role Read

readWrite

b) Nhóm Database Administration Roles

Với nhóm role này, hệ thống sẽ cấp một số quyền quản trị nhất định trên một database được chỉ định cho user. Bao gồm các role như sau:

Bảng 11 Nhóm Database Administration Roles

Role dbAdmin

userAdmin

dbOwner

c) Nhóm All Database Roles

Nhóm role này chỉ dành cho các database Admin. Nó có thể xem như là các quyền mở rộng hơn của 2 nhóm role trên , thay vì user chỉ có quyền trên một database thì với nhóm role này, user có quyền trên toàn bộ database có trong hệ thống. Cụ thể:

Bảng 12 Nhóm All Database Roles

Roles readAnyDatabase readWriteAnyDatabase userAdminAnyDatabase dbAdminAnyDatabase d) Nhóm Supperuser Roles

Nhóm role này chỉ có duy nhất một role đó là Root. Đây là quyền cao nhất trong hệ quản trị cơ sở dữ liệu MongoDB. Với quyền này người dùng có thể thực hiện mọi thao tác trên hệ thống như cung cấp quyền truy cập ,quản trị cơ sở dữ liệu ,truy cập đến mọi

36

nguồn lực trong cơ sở dữ liệu... Do đó quyền này chỉ được phân cho người quản trị có quyền cao nhất trong hệ thống.

Ngoài các nhóm role phân quyền theo cấp database và cấp hệ thống như trên, MongoDB còn có các nhóm role như: Backup and Restoration Roles, Cluster Administration Roles,...

2. Tạo quyền và vai trò tùy chỉnh (Role)

Bên cạnh các role được tích hợp sẵn trong hệ thống, MongoDB cũng cho phép người dùng tự tạo ra các role tùy chỉnh và thiết lập các đặc quyền riêng phù hợp với mong muốn của họ. Một yêu cầu được đặt ra khi ta tạo một role mới đó là ta phải tạo role trong một database cụ thể. Vì trong MongoDB, hệ quản trị này sử dụng sự kết hợp giữa tên database và role để đảm bảo rằng mỗi role là duy nhất. Ngoại trừ các role được tạo trong database admin thì một role chỉ có thể bao gồm các đặc quyền áp dụng cho database của nó và chỉ có thể kế thừa từ các role khác trong database của nó. Nếu một role được tạo trong database admin, thì nó có thể bao gồm các đặc quyền áp dụng cho database này, bao gồm các quyền admin, quản lý cluster và có thể kế thừa từ các role khác trong tất cả các database trong hệ thống.

Để dễ dàng quản lý các role tùy chỉnh này, MongoDB lưu trữ thông tin của chúng trong một collection đặc biệt tên là system.roles thuộc database admin. Collection này không cho phép truy cập trực tiếp vài mà phải sử dụng các lệnh quản lý role để xem và chỉnh sửa.

Khi muốn tạo một role mới, ta sử dụng phương thức db.createRole(). Giả sử, ở đây ta muốn tạo một role mới có tên là saler được mô tả như sau:

- saler cho phép đọc và chỉnh sửa dữ liệu trong database “mydata” - saler cho phép đọc collection “Foods” trong database “shopping” Ta thực hiện tạo role mới như sau:

Đầu tiên ta sẽ khai báo một biến mới tên role để lưu trữ tên (role) và các thao tác (privileges), quyền (roles) của saler. Sau đó sử dụng cú pháp sau để tạo role:

37

>db.createRole(role);

Role tùy chỉnh mới đã được tạo thành công. AI. Quyền đăng nhập hệ thống

Mặc định trong mongoDB, chúng ta có thể sử dụng MongoDB Server mà không cần phải đăng nhập vào hệ thống. Tuy nhiên , trong một số trường hợp thì việc sử dụng user để thao tác trên MongoDB Server sẽ cho kết quả tốt hơn và đảm bảo tính bảo mật của cơ sở dữ liệu. Ở MongoDB thì tài khoản đăng nhập cũng chính là user trong hệ thống, do đó ta sẽ gom chung việc khởi tạo tài khoản và khởi tạo user làm một.

Trong MongoDB, ta tạo user mới bằng phương thức createUser(). Cú pháp:

Để tạo một user cấp hệ thống, ta thực hiện tạo một user trên database admin, user này sẽ có thể truy cập và chỉnh sửa các database khác nếu quyền của user này cho phép.

Ví dụ, đầu tiên ta sẽ tạo một user cấp hệ thống với username = “ad”, password =”1234”. User này sẽ được gán quyền là root, tức quyền cao nhất trong hệ thống:

38

Trong MongoDB, để đăng nhập bằng user và password, ta sẽ có 2 cách để đăng nhập:

- Cách 1: chỉ rõ username và password Ta sử dụng cú pháp :

Ví dụ, ta sẽ đăng nhập bằng tài khoản user vừa tạo ở trên:

- Cách 2: Đăng nhập với phương thức db.auth()

Với cách này, đầu tiên ta sẽ truy cập vào bằng lệnh mongo, sau đó sử dụng lệnh db.auth() trên database cần xác thực:

Như vậy ta đã đăng nhập thành công vào hệ thống. Sau khi đăng nhập vào hệ thống bằng user có quyền root, ta có thể tạo ra các user khác ở cả cấp hệ thống và cấp cơ sở dữ liệu. Giả sử ở đây, ta sẽ tạo một user có username là “person1” có password là “123” với quyền đọc /ghi trên database shopping. Ta thực hiện như sau:

39

BI. Quyền truy xuất dữ liệu

Như đã nói ở 2 phần trên, quyền truy xuất dữ liệu trong MongoDB cũng được chia làm 2 loại là :

- Quyền truy xuất cấp hệ thống: bao gồm các quyền thuộc nhóm All Database Roles và nhóm Supperuser Roles. Các quyền này cho phép user truy cập đến nhiều database có trong hệ thống với các thao tác được quy định.

- Quyền truy xuất cấp cơ sở dữ liệu: Quyền này bao gồm nhóm quyền nhóm

Database User Role và nhóm Database Administration Roles. Các quyền này sẽ cho phép user được gán quyền chỉ có thể thao tác truy xuất đến một database cụ thể được chỉ định.

Ví dụ, với 2 user vừa tạo ở phần trên, ta có user ad được gán quyền câp hệ thống và user person1 được gán quyền cấp cơ sở dữ liệu. Với user ad, do được gán

quyền root là quyền cao nhất trong cơ sở dữ liệu, user này có thể tạo tài khoản user mới như ở trên. Bên cạnh đó user này còn có quyền truy xuất đến các database khác ngoài database admin:

- Insert dữ liệu vào database number như sau:

- Xem collection Clothes trong database shopping

40

Tiếp theo, với user person1 vừa tạo, ta sẽ sử dụng tài khoản này để đăng nhập vào hệ thống và thực hiện một số thao tác truy xuất dữ liệu:

- Xem các dữ liệu có trong collection Books của database shopping:

- Xem các dữ liệu có trong database mydata:

Ở đây, khi truy xuất đến database mydata, hệ thống sẽ báo lỗi vì user person1 chỉ có quyền đọc/ghi trên database shopping chứ không được cấp quyền vào database mydata.

41

TỔNG KẾT

MongoDB là một cơ sở dữ liệu không quan hệ hướng tài liệu mã nguồn mở. Với cấu trúc linh hoạt , Hệ quản trị cơ sở dữ liệu này đem lại sự thuận tiện trong việc truy xuất các dữ liệu với tốc độ rất nhanh. Được thiết kế với giao diện thân thiện, dễ sử dụng, cấu trúc các câu lệnh rõ ràng , dễ hiểu gần với ngôn ngữ đời thường. Tuy chỉ mới xuất hiện không lâu nhưng MongoDB thực sử đã trở thành một hệ quản trị cơ sở dữ liệu NoSQL phổ biến nhất và được nhiều người ưa thích. Trong thời đại công nghệ số hiện nay, mỗi ngày con người phải xử lý một khối lượng thông tin khổng lồ. MongoDB đã phát huy rất tốt các tính năng của mình và là một trợ thủ đắc lực cho các doanh nghiệp trong việc xử lý thông tin. Tuy còn một số hạn chế nhưng trong tương lai, tiềm năng của hệ cơ sở dữ liệu này sẽ rất lớn, nhất là khi các mạng xã hội và thương mại điện tử ngày càng phát triển.

1

TÀI LIỆU THAM KHẢO

[1] MongoDBInc., "MongoDB Documentation," [Online]. Available: https://docs.mongodb.com/.

[2] Gadini, MongoDB And HBase, 2018.

[3] ZendVN, “ZendVN học lập trình Online,” [Trực tuyến]. Available: https://www.zendvn.com/.

[4] T. Q. K. Trần Trung Hiếu, “Đồ án tốt nghiệp, đề tài: Tìm hiểu về MongoDB,” Trường đại học Công Nghiệp Thực Phẩm thành phố HCM, Thành phố Hồ Chí

Minh, 2015.

[5] N. Đ. Thuận, Ebook NoSQL.

[6] M. D. Kristina Chodorow, The Definitive Guide, O'reilly, 2010.

1

Một phần của tài liệu TIỂU LUẬN kết THÚC học PHẦN đề tài tìm HIỂU về hệ QUẢN TRỊ cơ sở dữ LIỆU MONGODB (Trang 43)

Tải bản đầy đủ (DOCX)

(52 trang)
w