温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么实现数据库访问控制

发布时间:2026-10-18 09:35:14 来源:亿速云 阅读:98 作者:小樊 栏目:数据库

数据库访问控制(Access Control)是指只允许被授权的用户/应用,以被允许的方式访问被授权的数据。下面从策略设计 → 技术实现 → 常见方案 → 最佳实践四个层面说明。


一、访问控制的核心模型

1. 自主访问控制(DAC)

  • 资源所有者决定谁可以访问
  • 如:MySQL 的 GRANT 权限
  • 优点:灵活
  • 缺点:难以统一管理

2. 强制访问控制(MAC)

  • 系统统一制定策略(如密级)
  • 常用于政府、军工
  • 数据库层支持较少,多在操作系统/中间件实现

3. 基于角色的访问控制(RBAC)✅ 最常用

  • 用户 → 角色 → 权限
  • 示例:
    • reader:SELECT
    • writer:INSERT/UPDATE
    • admin:ALL

4. 基于属性的访问控制(ABAC)

  • 根据用户属性、环境、数据标签动态判断
  • 如:只允许“部门=财务”且“时间=工作时间”访问

二、数据库层面的实现方式

1. 账号与权限管理(最基础)

以 MySQL 为例:

-- 创建只读用户
CREATE USER 'report'@'%' IDENTIFIED BY 'pwd';
GRANT SELECT ON db.* TO 'report'@'%';

-- 创建读写用户
CREATE USER 'app'@'%' IDENTIFIED BY 'pwd';
GRANT SELECT, INSERT, UPDATE ON db.* TO 'app'@'%';

✅ 原则:

  • 一个应用一个账号
  • 最小权限原则
  • 禁止 root 远程连接

2. 行级 / 列级访问控制

列级权限

GRANT SELECT (id, name) ON user TO 'hr';

行级控制(视图方案)

CREATE VIEW v_finance AS
SELECT * FROM orders WHERE dept = 'finance';

GRANT SELECT ON v_finance TO 'finance_user';

高级数据库支持

  • PostgreSQL:RLS(Row Level Security)
CREATE POLICY p1 ON orders
FOR SELECT
USING (dept = current_user_dept());

3. 数据脱敏(Masking)

  • 动态脱敏:查询时隐藏部分字段
  • 静态脱敏:测试环境使用假数据

示例(PostgreSQL):

CREATE VIEW v_user AS
SELECT id, mask_phone(phone) FROM user;

三、应用层访问控制(非常重要)

数据库权限 ≠ 业务权限

常见做法

  • 在应用层做:
    • 登录认证(JWT / OAuth)
    • 角色判断
    • 数据范围过滤(如只能看自己部门)
if (!user.hasRole("ADMIN")) {
    sql += " AND owner_id = " + user.getId();
}

✅ 原因:

  • 数据库无法理解“业务规则”
  • 防止越权访问(IDOR 漏洞)

四、中间件 / 代理层方案

适合大型系统:

  • 数据库审计代理(如 ProxySQL、ShardingSphere)
  • 统一权限网关
    • 所有 SQL 经过网关
    • 自动注入权限条件

五、安全最佳实践清单

✅ 使用强密码 + 定期轮换
✅ 禁用公网数据库端口
✅ 启用 SSL / TLS
✅ 开启审计日志
✅ 定期权限复审
✅ 生产 / 测试环境权限隔离
✅ 敏感操作多因素认证


六、典型架构示例

用户
 ↓
API 网关(认证)
 ↓
应用服务(RBAC + 数据过滤)
 ↓
数据库(最小权限 + RLS)

如果你能说明:

  • 使用的数据库(MySQL / PostgreSQL / Oracle)
  • 是内部系统还是对外服务
  • 是否需要行级权限

我可以给你更具体的实现方案或 SQL 示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手