数据库系统访问控制面面观

背景介绍

信息系统安全是保护信息系统中各类型数据资源免受未经授权的访问(包括查看、新增、修改、删除),确保数据完整性、保密性和可用性。在当下万物互联的发展背景下,信息安全尤其重要。访问控制作为信息安全的重要组成部分,既可对用户访问信息系统进行身份鉴别,又可细粒度控制用户对信息的访问权限。数据库作为信息系统的基础软件,承担着数据存储的责任,需要保证信息的完整性、保密性和可用性,就需要进行严格的访问控制。

以下为部分内容节选,完整内容可点击上方视频查看完整版内容。

访问控制模型简介

访问控制核心功能和要素

访问控制的核心功能:身份鉴别和资源访问控制,具体体现在以下四个方面:

  • 允许合法的主体进入受保护的系统;

  • 禁止非法的主体进入受保护的系统;

  • 允许合法的主体对受保护的资源进行授权的访问;

  • 禁止合法的主体对受保护的资源进行非授权的访问。

访问控制的三要素是:主体、客体和控制策略:

  • 主体,请求访问资源的实体,可以是系统用户、进程或设备等;

  • 客体,被访问的资源实体,可以是文件或数据库对象等;

  • 控制策略,是属性集合,可以是读、写或执行等。

身份鉴别

1、基于口令的身份鉴别

通过用户名和密码进行身份鉴别,大多数信息系统都会采用该方法。
2、基于证书的身份鉴别 通过签名证书进行身份鉴别,使用较多的是 TLS(Transport Layer Security,传输层安全协议)证书。该方法既可以对证书的合法性进行验证,同时对证书与系统相结合的信息进行验证。证书的合法性验证,一般需要验证证书的有效性(证书在有效期内)和可信性(证书链可信)。与系统相结合的信息,一般是 Common Name 与系统用户的信息相关。
3、基于三方认证中心的身份鉴别 在业务复杂或者子系统较多的信息系统中,很有必要使用统一的认证中心进行身份鉴别。常用的统一身份认证架构有 LDAP、Radius、GSSAPI 等。GSSAPI 的具体实现较多,例如 KerberosV5、NTLM 和 SPNEGO。
4、基于生物特征的身份鉴别 依据每个用户的唯一生物特征进行鉴别,包括指纹、声音、面部识别、虹膜、笔迹、手形、掌纹等。
5、基于硬件设备的身份鉴别 使用与身份绑定的硬件设备,例如身份证、IC 卡等。
6、OTP(One-Time-Password) 在身份认证过程中只使用一次的密码。一个密码一旦使用,该密码立即失效,不能重复使用。OTP 一般不独立使用,需要与其它认证方式结合,在 2FA 或 MFA 场景中使用,加强身份鉴别的安全性。
7、基于 HBA( Host-Based Authentication ) 的身份鉴别配置对指定访问类型、指定访问资源、指定来源、指定用户的身份鉴别方法及其鉴别参数进行配置,从而实现灵活配置身份鉴别方法。

资源访问控制
访问控制模型发展历史 信息安全随着信息化的发展,访问控制模型也在不断演进。最早是 MAC(Mandatory Access Control,强制访问控制)和 DAC(Discretionary Access Control,自主访问控制),后出现 IBAC(Identity-Based Access Control,基于身份的访问控制)和 ACL(Access Control Lists,访问控制列表)。

随着信息系统发展,出现了流行的 RBAC(Role-Based Access Control,基于角色的访问控制),并在此基础上发展出了 ABAC(Attribute-Based Access Control,基于属性的访问控制)。在部分领域特别是数据库领域,发展和使用了 LBAC(Label-Based Access Control,基于标签的访问控制)。

访问控制模型介绍 1、MACMAC,强制访问控制。MAC 的强制性体现在,由专门的管理员进行权限的管理。在安全性要求比较高的保密领域,MAC 曾围绕 MLS(Multi-Level Security,多级安全)构建访问控制模型。MLS 最初设想为同心圆,有多层的访问控制权限,越往中心密级越高。

2、 DACDAC,自主访问控制。DAC 的自主性体现在,用户可以按自己的意愿,有选择地与其他用户共享其资源。

