PolarDB-X 企业级特性之三权分立

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: PolarDB-X 支持三权分立模式,打破了传统数据库运维由 DBA 行使特权的独立控制体系,使得数据库管理员 DBA、安全管理员 DSA 和审计管理员 DAA 三者的权责更加清晰。

背景

image.png

看到以上的场景,可能不少 DBA 都会感同身受;同时,老板还可能会担心 DBA 的人品,就比如去年才发生了某科技公司删库导致业务瘫痪的事件。当然现在连很多小公司或开发团队也懂得象征性地设置一些数据库账号权限(不少时候可能会为了便捷而混用权限账号),但如果对于已经初具规模的企业来说的话,即使已经严格划分为有 SUPERUSER 权限的 DBA 账号和按需授权的开发账号,老板仍会担心 DBA 有权限访问业务敏感数据、或者授权给不明身份人士、甚至可以通过审计日志看到不同业务部门对数据库的操作,总之“只手遮天”的 DBA 仿佛就是把握了企业数据的命脉。

针对以上问题,PolarDB-X 新增支持三权分立模式,打破了传统数据库运维由 DBA 行使特权的独立控制体系,使得数据库管理员 DBA、安全管理员 DSA 和审计管理员 DAA 三者的权责更加清晰。其中:

  • 数据库管理员(DBA, Database Administrator):只具备 DDL 权限
  • 安全管理员(DSA,Department Security Administrator):只具备管理角色(Role)或用户(User)以及为其他账号授予权限的权限
  • 审计管理员(DAA,Data Audit Administrator):只具备查看审计日志的权限

该功能特性强调的是通过访问层次上的控制体系,来从数据库层面降低安全风险。

原理简介

以 Oracle 这一款王者级别的数据库管理系统为例,其从 Oracle 10g 开始推出了 Database Vault [2]这一运维安全体系框架。在这套框架内,其定义了数据库中以下三种核心职责:

  • 账号管理:包括创建、修改、删除用户账号
  • 安全管理:设置账户对数据库的访问权限,授权用户对数据库表上可执行的操作
  • 资源管理:管理数据库系统的资源,但无权访问业务数据,比如进行定期备份、性能监控与调优等操作

可以看出,其核心思想是将原来单一的数据库管理员超级权限进行拆分。在此基础上,PolarDB-X 的三权分立管理模式则结合了分布式数据库的特点,将权限信息保存在独立的 GMS 元数据中心,并且权限职责划分得更加清晰明确,下表展示了三权分立与默认模式的权限区别:

权限 默认模式 三权分立-DBA 三权分立-DSA 三权分立-DAA
DML ✔️
DQL ✔️
DAL ✔️
DDL ✔️ ✔️
账号角色管理 ✔️ ✔️
审计日志 ✔️ ✔️

其中,具体的权限分类如下所示:

  • DML 包括 INSERT、UPDATE、DELETE语句权限
  • DQL 包括 SELECT语句权限
  • DAL 包括 EXPLAIN、SHOW、sql限流等语句权限
  • DDL 包括 CREATE TABLE / VIEW / INDEX、DROP TABLE / VIEW / INDEX等语句权限
  • 账号角色管理包括 CREATE USER / ROLE、GRANT、REVOKE 等语句权限
  • 审计日志则包括对 information_schema 下 polardbx_audit_log 系统表的访问权限

功能场景展示

功能开启
开启三权分立模式均为白屏化操作

  1. 在 PolarDB-X 控制台开启三权分立:

image.png

  1. 依次创建安全管理员账号和审计管理员账号:

image.png

image.png

  1. 创建成功后可以看到三个管理员账号:

image.png

下面将将结合具体的场景、以上述三个类型管理员的身份来演示不同类型的SQL操作,并展示三权分立支持的核心功能,其中三类管理员的账号名分别如下所示:

  • 系统管理员:admin_dba
  • 安全管理员:admin_security
  • 审计管理员:admin_audit

场景一 隔离敏感数据
image.png

-- 登录admin_dba
mysql> select USER();
+---------------------------+
| USER()                    |
+---------------------------+
| admin_dba@100.120.138.141 |
+---------------------------+
1 row in set (0.00 sec)

mysql> select * from orders;
ERROR 5108 (HY000): [13aaee05c5003000][11.115.153.234:3035][tmall]ERR-CODE: [TDDL-5108][ERR_CHECK_PRIVILEGE_FAILED_ON_TABLE] User admin_dba@'100.120.138.141' does not have 'SELECT' privilege on table 'ORDERS'. Database is TMALL.

mysql> insert into orders (`o_id`,`o_c_id`,`o_s_id`) values (162103411, 1, 123);
ERROR 5108 (HY000): [13aaee0c37803000][11.115.153.234:3035][tmall]ERR-CODE: [TDDL-5108][ERR_CHECK_PRIVILEGE_FAILED_ON_TABLE] User admin_dba@'100.120.138.141' does not have 'INSERT' privilege on table 'ORDERS'. Database is TMALL.

场景二 隔离权限授予
image.png

-- 登录admin_dba
mysql> select USER();
+---------------------------+
| USER()                    |
+---------------------------+
| admin_dba@100.120.138.141 |
+---------------------------+
1 row in set (0.00 sec)

mysql> CREATE USER 'user1'@'%' IDENTIFIED BY 'polarX123456';
ERROR 5110 (HY000): [13aaee115fc03000][11.115.153.234:3035][tmall]ERR-CODE: [TDDL-5110][ERR_CHECK_PRIVILEGE_FAILED] User admin_dba@'100.120.138.141' does not have 'CREATE ACCOUNT' privilege. Database is TMALL.

