You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS DocDB非root角色登录及授权失败问题求助

AWS DocDB 创建只读权限用户的问题排查与解决

一、非root角色用户认证失败的排查要点

  • 确认用户创建的正确位置:DocDB要求所有用户必须在admin数据库下创建,且认证时指定--authenticationDatabase admin(你已按此操作,但需确保创建用户时确实切换到admin库执行db.createUser)。错误地在业务库创建用户会直接导致认证失败。
  • 角色赋值必须绑定具体数据库:DocDB不支持全局角色,所有权限角色必须明确指定目标数据库。例如给用户赋予业务库的只读权限,正确语法为:
    use admin
    db.createUser({
      user: "svc_ise",
      pwd: "your_secure_password",
      roles: [{ role: "read", db: "your_target_business_db" }]
    })
    
    若错误地将read角色绑定到admin库,用户仅能访问admin库的只读资源,无法正常访问业务库,部分场景下DocDB会将此类权限不足判定为认证失败。
  • 检查DocDB认证模式:确保实例未开启IAM认证,若开启IAM,密码认证的用户会无法登录。可在AWS控制台DocDB实例详情页查看认证模式配置。
  • 分析CloudWatch审计日志:重点搜索Authentication failed关键字,日志会给出具体失败原因(如用户不存在、密码错误、authSource不匹配等)。

二、show users授权失败的解决方法

show users(等价于db.getUsers())本质是查询admin.system.users集合,因此需要用户对该集合拥有读权限,可选择以下两种方案:

  • 方案1:赋予admin库只读角色:若允许用户查看admin库的所有只读资源,直接给用户添加对应角色:
    use admin
    db.grantRolesToUser("svc_ise_read", [{ role: "read", db: "admin" }])
    
  • 方案2:创建细粒度自定义角色:若仅需用户查看用户列表,可创建仅允许读取system.users集合的自定义角色:
    use admin
    // 创建自定义角色
    db.createRole({
      role: "view_only_users",
      privileges: [
        { resource: { db: "admin", collection: "system.users" }, actions: ["find"] }
      ],
      roles: []
    })
    // 给用户赋予该角色
    db.grantRolesToUser("svc_ise_read", [{ role: "view_only_users", db: "admin" }])
    

三、验证只读用户权限的步骤

  1. 用只读用户登录DocDB:
    mongosh --ssl --host your-docdb-endpoint:27017 --username svc_ise_read --password your_password --sslCAFile rds-combined-ca-bundle.pem --authenticationDatabase admin
    
  2. 切换到业务库验证权限:
    use your_target_business_db
    // 验证只读权限(可正常执行)
    db.your_collection.find().limit(1)
    // 验证写入限制(执行会报错)
    db.your_collection.insertOne({test: 1})
    

内容的提问来源于stack exchange,提问作者Raviteja Ainampudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 11:58:17