Access
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Access

Kiến thức cơ bản về MongoDB:Định cấu hình điều khiển truy cập dựa trên vai trò (RBAC)

Kiến thức cơ bản về MongoDB:Định cấu hình điều khiển truy cập dựa trên vai trò (RBAC)

MongoDB, một kho lưu trữ tài liệu mã nguồn mở và cơ sở dữ liệu NoSQL phổ biến nhất trên thị trường hiện nay, cung cấp nhiều tính năng nâng cao để quản lý bảo mật cho các triển khai MongoDB của bạn. Trong bài đăng hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách thiết lập kiểm soát truy cập dựa trên vai trò (RBAC) để quản lý quyền truy cập của người dùng trên các hệ thống MongoDB của bạn cho reIndex, mongodump và mongorestore.

Nếu bạn là quản trị viên cơ sở dữ liệu MongoDB của mình, bạn có thể đã nhận được yêu cầu cung cấp cho một người dùng cá nhân các khả năng để thực hiện (các) hành động nhất định. Các tính năng bảo mật của MongoDB hiện đã khá hoàn thiện và cho phép bạn tạo và chỉ định quyền kiểm soát truy cập dựa trên vai trò rất chi tiết.

Chúng ta sẽ xem xét một ví dụ về việc cấp cho người dùng đặc quyền cụ thể để thực hiện hành động reIndex theo cách tiếp cận từng bước thông qua giải pháp của nó. Trước khi chúng tôi trình bày cách thực hiện hành động bảo mật phổ biến này, hãy cùng tìm hiểu tổng quan về kiểm soát hành động dựa trên vai trò của MongoDB.

Cách hoạt động của MongoDB RBAC

MongoDB cho phép bạn sử dụng cơ chế RBAC để hạn chế quyền truy cập đối với người dùng thông qua các ‘vai trò’ được chỉ định. Kiểm soát truy cập RBAC không được bật theo mặc định và phải được quản trị viên trong nhóm của bạn định cấu hình. Bằng cách cấp cho người dùng quyền truy cập vào một tài nguyên cụ thể, bạn đang cho phép vai trò hoặc người dùng đó thực hiện các hành động trên tài nguyên đó.

  • Tài nguyên

    Cơ sở dữ liệu, bộ sưu tập, bộ sưu tập hoặc cụm.

  • Hành động

    Các thao tác cụ thể mà người dùng có thể thực hiện trên tài nguyên (thường là cơ sở dữ liệu).

MongoDB hỗ trợ các vai trò được xác định trước được gọi là các vai trò tích hợp với các hành động được đối chiếu thành các nhóm logic như read (-Only), readWrite, backup, v.v. MongoDB cũng hỗ trợ tạo vai trò do người dùng xác định.

Cấp phép Đặc quyền MongoDB reIndex RBAC

Bây giờ bạn đã có một số ngữ cảnh, hãy chuyển sang các bước cấp quyền cho người dùng đặc quyền thực hiện hành động reIndex.

Cách tạo đặc quyền reIndex thông qua kiểm soát truy cập dựa trên vai trò MongoDB #RBACClick To Tweet
  1. Xác định các Hành động Đặc quyền

    Hành động trong ngữ cảnh MongoDB được gọi là Hành động đặc quyền và bạn có thể tìm thấy danh sách đầy đủ về những hành động này trong tài liệu của MongoDB. Hành động mà chúng tôi quan tâm là reIndex hoặc đặc quyền cho phép người dùng thực thi lệnh reIndex trên một cơ sở dữ liệu hoặc bộ sưu tập nhất định. Vì lệnh reIndex có thể tốn kém đối với các bộ sưu tập có lượng lớn dữ liệu hoặc số lượng lớn chỉ mục nên theo mặc định, lệnh này là một phần của vai trò quản trị.

  2. Cấp Đặc quyền cho Vai trò

    Sau khi xác định được các đặc quyền mình cần, chúng tôi sẽ chuyển sang cấp các đặc quyền đó cho một vai trò. Bạn cũng có thể chỉ cần chọn một vai trò tích hợp đã có đặc quyền, nhưng chúng tôi khuyên bạn nên tạo vai trò do người dùng xác định của riêng bạn thay vì sửa đổi các vai trò tích hợp vì chúng là mặc định tốt để quay lại.

    1. Tạo vai trò mới do người dùng xác định

      Đây là những gì chúng tôi sẽ sử dụng để tạo vai trò mới do người dùng xác định:

      > use test
      switched to db test
      > db.createRole({role: "reIndexing", privileges: [], roles: ["readWrite"]}) // Create a new role out of the default readWrite rule.
      { "role" : "reIndexing", "privileges" : [ ], "roles" : [ "readWrite" ] }
      > db.getRole("reIndexing")
      {
      	"role" : "reIndexing",
      	"db" : "test",
      	"isBuiltin" : false,
      	"roles" : [
      		{
      			"role" : "readWrite",
      			"db" : "test"
      		}
      	],
      	"inheritedRoles" : [
      		{
      			"role" : "readWrite",
      			"db" : "test"
      		}
      	]
      }
    2. Cấp đặc quyền cho vai trò mới

      Bây giờ, chúng tôi sẽ gán các đặc quyền mong muốn cho vai trò do người dùng xác định mới tạo của chúng tôi.

      > db.grantPrivilegesToRole("reIndexing", [ { resource: { db : "test", collection: "" }, actions: ["reIndex"] } ])
      > db.getRole("reIndexing", {showPrivileges: true})
      {
      	"role" : "reIndexing",
      	"db" : "test",
      	"isBuiltin" : false,
      	"roles" : [
      		{
      			"role" : "readWrite",
      			"db" : "test"
      		}
      	],
      	"inheritedRoles" : [
      		{
      			"role" : "readWrite",
      			"db" : "test"
      		}
      	],
      	"privileges" : [
      		{
      			"resource" : {
      				"db" : "test",
      				"collection" : ""
      			},
      			"actions" : [
      				"reIndex"
      			]
      		}
      	],
      	"inheritedPrivileges" : [
      ....
      	]
      }
      
      
  3. Cấp vai trò cho Người dùng

    Bước cuối cùng chỉ cần gán cho người dùng vai trò mới này:

    > db.getUser("indexUser")
    {
    	"_id" : "test.indexUser",
    	"user" : "indexUser",
    	"db" : "test",
    	"roles" : [
    		{
    			"role" : "readWrite",
    			"db" : "test"
    		}
    	]
    }
    > db.grantRolesToUser("indexUser", ["reIndexing"])
    > db.getUser("indexUser")
    {
    	"_id" : "test.indexUser",
    	"user" : "indexUser",
    	"db" : "test",
    	"roles" : [
    		{
    			"role" : "reIndexing",
    			"db" : "test"
    		},
    		{
    			"role" : "readWrite",
    			"db" : "test"
    		}
    	]
    }
    

    Hãy nhớ thực hiện các bước này trên người dùng giả để bạn có thể kiểm tra và xác nhận các đặc quyền mới hoạt động trước khi cấp và thông báo cho người dùng có liên quan về quyền của họ.

