monogdb操作system.*权限

探讨自定义MongoDB角色(dropSystemViewsAnyDatabase)以尝试删除system.roles集合的问题,即使拥有root和__system权限,仍无法实现,寻求解决之道。

mongodb roles

system.roles集合删不掉

当你自定义了特权(角色):
db.createRole(
   {
     role: "dropSystemViewsAnyDatabase",
     privileges: [
       {
         actions: [ "dropCollection" ],
         resource: { db: "", collection: "system.roles" }
       }
     ],
     roles: []
   }
)
// admin库下自动生成system.roles集合:
{
    "_id" : "admin.dropSystemViewsAnyDatabase",
    "role" : "dropSystemViewsAnyDatabase",
    "db" : "admin",
    "privileges" : [ 
        {
            "resource" : {
                "db" : "",
                "collection" : "system.roles"
            },
            "actions" : [ 
                "dropCollection"
            ]
        }
    ],
    "roles" : []
}

// 然后期望配置该权限能删除system.roles集合,但是并没有用,不得而知
{
    "_id" : "admin.admin",
    "userId" : UUID("198fe62e-8f36-421e-877e-4d73ca1a1fe4"),
    "user" : "admin",
    "db" : "admin",
    "credentials" : {
        "SCRAM-SHA-1" : {
            "iterationCount" : 10000,
            "salt" : "rmYnVC/Kc8U8jHJ8Xoa0AA==",
            "storedKey" : "s2s+seXTlu5e/Et3RBMRjcT+1sc=",
            "serverKey" : "qwEGx4vyIn6UHWXiPwDYVSAb9QA="
        },
        "SCRAM-SHA-256" : {
            "iterationCount" : 15000,
            "salt" : "UEJ8pbH7IU7HFyhjjQCn31h2OY5GjZ6SXONgjw==",
            "storedKey" : "z6otQQpA4/SU5N6VJfuD3mm68kBH0z+5aKIexmgXaP4=",
            "serverKey" : "MdeLFLQOh7gM93WrNioub9UjLSc8SREDQZskfT7wiYQ="
        }
    },
    "roles" : [ 
        {
            "role" : "root", // 该权限可以读写除了system.*之外的所有
            "db" : "admin"
        }, 
        {
            "role" : "__system", // 该权限可以读写system.*
            "db" : "admin"
        }, 
        {
            "role" : "dropSystemViewsAnyDatabase",// 配置了自定义的权限,但是并没有用,不得而知
            "db" : "admin"
        }
    ]
}

ps:就算取消了登录授权依然删不掉system.role,有哪个同学晓得啊???

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.mongodb.core.MongoTemplate]: Factory method 'mongoTemplate' threw exception; nested exception is org.springframework.dao.DataAccessResourceFailureException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=db-mongo-rs.public-component:4031, type=UNKNOWN, roundTripTime=11.1 ms, state=CONNECTED, exception={com.mongodb.MongoConfigurationException: Replica set name 'null' does not match required replica set name of 'mongo-rs'}}]; nested exception is com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=db-mongo-rs.public-component:4031, type=UNKNOWN, roundTripTime=11.1 ms, state=CONNECTED, exception={com.mongodb.MongoConfigurationException: Replica set name 'null' does not match required replica set name of 'mongo-rs'}}] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) ~[spring-beans-5.3.29.jar:5.3.29] at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653) ~[spring-beans-5.3.29.jar:5.3.29] ... 33 common frames omitted Caused by: org.springframework.dao.DataAccessResourceFailureException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=db-mongo-rs.public-component:4031, type=UNKNOWN, roundTripTime=11.1 ms, state=CONNECTED, exception={com.mongodb.MongoConfigurationException: Replica set name 'null' does not match required replica set name of 'mongo-rs'}}]; nested exception is com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=db-mongo-rs.public-component:4031, type=UNKNOWN, roundTripTime=11.1 ms, state=CONNECTED, exception={com.mongodb.MongoConfigurationException: Replica set name 'null' does not match required replica set name of 'mongo-rs'}}] at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:95) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:3029) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:581) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.DefaultIndexOperations.execute(DefaultIndexOperations.java:215) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.DefaultIndexOperations.ensureIndex(DefaultIndexOperations.java:121) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.createIndex(MongoPersistentEntityIndexCreator.java:157) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.checkForAndCreateIndexes(MongoPersistentEntityIndexCreator.java:147) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.checkForIndexes(MongoPersistentEntityIndexCreator.java:131) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.<init>(MongoPersistentEntityIndexCreator.java:96) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.index.MongoPersistentEntityIndexCreator.<init>(MongoPersistentEntityIndexCreator.java:73) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.MongoTemplate.<init>(MongoTemplate.java:224) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.boot.autoconfigure.data.mongo.MongoDatabaseFactoryDependentConfiguration.mongoTemplate(MongoDatabaseFactoryDependentConfiguration.java:63) ~[spring-boot-autoconfigure-2.7.15.jar:2.7.15] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) ~[spring-beans-5.3.29.jar:5.3.29] ... 34 common frames omitted Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=db-mongo-rs.public-component:4031, type=UNKNOWN, roundTripTime=11.1 ms, state=CONNECTED, exception={com.mongodb.MongoConfigurationException: Replica set name 'null' does not match required replica set name of 'mongo-rs'}}] at com.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:180) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.internal.connection.SingleServerCluster.getDescription(SingleServerCluster.java:44) ~[mongodb-driver-core-4.6.1.jar:na] at com.mongodb.client.internal.MongoClientDelegate.getConnectedClusterDescription(MongoClientDelegate.java:144) ~[mongodb-driver-sync-4.6.1.jar:na] at com.mongodb.client.internal.MongoClientDelegate.createClientSession(MongoClientDelegate.java:101) ~[mongodb-driver-sync-4.6.1.jar:na] at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getClientSession(MongoClientDelegate.java:291) ~[mongodb-driver-sync-4.6.1.jar:na] at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:207) ~[mongodb-driver-sync-4.6.1.jar:na] at com.mongodb.client.internal.MongoCollectionImpl.executeCreateIndexes(MongoCollectionImpl.java:848) ~[mongodb-driver-sync-4.6.1.jar:na] at com.mongodb.client.internal.MongoCollectionImpl.createIndexes(MongoCollectionImpl.java:831) ~[mongodb-driver-sync-4.6.1.jar:na] at com.mongodb.client.internal.MongoCollectionImpl.createIndexes(MongoCollectionImpl.java:826) ~[mongodb-driver-sync-4.6.1.jar:na] at com.mongodb.client.internal.MongoCollectionImpl.createIndex(MongoCollectionImpl.java:811) ~[mongodb-driver-sync-4.6.1.jar:na] at org.springframework.data.mongodb.core.DefaultIndexOperations.lambda$ensureIndex$0(DefaultIndexOperations.java:131) ~[spring-data-mongodb-3.4.15.jar:3.4.15] at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:579) ~[spring-data-mongodb-3.4.15.jar:3.4.15] ... 46 common frames omitted、
最新发布
08-07
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值