私は 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 で非推奨になったことは知っていますが、私が求めているのは、役割を更新できない理由です。