3、 ACL/IBACACL,访问控制列表。ACL 是一种数据结构,通常与资源(如文件、数据库记录或网络资源)直接关联,列出了具有访问权限的用户及其访问权限(如读、写、执行等)。ACL 通常由一组规则(即 ACL 条目)组成,每个 ACL 条目定义了一种访问控制策略,包括允许或拒绝特定类型的访问请求。

IBAC,基于身份的访问控制。IBAC 根据用户的身份(如用户名或用户 ID)来授权用户对资源的访问。直接将访问权限与个体的身份相关联,是最直观的访问控制方式之一。IBAC 更加强调用户身份的作用,通过身份信息来控制访问权限。

IBAC 模型通过将用户的身份信息与资源的访问权限相关联,实现了用户与权限之间的关联。IBAC 的核心在于使用ACL 来定义哪些用户可以访问哪些资源。
4、RBACRBAC,基于角色的访问控制。RBAC 是当前信息系统使用最广泛的访问控制模型。RBAC 的核心概念是权限与角色相关联,并且用户被分配给适当的角色。角色一边是用户集合,另一边是权限集合,充当了将用户集合和权限集合结合在一起的中介角色。

在开源领域,RBAC 著名的开源框架有 Spring Security 和 Apache Shiro。

RBAC 在实践过程中,根据不同的应用场景,逐步发展出四个参考模型:• RBAC0:基础模型,任何声称支持 RBAC 的系统的最低要求;• RBAC1:高级模型,在 RBAC0 基础上,增加了角色层次功能。角色可以是角色的成员,也可从父级继承权限;• RBAC2:高级模型,在 RBAC0 基础上,增加了职责分离功能,避免用户拥有过多权限而产生利益冲突。常见的职责分离有静态互斥角色、运行时互斥角色、基数约束(角色总数)、先决条件约束等;• RBAC3:高级模型,在 RBAC0 基础上,结合了 RBAC1 和 RBAC2 的优点。
5、ABAC ABAC,基于属性的访问控制。ABAC 利用相关实体的属性作为授权的基础,通过动态计算一个或一组属性是否满足某种条件来进行授权判断。

ABAC 的访问控制策略:具备 u 属性的用户在 c 属性条件下允许/禁止对具有 d 对象属性的资源执行具有 o 属性的操作(u, c, d, o为随机举例)。所以 ABAC 的核心是 4 类实体属性:

  • 用户属性,用户所具有的属性,例如年龄、部分、职位等;

  • 环境属性,访问控制的环境条件因素,例如当前时间、允许访问的时间、允许访问的子网等;

  • 资源属性,资源所具有的属性,例如文件类型、数据敏感度等;

  • 操作属性,允许的操作类型,例如读、写、执行等。

ABAC 能够实现非常灵活的权限控制,理论上来说几乎能满足所有类型的访问控制需求。
6、LBACLBAC,基于标签的访问控制。LBAC 中,用户和数据被授予标签,基于标签进行比较,决定用户是否可以访问数据。用户、数据和标签之间的关系可以通过下图来进行描述。

  • 数据标签:指定数据行的敏感度;

  • 用户标签:为用户提供适当的授权;

  • 用户和数据之间的访问中介取决于用户的标签。

数据库标准关于访问控制的要求

《GB/T 20273-2019 信息安全技术 数据库管理系统安全技术要求》,关于访问控制的要求主要涉及三大功能类 27 项功能组件。

用户数据保护

标识和鉴别

安全管理

KaiwuDB 访问控制

KaiwuDB 访问控制也包含身份鉴别和访问控制两个部分。

KaiwuDB 身份鉴别

1、基于口令的身份鉴别

KaiwuDB 支持基于口令的身份鉴别。用户口令安全性措施:

  • 口令存储加密方法(国际算法和商密算法)
  • 口令不能包含用户名及其逆序
  • 口令最小长度限制
  • 口令最大长度限制
  • 大写字母位数
  • 小写字母位数
  • 数字位数
  • 特殊符号位数
  • 包含的字符的类别数限制(大写字母、小写字母、数字、特殊符号)