Đặc quyền bổ sung:mongodump &mongorestore

Trước tiên, chúng tôi đã trình diễn ví dụ reIndex để minh họa cả việc cấp đặc quyền cho vai trò và cấp vai trò cho người dùng.

Một trường hợp sử dụng phổ biến hơn là cung cấp ủy quyền để thực hiện các hành động sao lưu và khôi phục bằng cách sử dụng mongodumpmongorestore . Điều này có thể được thực hiện trong một bước duy nhất thông qua các vai trò tích hợp của MongoDB và cả đặc quyền sao lưu và khôi phục đều có thể được cấp để cho phép người dùng chạy mongodumpmongorestore , tương ứng.

Cách thiết lập sao lưu MongoDB và khôi phục các đặc quyền #RBAC với mongodump và mongorestoreNhấp vào Tweet

Ví dụ:đây là cách chúng tôi cấp quyền cho người dùng để sao lưu và khôi phục bất kỳ cơ sở dữ liệu nào. Lưu ý rằng những vai trò này chỉ có sẵn cho người dùng trên cơ sở dữ liệu quản trị.

> db.grantRolesToUser("backupUser", ["backup", "restore"])
> db.getUser("backupUser")
{
	"_id" : "admin.backupUser",
	"user" : "backupUser",
	"db" : "admin",
	"roles" : [
		{
			"role" : "restore",
			"db" : "admin"
		},
		{
			"role" : "backup",
			"db" : "admin"
		},
		{
			"role" : "readWrite",
			"db" : "admin"
		}
	]
}

Việc thêm quyền để sao lưu và khôi phục trên một cơ sở dữ liệu hoặc bộ sưu tập đòi hỏi nhiều công việc hơn. Đối với mongodump , Tuy nhiên, bạn phải cấp thêm đặc quyền tìm kiếm trên cơ sở dữ liệu nhất định đó, mongorestore có các yêu cầu đặc quyền phức tạp hơn.

Bạn quan tâm đến bảo mật MongoDB? Dưới đây là các bài đăng hàng đầu về chủ đề bảo mật MongoDB:

  • Ba điểm A của bảo mật MongoDB - Xác thực, Ủy quyền và Kiểm tra
  • Ba bước đơn giản để cải thiện tính bảo mật của cài đặt MongoDB của bạn
  • Định cấu hình xác thực MongoDB-CR làm mặc định trên MongoDB 3.x
  • MongoDB SSL với các chứng chỉ tự ký trong Node.js
  • 10 mẹo để cải thiện bảo mật MongoDB của bạn


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 7 thói quen công nghệ tốt mà nhà tuyển dụng nên áp dụng

  2. Cách chạy Macro từ Nút Điều hướng trong Microsoft Access

  3. Tối ưu hóa Microsoft Access với SQL Server IndyPass - 21/5/19

  4. 5 lý do tại sao bạn cần một cơ sở dữ liệu tốt

  5. Cách truy cập Mẫu CRM tích hợp trong Microsoft Access