中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mongodb七天總結—權限管理(2)

發布時間:2020-05-28 03:18:28 來源:網絡 閱讀:1386 作者:地下舍 欄目:MongoDB數據庫

Mongodb權限管理


版本:Mongodb3.0

說到對數據庫我安全問題我們一般就會從以下幾點考慮怎么去解決數據庫安全的問題。

1.最安全的是物理隔離:

2.網絡隔離:

3.防火墻隔離:

4.用戶名和密碼:

 

下面我們來說說mongodb的用戶名和密碼認證:

認證是確定client身份的機制,默認情況下mongodb并沒有開啟權限認證,我們部署好MGDB之后需要進行,一般常用mongodb權限認證的方式有:

    1.auth開啟(在啟動的時候知道--auth=true)

    2.Keyfile開啟

怎么進行認證,在命令行mongo --auth或者在配置文件里加入配置信息,來開啟認證;auth是一個布爾值,只需要在配置文件里加入auth=ture就開啟認證了,那Keyfile呢?

Auth和keyfile的區別:

   Auth : 單機實例認證,

   Keyfile : 副本集和分片之間驗證; 

復制集是一個整體,復制集之間通信需要驗證對方的身份,因為沒有Keyfile,所以節點之間是不知道其他節點,Keyfile是集群節點間的一個×××明,怎么去創建keyfile,我們可以去使用openssl命令;

[root@localhost ~]# openssl rand -base64 111  .keyFile

[root@localhost ~]# cat .keyFile

EG8ABQZU9C87lPRKFVbClBYhxTw8Hyv91NkOoqLBF3eRfnAUxPCTcevB82fYM+Zo+tPOjnsPiVZrCZmAsG26ZFrB/SHhTj/E+F3QARFWKnm4DJNBhzLnjZOKtoao61BMcRAye0H7HG0geMQtbGBX 

在未開啟keyfile認證的時候不去創建用戶,否則也會當keyfile配置重啟后,用戶創建可能進行回滾,當我們進行創建完成keyfile后再進行認證創建用戶;

Keyfile的注意:

    1.內容 base64編碼集【a-z A-Z + /

    2.長度 1000bytes

    3.權限 chmod 600 keyfile

現在我們開始傳教

創建用戶

語法;

db.createUser(

{

User:<name_string>,                   #字符串

pwd:<password_string>                 #字符串

Roles:<role:<role_name>,db:<db_name>>  #數組+對象

}

)

創建root用戶,在創建之前我們開啟的auth認證,但是庫沒有任何用戶,那我們需要添加參數setParametmer=enableLocalhostAuthBypass=1,來跳過認證情況下本機登錄無需認證。

創建root用戶的時候,是一個全局用戶,必須只能創建在admin

> db.createUser({user:'admin',pwd:'123123',roles:[{role:'root',db:'admin'}]})

Successfully added user: {

       "user" : "admin",

       "roles" : [

               {

                      "role" : "root",

                       "db" : "admin"

               }

       ]

}

[root@localhost ~]# mongo localhost:27017                    

MongoDB shell version: 3.0.12

connecting to: localhost:27017/test

> show dbs

admin  0.078GB

local  0.078GB

> use admin

switched to db admin

> show users

{

        "_id" : "admin.admin",

        "user" : "admin",

        "db" : "admin",  #你這個用戶是創建在admin

        "roles" : [

                {

                        "role" : "root",

                        "db" : "admin"  #角色的作用域

                }

        ]

}

> db.auth('admin','123123')   #認證

>1   #認證成功

 

刪除用戶:

 

1db.dropUser(<user_name>)  刪除某個用戶,

2db.dropAllUser()           刪除所有用戶,

如何修改用戶密碼:

 

 

角色:

什么是角色:對某一個資源的權限的集合

mongodb有什么角色:

MongoBD有兩種角色

