#访问控制
# 基于角色
YashanDB采用基于角色的访问控制(RBAC),限制授权用户对系统的访问。
角色包含权限集,通过角色能有效权限管理,管理员对用户只需关注其角色,对角色只需关注其权限集。
三权分立
数据库在运行过程中需要持续的运维和管理,理论上使用sys用户可以执行所有的管理操作,但会产生非常大的安全风险:
sys为YashanDB的超级管理员账号,拥有完全的权限,可以执行对数据库执行所有的操作,可能存在因误操作导致严重故障的风险。
使用sys账号所执行的操作在日志或记录表中均标记为sys,无法追踪回溯到实际的执行者。
若将sys账号应用于数据库的日常管理中,使用频度过高,很容易成为黑客窃取口令的目标,一旦窃取成功,将使整个数据库系统被暴露,造成严重后果。
因此,在产品安装完成,系统管理员接手对数据库的管理工作后,建议首先创建数据库的管理员账号,依据管理职责授予其对应的管理权限,使用管理员账号(而非sys账号)进行后续管理和运维操作。
在计算机信息系统的等保要求(3级及以上标准)中提出数据库系统必须要采用“三权分立”的权限体系,如下图所示:
三权分立是对数据库管理权限的划分,让各类管理员能够独立行使权力又相互制约,可以有效避免管理权限过于集中的风险。
YashanDB对此体系提供如下功能支持:
控制开关:通过ENABLE_SEPARATE_DUTY配置参数,由企业根据自身需要选择是否启用三权分立。
内置三权角色:
DBA:管理数据库日常运维,例如日志文件管理、备份恢复、各类DDL操作等。
SECURITY_ADMIN:管理数据库的安全机制,例如管理用户、角色、为其他账号授权等。
AUDIT_ADMIN:管理数据库的审计机制,例如创建审计策略、跟踪分析审计日志等,负责追溯其他用户的行为,也包括监督DBA和安全管理员。
# 基于标签
YashanDB还提供了基于标签的访问控制(LBAC),可以实现行级别的强访问控制,根据用户的安全标签以及数据的安全标签来控制数据访问,精准控制用户对表中各行数据的读写权限,保证读写数据的安全。
LBAC是强访问控制的一种方式,通过在表中应用安全策略保护数据、向用户应用安全标签授予读写权限。当用户尝试访问受保护数据时,该用户的安全标签将与受保护数据的安全标签进行比较,从而约束或允许用户对数据的访问。
一个安全策略可以应用到多张表上,表中每应用一个安全策略便会自动添加一列,用于该安全策略的访问控制。
应用安全策略后,表中的每一行与对应的安全标签相关联以行级别对数据进行保护。受安全标签保护的数据称为受保护数据。
安全管理员通过向用户授予安全标签来允许用户访问相应的受保护数据。
当用户尝试访问受保护数据时,该用户的安全标签将与受保护数据的安全标签进行比较:
用户只允许查询到被LBAC授权可读的行。
要求用户的安全标签的级别高于目标数据的安全标签的级别,且用户的安全标签的范围包含目标数据的安全标签的所有范围,用户才能正常读取相应行。
用户只允许修改、删除或插入被LBAC授权可写的行。
要求用户的安全标签的最低级别低于目标数据的安全标签的级别,且用户的安全标签的范围包含目标数据的安全标签的所有可写范围,用户才能正常写入相应行。