MST

星途 面试题库

面试题:CouchDB中如何基于设计文档实现基本的安全访问控制

请阐述在CouchDB设计文档层面,如何通过简单配置实现对数据库读写等操作的基本安全访问控制,比如不同角色对设计文档的不同权限设置。
26.5万 热度难度
数据库CouchDB

知识考点

AI 面试

面试题答案

一键面试

在CouchDB设计文档层面实现基本安全访问控制可按以下步骤:

  1. 角色定义:在CouchDB的_users系统数据库中定义不同角色。例如,可以创建admineditorviewer等角色。
  2. 设计文档权限设置:在设计文档中,通过_security对象来设置不同角色的权限。
    {
        "_id": "_design/your_design_doc",
        "_security": {
            "admins": {
                "names": [],
                "roles": ["admin"]
            },
            "readers": {
                "names": [],
                "roles": ["viewer", "editor", "admin"]
            }
        },
        "views": {
            "your_view": {
                "map": "function(doc) { emit(doc._id, doc); }"
            }
        }
    }
    
    • admins字段:
      • names数组可填入具体用户名,这些用户将拥有管理员权限。
      • roles数组指定角色,如上述示例中admin角色的用户拥有管理员权限,可对设计文档进行读写、删除等所有操作。
    • readers字段:
      • names数组填入具体用户名,这些用户可读取设计文档。
      • roles数组指定角色,示例中viewereditoradmin角色的用户都有读取权限。editor角色除读取外,可按需求配置写入权限(若未配置写入权限,editor角色默认只有读取权限)。
  3. 数据库权限设置:在数据库层面也可进一步配置权限,以控制对整个数据库及其中设计文档的访问。同样通过_security对象:
    {
        "_id": "_security",
        "admins": {
            "names": [],
            "roles": ["admin"]
        },
        "readers": {
            "names": [],
            "roles": ["viewer", "editor", "admin"]
        }
    }
    
    这样设置后,不同角色的用户就可以根据配置对数据库及设计文档进行相应的安全访问控制操作。