2、基于证书的身份鉴别

KaiwuDB 支持基于 TLS 证书的身份鉴别。可对证书的过期时间、证书链进行验证,同时对证书中的 Common Name 于数据库系统的用户名进行验证。

3、基于三方统一认证的身份鉴别

KaiwuDB 支持基于三方统一认证的身份鉴别,支持 GSSAPI 认证框架,具体实现是 Kerberos V5 统一认证。

4、2FA

KaiwuDB 支持基于 TLS 证书和口令的 2FA。

5、HBA

KaiwuDB 支持对指定访问类型、指定访问资源、指定来源、指定用户的身份鉴别方法及其鉴别参数进行配置,从而实现灵活配置身份鉴别方法。

KaiwuDB 访问控制

1、访问控制列表

KaiwuDB 支持访问控制列表,直接针对用户和数据库对象进行访问控制权限管理。

**

**

2、RBAC

KaiwuDB 支持 RBAC1 模型,可以基于角色进行访问控制,并且支持角色的层次管理和权限继承。

**

**

3、LBAC

KaiwuDB 支持 LBAC 访问控制,可基于标签进行访问控制。标签目前支持 Level 组件,标记用户的准许访问级别和数据的敏感度等级。用户只能访问敏感度等级低于准许访问等级的数据。

4、 ABAC

KaiwuDB 支持 ABAC,可以基于属性进行访问控制。ABAC 支持的用户属性有:

  • CREATEDB/NOCREATEDB:允许/禁止用户的 CREATE DATABASE 操作。

  • CREATEROLE/NOCREATEROLE:允许/禁止用户的 CREATE ROLE 和 CREATE USER 操作。

  • LOGIN/NOLOGIN:允许/禁止用户的登录。

  • FAILED_LOGIN_ATTEMPTS:允许用户的最大失败登录尝试次数。

  • CONNECTION LIMIT:允许用户的最大并发登录连接数。

  • VALID UNTIL:用户的口令有效期。超过有效期,不允许登录。

KaiwuDB 访问控制未来规划

1、身份鉴别未来规划

身份鉴别未来规划,主要计划实现以下功能:

  • 2FA/MFA:除了用户口令和证书的 2FA 之外,支持更多的 2FA 和 MFA 身份鉴别,例如加入验证码、OTP 等。

  • 三方统一认证身份鉴别:除 Kerberos V5 之外,支持 LDAP 和 Radius 等三方统一认证。

2、 访问控制未来规划

访问控制未来规划,主要计划实现以下功能:

  • 安全角色限制:支持 RBAC3 模型,包含职责分离功能,例如三权分立或者更多角色职责分离。
  • LBAC 功能增强:从当前包含 Level组件,扩展到包含 Level、Compartment 和 Group 组件的 LBAC,并在此基础上实现列级和行级等更细粒度访问控制。
相关推荐
仍然.1 分钟前
MYSQL--- 聚合查询,分组查询和联合查询
数据库
一 乐6 分钟前
校园二手交易|基于springboot + vue校园二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
啦啦啦_99998 分钟前
Redis-0-业务逻辑
数据库·redis·缓存
自不量力的A同学40 分钟前
Redisson 4.2.0 发布,官方推荐的 Redis 客户端
数据库·redis·缓存
Exquisite.42 分钟前
Mysql
数据库·mysql
全栈前端老曹1 小时前
【MongoDB】深入研究副本集与高可用性——Replica Set 架构、故障转移、读写分离
前端·javascript·数据库·mongodb·架构·nosql·副本集
R1nG8631 小时前
CANN资源泄漏检测工具源码深度解读 实战设备内存泄漏排查
数据库·算法·cann
阿钱真强道1 小时前
12 JetLinks MQTT直连设备事件上报实战(继电器场景)
linux·服务器·网络·数据库·网络协议
逍遥德2 小时前
Sring事务详解之02.如何使用编程式事务?
java·服务器·数据库·后端·sql·spring
笨蛋不要掉眼泪2 小时前
Redis哨兵机制全解析:原理、配置与实战故障转移演示
java·数据库·redis·缓存·bootstrap