OrientDB - Bảo mật

Giống như RDBMS, OrientDB cũng cung cấp bảo mật dựa trên các khái niệm, người dùng và vai trò nổi tiếng. Mỗi cơ sở dữ liệu có người dùng riêng và mỗi người dùng có một hoặc nhiều vai trò. Vai trò là sự kết hợp của các chế độ làm việc và tập hợp các quyền.

Người dùng

Theo mặc định, OrientDB duy trì ba người dùng khác nhau cho tất cả cơ sở dữ liệu trong máy chủ -

  • Admin - Người dùng này có quyền truy cập vào tất cả các chức năng trên cơ sở dữ liệu mà không bị giới hạn.

  • Reader- Người dùng này là người dùng chỉ đọc. Người đọc có thể truy vấn bất kỳ bản ghi nào trong cơ sở dữ liệu, nhưng không thể sửa đổi hoặc xóa chúng. Nó không có quyền truy cập vào thông tin nội bộ, chẳng hạn như người dùng và vai trò của chính họ.

  • Writer - Người dùng này giống như trình đọc người dùng, nhưng nó cũng có thể tạo, cập nhật và xóa bản ghi.

Làm việc với người dùng

Khi bạn được kết nối với cơ sở dữ liệu, bạn có thể truy vấn người dùng hiện tại trên cơ sở dữ liệu bằng cách sử dụng SELECT truy vấn trên OUser lớp học.

orientdb> SELECT RID, name, status FROM OUser

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

---+--------+--------+-------- 
#  | @CLASS | name   | status 
---+--------+--------+-------- 
0  | null   | admin  | ACTIVE 
1  | null   | reader | ACTIVE 
2  | null   | writer | ACTIVE 
---+--------+--------+-------- 
3 item(s) found. Query executed in 0.005 sec(s).

Tạo người dùng mới

Để tạo người dùng mới, hãy sử dụng lệnh INSERT. Hãy nhớ rằng, khi làm như vậy, bạn phải đặt trạng thái thành ACTIVE và cung cấp cho nó một vai trò hợp lệ.

orientdb> INSERT INTO OUser SET 
               name = 'jay', 
               password = 'JaY',
               status = 'ACTIVE',
               roles = (SELECT FROM ORole WHERE name = 'reader')

Cập nhật người dùng

Bạn có thể thay đổi tên cho người dùng bằng câu lệnh UPDATE.

orientdb> UPDATE OUser SET name = 'jay' WHERE name = 'reader'

Theo cách tương tự, bạn cũng có thể thay đổi mật khẩu cho người dùng.

orientdb> UPDATE OUser SET password = 'hello' WHERE name = 'reader'

OrientDB lưu mật khẩu ở định dạng băm. Trình kích hoạtOUserTrigger mã hóa mật khẩu một cách minh bạch trước khi lưu bản ghi.

Vô hiệu hóa người dùng

Để vô hiệu hóa người dùng, hãy sử dụng CẬP NHẬT để chuyển trạng thái của người dùng đó từ HOẠT ĐỘNG sang TẠM NGỪNG. Ví dụ: nếu bạn muốn tắt tất cả người dùng ngoại trừ quản trị viên, hãy sử dụng lệnh sau:

orientdb> UPDATE OUser SET status = 'SUSPENDED' WHERE name <> 'admin'

Vai trò

Một vai trò xác định những thao tác mà người dùng có thể thực hiện đối với tài nguyên. Chủ yếu, quyết định này phụ thuộc vào chế độ làm việc và các quy tắc. Bản thân các quy tắc hoạt động khác nhau, tùy thuộc vào chế độ làm việc.

Làm việc với vai trò

Khi bạn được kết nối với cơ sở dữ liệu, bạn có thể truy vấn các vai trò hiện tại trên cơ sở dữ liệu bằng cách sử dụng SELECT truy vấn trên ORole lớp học.

orientdb> SELECT RID, mode, name, rules FROM ORole

Nếu truy vấn trên được thực thi thành công, bạn sẽ nhận được kết quả sau.

--+------+----+--------+------------------------------------------------------- 
# |@CLASS|mode| name   | rules 
--+------+----+--------+------------------------------------------------------- 
0 | null | 1  | admin  | {database.bypassRestricted = 15} 
1 | null | 0  | reader | {database.cluster.internal = 2, database.cluster.orole = 0... 
2 | null | 0  | writer | {database.cluster.internal = 2, database.cluster.orole = 0... 
--+------+----+--------+------------------------------------------------------- 
3 item(s) found.  Query executed in 0.002 sec(s).

Tạo vai trò mới

Để tạo một vai trò mới, hãy sử dụng câu lệnh INSERT.

orientdb> INSERT INTO ORole SET name = 'developer', mode = 0

Làm việc với các chế độ

Trong đó các quy tắc xác định những gì người dùng thuộc các vai trò nhất định có thể làm trên cơ sở dữ liệu, các chế độ làm việc xác định cách OrientDB diễn giải các quy tắc này. Có hai loại chế độ làm việc, được chỉ định bằng 1 và 0.

  • Allow All But (Rules)- Theo mặc định, nó là chế độ siêu người dùng. Chỉ định các ngoại lệ cho điều này bằng cách sử dụng các quy tắc. Nếu OrientDB không tìm thấy quy tắc nào cho tài nguyên được yêu cầu, thì nó sẽ cho phép người dùng thực thi hoạt động. Sử dụng chế độ này chủ yếu cho người dùng thành thạo và quản trị viên. Quản trị viên vai trò mặc định sử dụng chế độ này theo mặc định và không có quy tắc ngoại lệ. Nó được viết là 1 trong cơ sở dữ liệu.

  • Deny All But (Rules)- Theo mặc định, chế độ này không cho phép gì cả. Chỉ định các ngoại lệ cho điều này bằng cách sử dụng các quy tắc. Nếu OrientDB tìm thấy các quy tắc cho một tài nguyên được yêu cầu, thì nó sẽ cho phép người dùng thực thi hoạt động. Sử dụng chế độ này làm mặc định cho tất cả người dùng cổ điển. Các vai trò mặc định, người đọc và người viết, sử dụng chế độ này. Nó được viết là 0 trong cơ sở dữ liệu.