MongoDB 4.0檢視,更新和回收角色許可權步驟

chenfeng 發表於 2022-06-02
MongoDB

檢視角色許可權資訊:

use admin

> db.system.roles.find().pretty()

{

        "_id" : "admin.custom_role_test",

        "role" : "custom_role_test",

        "db" : "admin",

        "privileges" : [

                {

                        "resource" : {

                                "db" : "test",

                                "collection" : " "

                        },

                        "actions" : [

                                "createCollection",

                                "createIndex",

                                "find",

                                "insert",

                                "update"

                        ]

                }

        ],

        "roles" : [

                {

                        "role" : "read",

                        "db" : "test"

                }

        ]

}

{

        "_id" : "test.custom_role_test",

        "role" : "custom_role_test",

        "db" : "test",

        "privileges" : [

                {

                        "resource" : {

                                "db" : "test",

                                "collection" : " "

                        },

                        "actions" : [

                                "createCollection",

                                "createIndex",

                                "find",

                                "insert",

                                "update"

                        ]

                }

        ],

        "roles" : [

                {

                        "role" : "read",

                        "db" : "test"

                }

        ]

}


檢視使用者:

PRIMARY> show users

{

        "_id" : "admin.test_rw",

        "userId" : UUID("7cd05387-fb0c-49b3-9c04-49b8444e8d6f"),

        "user" : "test_rw",

        "db" : "admin",

        "roles" : [

                {

                        "role" : "custom_role_test",

                        "db" : "test"

                }

        ],

        "mechanisms" : [

                "SCRAM-SHA-1",

                "SCRAM-SHA-256"

        ]

}

{

        "_id" : "admin.root",

        "userId" : UUID("9416402a-d029-4add-8d0b-66b65b9f5a94"),

        "user" : "root",

        "db" : "admin",

        "roles" : [

                {

                        "role" : "root",

                        "db" : "admin"

                }

        ],

        "mechanisms" : [

                "SCRAM-SHA-1",

                "SCRAM-SHA-256"

        ]

}


檢視使用者資訊:

PRIMARY> db.runCommand({usersInfo:"test_rw"})

{

        "users" : [

                {

                        "_id" : "admin.test_rw",

                        "userId" : UUID("7cd05387-fb0c-49b3-9c04-49b8444e8d6f"),

                        "user" : "test_rw",

                        "db" : "admin",

                        "roles" : [

                                {

                                        "role" : "custom_role_customer",

                                        "db" : "customer"

                                },

                                {

                                        "role" : "custom_role_test",

                                        "db" : "test"

                                }

                        ],

                        "mechanisms" : [

                                "SCRAM-SHA-1",

                                "SCRAM-SHA-256"

                        ]

                }

        ],

        "ok" : 1,

        "$clusterTime" : {

                "clusterTime" : Timestamp(1654076841, 1),

                "signature" : {

                        "hash" : BinData(0,"8JWM/9Xy+h9L/7L/6vIMsQUz8ug="),

                        "keyId" : NumberLong("7066856411933704193")

                }

        },

        "operationTime" : Timestamp(1654076841, 1)

}


更新角色許可權資訊:

語法:

db.updateRole(

    "<rolename>",

    {

      privileges:

          [

            { resource: { <resource> }, actions: [ "<action>", ... ] },

            ...

          ],

      roles:

          [

            { role: "<role>", db: "<database>" } | "<role>",

            ...

          ]

    },

    { <writeConcern> }

)


例子(修改許可權資訊,加入remove許可權):

use admin

db.updateRole(

    "custom_role_test",

    {

      privileges:

          [

            {

              resource: { db:"test", collection:" " },

              actions: [ "insert",  "update", "find" ,"remove","createCollection", "createIndex"]

            }

          ],

      roles:

          [

            {

              role: "read",

              db: "test"

            }

          ]

    },

    { w:"majority" }

);


use test

db.updateRole(

    "custom_role_test",

    {

      privileges:

          [

            {

              resource: { db:"test", collection:" " },

              actions: [ "insert",  "update", "find","remove" ,"createCollection", "createIndex"]

            }

          ],

      roles:

          [

            {

              role: "read",

              db: "test"

            }

          ]

    },

    { w:"majority" }

); 


回收角色許可權步驟:

語法:

db.revokeRolesFromUser( "<username>", [ <roles> ], { <writeConcern> } )


例子:

use test

db.revokeRolesFromUser( "test",

                        [ { role: "read", db: "test" }, "readWrite" ],

                        { w: "majority" }

                      )


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2898625/,如需轉載,請註明出處,否則將追究法律責任。