0

私は MMS を使用して、(現時点では) シャードが 1 つだけの典型的なシャーディング クラスターを管理しています。

認証が有効になっており、うまく機能しています。MMS 管理コンソールにユーザー定義の役割を追加しました。mongo シェルで確認できます。

db.system.roles.findOne()
{
    "_id" : "admin.myrole",
    "role" : "myrole",
    "db" : "admin",
    "privileges" : [
        {
            "resource" : {
                "db" : "",
                "collection" : ""
            },
            "actions" : [
                "changeCustomData",
                "changePassword",
 ...

AnyResource の AnyAction に変更したい ( doEvalアクションが必要なため)。だから、私はこれを実行しようとしています:

db.runCommand({ "updateRole": "myrole", "privileges": [  { resource: { anyResource: true}, actions: [ "anyAction" ] } ] }); db.system.roles.findOne()`
and for one second, I get the result I want:
{
    "_id" : "admin.myrole",
    "role" : "myrole",
    "db" : "admin",
    "privileges" : [
        {
            "resource" : {
                "anyResource" : true
            },
            "actions" : [
                "anyAction"
            ]
        }
    ],
    "roles" : [ ]
}

しかし、約 2 秒後: 役割が復元されました。

configsvr> db.system.roles.findOne()
{
    "_id" : "admin.myrole",
    "role" : "myrole",
    "db" : "admin",
    "privileges" : [
        {
            "resource" : {
                "db" : "",
                "collection" : ""
            },
            "actions" : [
                "changeCustomData",
                "changePassword",

...

「誰」がそれを復元しているのかわかりません。PRIMARY および管理データベースの CONFIG サーバーから上記のコマンドを試しました。

ロールを保存するにはどうすればよいですか?

PS: 「eval」が 3.0 で非推奨になったことは知っていますが、私が求めているのは、役割を更新できない理由です。

4

0 に答える 0