-- 登录admin_security
mysql> select USER();
+--------------------------------+
| USER()                         |
+--------------------------------+
| admin_security@100.120.137.141 |
+--------------------------------+
1 row in set (0.00 sec)

mysql> CREATE USER 'tmall_dev'@'192.168.0.%' IDENTIFIED BY 'polarX123456';
Query OK, 0 rows affected (0.07 sec)

mysql> grant select,insert,update on tmall.* to 'tmall_dev'@'192.168.0.%';
Query OK, 0 rows affected (0.03 sec)

mysql> show grants for 'tmall_dev'@'192.168.0.%';
+----------------------------------------------------------------------+
| GRANTS FOR 'TMALL_DEV'@'192.168.0.%'                                 |
+----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'tmall_dev'@'192.168.0.%'                      |
| GRANT SELECT, INSERT, UPDATE ON tmall.* TO 'tmall_dev'@'192.168.0.%' |
+----------------------------------------------------------------------+
2 rows in set (0.00 sec)

场景三 隔离sql日志
image.png

-- 登录admin_audit
mysql> select USER();
+-----------------------------+
| USER()                      |
+-----------------------------+
| admin_audit@100.120.138.141 |
+-----------------------------+
1 row in set (0.00 sec)

mysql> use information_schema;
Database changed
mysql> select USER_NAME,HOST,PORT,AUDIT_INFO,ACTION,TRACE_ID from polardbx_audit_log where SCHEMA = 'tmall';
+----------------+-----------------+------+--------------------------------------------------------------------+-------------+------------------+
| USER_NAME      | HOST            | PORT | AUDIT_INFO                                                         | ACTION      | TRACE_ID         |
+----------------+-----------------+------+--------------------------------------------------------------------+-------------+------------------+
| admin_security | 100.120.137.141 | 9635 | CREATE USER 'tmall_dev'@'192.168.0.%' IDENTIFIED BY 'polarX123456' | CREATE_USER | 13aaef15fd004000 |
| admin_security | 100.120.137.141 | 9635 | grant select,insert,update on tmall.* to 'tmall_dev'@'192.168.0.%' | GRANT       | 13aaef5d78804000 |
+----------------+-----------------+------+--------------------------------------------------------------------+-------------+------------------+
2 rows in set (0.01 sec)

关于详细使用方法与实践可参考官方文档

总结

回过头来看,三权分立是不是能彻底解决在开篇背景中提到的删库跑路的问题呢?事实上,看完这篇文章,你会知道并不能;如果想知道如何避免删库等操作带来的风险,可以参考系列文章《PolarDB-X 如何拯救误删数据的你》。

那么三权分立究竟带来了什么呢?三权分立本质就是权力的分散,而这并不意味着会导致效率的低下;相反实行分责制度,避免一些误操作的风险,还可以有效降低敏感数据泄露的风险。

笔者相信,在数据保护越来越严格、企业操作规范越来越健全的如今,三权分立模式将为需要管理大规模数据库的企业降低运维风险、提供敏感数据访问保护,从而企业不仅能够同时减少来自内、外部的威胁,还能满足相应的合规需求。


参考

  1. https://docs.oracle.com/en/database/oracle/oracle-database/21/dvadm/oracle-database-vault-schemas-roles-and-accounts.html#GUID-4E1707B4-F9BB-4131-9D3E-90BB273F2832
  2. https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
目录
相关文章
|
SQL 存储 安全
PolarDB-X 企业级特性之行级访问权限控制
本文介绍PolarDB-X数据库实现了基于标签的访问控制功能,可以在行、列级别对数据访问进行控制,精细化的限制用户对数据的访问和操作,保证了读写数据的安全。下文根据实际应用场景,介绍PolarDB-X的LBAC功能设计以及使用方法。
|
存储 SQL 运维
云栖大会开源重磅升级![版本更新]PolarDB-X v2.2: 企业级和国产ARM适配
PolarDB-X 正式发布2.2.0版本,这是一个重要的里程碑版本,重点推出符合分布式数据库金融标准下的企业级和国产ARM适配,共包括八大核心特性,全面提升 PolarDB-X 分布式数据库在金融、通讯、政务等行业的普适性。
|
6月前
|
关系型数据库 分布式数据库 数据库
【PolarDB开源】PolarDB-X源码解读:分布式事务处理机制揭秘
【5月更文挑战第20天】PolarDB-X,PolarDB家族的一员,专注于大规模分布式事务处理,采用2PC协议保证ACID特性。源码解析揭示其通过预提交、一致性快照隔离和乐观锁优化事务性能,以及利用事务日志进行故障恢复。深入理解其事务处理机制对开发者掌握分布式数据库核心技术至关重要。随着开源社区的发展,更多优化方案将涌现,助力构建更强大的分布式数据库系统。
218 6
|
4月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之如何基于Docker进行PolarDB-X单机模拟部署
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之如何基于Docker进行PolarDB-X单机模拟部署
|
4月前
|
Oracle 关系型数据库 分布式数据库
PolarDB产品使用问题之使用pxd安装PolarDB-X出现报错,该怎么办
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
Kubernetes 关系型数据库 分布式数据库
PolarDB产品使用问题之PolarDB-X的架构形态有什么区别
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之原PolarDB-X集群无法连接且Docker容器已经被删除,如何恢复数据
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
运维 关系型数据库 MySQL
PolarDB产品使用问题之PolarDB MySQL版和PolarDB-X的区别是什么
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之将RDS切换到PolarDB-X 2.0时,代码层的SQL该如何改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之如何查看并进入您的PolarDB-X 2.0集群
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。