1.自帶 的角色(bulid-in roles

  讀寫:

read readWrite

  管理員:

dbAdmindbOwneruserAdminclusterAdmin

clusterManagerclusterMonitorhostManager

  備份:

        backuprestore

  全局:

readAnyDatabasereadWriteAnyDatabase

userAdminAnyDatabasedbAdminAnyDatabase

  超級用戶:

root

2.自定義角色

 語法:

Use admin

dbCreateRole(

{

role:<role_name>, #角色名字

Privileges:[

{resource:{db:<db_name>,collection:<coll_name>},

 actions:[<action_name>]} #操作的力度很小。不同的操作對應不同的命令

],

Roles:[{role:<role_name>},db:<db_name>] #你所創建的角色是否需要繼承其他的role

}

)

 

創建角色:

>use ycj

>db

>ycj

>db.createRole({role:'testycj',privileges:[{resource:{db:'ycj',collection:''},actions:['find','insert','re

move']}],roles:[{role:'read',db:'test'}]})

Error: Roles on the 'ycj' database cannot be granted roles from other databases(不能再其他數據庫下創建角色)

這個時候我們切到admin庫下,>use admin,創建用戶成功;因為我們創建的角色是在admain下創建的。

> show users #查看db的用戶

{

        "_id" : "admin.admin",

        "user" : "admin",

        "db" : "admin",

        "roles" : [

                {

                        "role" : "root",

                        "db" : "admin"

                }

        ]

}

查看admin的權限:

> show roles;

{

        "role" : "readWriteAnyDatabase",

        "db" : "admin",

        "isBuiltin" : true,

        "roles" : [ ],

        "inheritedRoles" : [ ]

}

...........

...........

...........

{

        "role" : "testycj",

        "db" : "admin",

        "isBuiltin" : false,

        "roles" : [

                {

                        "role" : "read",

                        "db" : "test"

                }

        ],

        "inheritedRoles" : [

                {

                        "role" : "read",

                        "db" : "test"

                }

        ]

}

{

        "role" : "userAdmin",

        "db" : "admin",

        "isBuiltin" : true,

        "roles" : [ ],

        "inheritedRoles" : [ ]

}

可以看到我們的adminroot權限中,已經存在我們傳教的testycj權限,同時我們也發現的root權限其實就是其他的權限的集合組成,比如readwriterestorereadWriteAnyDatabase...,因為我們是在admin下創建的權限,所有這個自定義權限的作用域就是admin,在其他域將不能使用。

> db.runCommand({usersInfo:'admin',showPrivileges:1}) #查看這個用戶的所有信息·

{

    "users" : [

            {

                      "_id" : "admin.admin",

                      "user" : "admin",

                      "db" : "admin", #在哪個庫創建的

                      "roles" : [

                               {

                                       "role" : "root",

                                       "db" : "admin"

                               }

                       ],

                       "inheritedRoles" : [ #繼承的角色

                               {

                                       "role" : "root",

                                       "db" : "admin"

                               }

                       ],

                       "inheritedPrivileges" : [

                               {

                                       "resource" : {

                                       "cluster" : true  #對集群操作需要權限

                                       },

                                       "actions" : [ #所操作的權限

                                            "addShard",

                                            "appendOplogNote",

                                            "applicationMessage",

                                            "authSchemaUpgrade",

                                            "cleanupOrphaned",

                                            "connPoolStats",

                                             .......

                                    .......

                                                                        

接下來我們就以yjctest權限去創建用戶,

>use admin

>db.createUser({user:'ycj',pwd:'123',roles:[{role:'testycj',db:'admin'}]})

>db.auth(ycj,123)

>1

現在我們開啟兩個遠程總段回話AB來測試一下

Aycj

Badmin


 

 

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝兴县| 湖南省| 阜康市| 梁山县| 和硕县| 太和县| 金阳县| 精河县| 泾源县| 侯马市| 大同市| 繁峙县| 台安县| 元氏县| 米泉市| 红原县| 红安县| 宿州市| 仁布县| 邵阳市| 太仆寺旗| 石河子市| 菏泽市| 饶河县| 永胜县| 绥棱县| 广宁县| 买车| 大丰市| 牟定县| 桦甸市| 龙口市| 叶城县| 专栏| 杭锦后旗| 庐江县| 长岛县| 利川市| 毕节市| 曲水县| 黑水县|