Skip to content

访问控制概述

访问控制系统是数据库安全的核心机制,负责管理用户连接权限和数据操作权限。Datalayers 采用基于用户、权限和角色的三层访问控制模型,实现对数据库资源的精细化安全管理。

核心概念

用户

用户是指能够连接到 Datalayers 数据库的客户端身份。每个用户账户由​​用户名​​和​​主机名​​共同标识,形成完整的访问上下文。

示例:​

  • 'user'@'127.0.0.1':仅允许从本地主机连接的 user 用户
  • 'user'@'%':允许从任意主机连接的 user 用户

这种设计支持基于源IP的细粒度访问控制,为不同网络环境的用户设置差异化权限。
更多有关用户账户的信息请参照:用户管理

权限

权限定义了用户可执行的操作范围,Datalayers 提供三级权限作用域:

  • 全局权限:适用于服务器中所有对象的权限,以及与系统管理相关的权限,例如:在任意数据库中建表的权限,向集群中添加节点的权限等。

  • 数据库权限:适用于指定的数据库及其包含的所有对象的权限。例如:在数据库中建表、删表的权限,访问数据库中某张表的权限等。

  • 对象权限:适用于数据库中的特定对象的权限,当前 Datalayers 仅支持表级权限,例如:访问某张表的权限。

通过授予和撤销这些权限,数据库管理员可以精确控制用户对数据的访问和操作能力。

更多有关权限的信息请参照:权限管理

角色

角色是一组权限的集合,也可以看作是一种特殊类型的用户。与普通用户一样,角色可以被授予权限。不同的是,角色本身不具备登录能力,无法直接连接数据库。其主要作用是作为权限的载体,可以被分配(授予)给其他用户。当用户被授予某个角色后,便自动继承该角色所拥有的所有权限,从而简化了权限管理。

在实际应用中,角色用于将权限分组,尤其适用于用户数量多、权限需求复杂的场景。管理员可以根据职责或访问级别创建不同的角色(例如,read_only 角色仅授予只读权限,app_user 角色则拥有读写权限),然后将相应角色授予用户。这样,用户将自动继承角色的权限,避免了逐个分配和撤销权限的繁琐操作。

更多有关角色的信息请参照:角色管理

访问控制流程

当一个用户尝试连接到 Datalayers 服务器并执行某个操作时,访问控制系统会进行以下检查:

  • 连接认证:检查客户端传递的用户名与主机名是否存在于系统中以及对应的密码是否正确,若是正确则被允许连接,否则拒绝该连接。
  • 权限检查:连接成功后,对于客户端发起的后续请求,系统会检查是否符合相应的权限要求,例如是否具有建表的权限。此过程是自上而下的,即按照全局权限、数据库权限、对象权限的顺序检查,只要在任何一个级别中具备相关权限,请求将被接受。