数据安全之路:Databend 用户策略指南

 在 Databend 中,我们致力于保护用户的数据安全。除了身份认证之外,我们还提供了多种访问策略,包括网络策略(Network Policy)、密码策略(Password Policy)和数据脱敏策略(Masking Policy)。让我们来了解一下 Databend 中的用户类型以及这些安全策略的应用。

用户类型

Databend 中的用户主要分为两类:

  • 配置用户(Configured User)
  • 自建用户(Created User)

配置用户

配置用户是在 Databend 配置文件(databend-query.toml)中定义的用户,通常具有管理员权限。这类用户适合用作管理员账号。

[[query.users]]
name = "default"
auth_type = "no_password"

自建用户

Created User 是通过 SQL 的 CREATE USER 命令创建的用户,对数据库对象的访问受到权限模型的限制。

CREATE [OR REPLACE] USER [IF NOT EXISTS] '<username>' IDENTIFIED [WITH <auth_type>] [BY <password>] [WITH <user_option>, ...]

用户认证

在用户认证阶段,Databend 会根据用户名获取相应的用户信息。

对于配置用户,认证阶段会授予其所有权限,并将默认角色设置为 account_admin。

对于自建用户,Databend 会从元数据中获取相应的用户信息。

Credential 分为两类:

JWT(JSON Web Token)

Password

Password Credential 支持 Sha256 和 DoubleSha1 两种加密方式,默认使用 Sha256。

注意:在 JWT Credential 下,如果用户不存在,Databend 会自动创建该用户。

网络策略

网络策略是一种配置机制,用于控制用户在系统内的网络访问。它允许用户定义一组规则,以控制特定用户允许和阻止的 IP 地址范围,从而有效地控制网络级别的访问权限。

如何使用网络策略

可以使用 ALTER USER 命令将网络策略与特定用户关联起来。一个网络策略可以与多个用户关联,只要它们符合相同的策略标准。有关在 Databend 中管理网络策略的介绍,请参阅网络策略文档。

以下示例展示了如何创建一个网络策略,并将其与用户关联以控制网络访问。

-- 创建网络策略
CREATE NETWORK POLICY sample_policyALLOWED_IP_LIST=('192.168.1.0/24')BLOCKED_IP_LIST=('192.168.1.99')COMMENT='Sample';-- 将网络策略与用户关联
ALTER USER sample_user WITH SET NETWORK POLICY='sample_policy';

以下示例演示了创建一个指定允许和阻止的IP地址的网络策略,并将此策略与用户关联起来以控制网络访问。网络策略允许所有从192.168.1.0到192.168.1.255的IP地址,仅拒绝 192.168.1.99。

-- Create a network policy
CREATE NETWORK POLICY sample_policyALLOWED_IP_LIST=('192.168.1.0/24')BLOCKED_IP_LIST=('192.168.1.99')COMMENT='Sample';SHOW NETWORK POLICIES;Name         |Allowed Ip List          |Blocked Ip List|Comment    |
-------------+-------------------------+---------------+-----------+
sample_policy|192.168.1.0/24           |192.168.1.99   |Sample     |-- Create a user
CREATE USER sample_user IDENTIFIED BY 'databend';-- Associate the network policy with the user
ALTER USER sample_user WITH SET NETWORK POLICY='sample_policy';

密码策略

密码策略可以增强系统安全性并使账户管理更加顺畅。该策略定义了创建或更改密码时的规则,包括长度、字符类型、年龄限制、重试限制、锁定时间和密码历史等方面。有关在 Databend 中管理密码策略的介绍,请参阅密码策略文档。

此示例建立以下 Password Policy 并为应用到数据库用户中:

  • DBA: 用于管理员用户,严格自定义每个 Password Policy 属性。
  • ReadOnlyUser: 用于普通用户,使用所有属性的默认值。
-- 使用自定义属性值创建 'DBA' Password Policy 
CREATE PASSWORD POLICY DBAPASSWORD_MIN_LENGTH = 12PASSWORD_MAX_LENGTH = 18PASSWORD_MIN_UPPER_CASE_CHARS = 2PASSWORD_MIN_LOWER_CASE_CHARS = 2PASSWORD_MIN_NUMERIC_CHARS = 2PASSWORD_MIN_SPECIAL_CHARS = 1PASSWORD_MIN_AGE_DAYS = 1PASSWORD_MAX_AGE_DAYS = 30PASSWORD_MAX_RETRIES = 3PASSWORD_LOCKOUT_TIME_MINS = 30PASSWORD_HISTORY = 5;-- 使用所有属性的默认值创建 'ReadOnlyUser'  Password Policy 
CREATE PASSWORD POLICY ReadOnlyUser;SHOW PASSWORD POLICIES;┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│     name     │ comment │                                                                                                 options                                                                                                 │
├──────────────┼─────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ DBA          │         │ MIN_LENGTH=12, MAX_LENGTH=18, MIN_UPPER_CASE_CHARS=2, MIN_LOWER_CASE_CHARS=2, MIN_NUMERIC_CHARS=2, MIN_SPECIAL_CHARS=1, MIN_AGE_DAYS=1, MAX_AGE_DAYS=30, MAX_RETRIES=3, LOCKOUT_TIME_MINS=30, HISTORY=5 │
│ ReadOnlyUser │         │ MIN_LENGTH=8, MAX_LENGTH=256, MIN_UPPER_CASE_CHARS=1, MIN_LOWER_CASE_CHARS=1, MIN_NUMERIC_CHARS=1, MIN_SPECIAL_CHARS=0, MIN_AGE_DAYS=0, MAX_AGE_DAYS=90, MAX_RETRIES=5, LOCKOUT_TIME_MINS=15, HISTORY=0 │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

假设已经有一个名为 'eric' 的 DBA 用户,使用 ALTER USER 命令将 DBA Password Policy 应用于该用户:

-- 将 'DBA' Password Policy 应用于用户 'eric'
ALTER USER eric WITH SET PASSWORD POLICY = 'DBA';

创建一个名为 'frank' 的新用户,并使用 CREATE USER 命令应用 'ReadOnlyUser' Password Policy :

-- 注意:为用户 'frank' 设置的密码必须遵守关联的 'ReadOnlyUser' Password Policy 定义的约束。
CREATE USER frank IDENTIFIED BY 'Abc12345'WITH SET PASSWORD POLICY = 'ReadOnlyUser';

数据脱敏策略

数据脱敏策略用于控制对敏感数据的显示或访问规则和设置,从而保护数据的机密性。通过定义数据脱敏策略,用户可以在保护敏感数据的同时允许授权用户与数据进行交互。

考虑以下场景,我们希望只向经理展示表中的电子邮件地址:

idemail
2eric@example.com
1sue@example.com

对于非经理用户,电子邮件地址将被数据脱敏显示:

|id|email    |
|--+---------+
| 2|*********|
| 1|*********|

如何使用数据脱敏策略

在创建数据脱敏策略之前,请确保已正确定义或规划了角色及其相应的访问权限,因为策略的实施依赖于这些角色以确保数据数据脱敏的安全有效性。要管理 Databend 的用户和角色,请参阅用户与角色文档。

数据脱敏策略应用于列。因此,要为特定列应用数据脱敏,用户必须首先创建一个数据脱敏策略,然后使用 ALTER TABLE COLUMN 将该策略与预期列关联起来。建立关联后,数据脱敏策略将更贴合重要的数据隐私环境。

以下示例演示了如何通过角色选择性地显示或数据脱敏敏感数据的数据脱敏策略设置过程:

注意:数据脱敏策略是企业版功能。 如果希望体验该功能,需要获取许可证,请联系 Databend 支持团队。

-- 创建一个表并插入示例数据
CREATE TABLE user_info (id INT,email STRING
);INSERT INTO user_info (id, email) VALUES (1, 'sue@example.com');
INSERT INTO user_info (id, email) VALUES (2, 'eric@example.com');-- 创建一个角色
CREATE ROLE 'MANAGERS';
GRANT ALL ON *.* TO ROLE 'MANAGERS';-- 创建一个用户并将角色授予该用户
CREATE USER manager_user IDENTIFIED BY 'databend';
GRANT ROLE 'MANAGERS' TO 'manager_user';-- 创建一个数据脱敏策略
CREATE MASKING POLICY email_mask
AS(val string)RETURNS string ->CASEWHEN current_role() IN ('MANAGERS') THENvalELSE'*********'ENDCOMMENT = 'hide_email';-- 将数据脱敏策略与'email'列关联
ALTER TABLE user_info MODIFY COLUMN email SET MASKING POLICY email_mask;-- 以Root用户查询
SELECT * FROM user_info;id|email    |
--+---------+2|*********|1|*********|

结语

通过合理配置网络策略、密码策略和数据脱敏策略,Databend 提供了强大的数据安全保护机制,确保用户的数据得到妥善保护,并提高了系统的安全性和可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/774070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript进阶5之垃圾回收(计算机组成、解释与编译、JavaScript引擎、垃圾回收、内存管理)、运行机制(浏览器进程分类、浏览器事件循环)

垃圾回收&运行机制 垃圾回收计算机组成解释与编译JavaScript引擎V8引擎 垃圾回收引用计数法标记清除&#xff08;mark-sweep&#xff09;算法 内存管理新生代 运行机制浏览器进程分类&#xff1a;浏览器事件循环宏任务微任务整体流程浏览器事件循环案例一案例二 垃圾回收 …

Unity学习日记 11.单词识别游戏

目录 1.返回鼠标单击对象的名字 2.鼠标拖动移动对象 3.实现鼠标跟随 4.场景准备工作 5.判断图片与框配对 6.根据配对结果放置图片 1.返回鼠标单击对象的名字 步骤&#xff1a; 创建一个ShowName的脚本&#xff0c;并挂载在摄像机上 RaycastHit2D hitInfo;void Update(){…

CANalyzer使用_04 使用CAN报文发送数据

本文手把手介绍使用CAN来发送数据。分为创建工程&#xff0c;创建CAN报文&#xff0c;运行效果&#xff0c;参考文献。 1 创建工程 双击“CANalyzer->单击“I accept”->等一会等软件打开后&#xff0c;单击“File”->单击"New"->双击"CAN 500kBa…

vue3+ts+element home页面侧边栏+头部组件+路由组件组合页面教程

文章目录 效果展示template代码script代码样式代码 效果展示 template代码 <template><el-container class"home"><el-aside class"flex" :style"{ width: asideDisplay ? 70px : 290px }"><div class"aside-left&q…

json文件美化工具(json tools)

自动整理json文件&#xff0c;使用&#xff1a;ctrlaltM

【数学】第十三届蓝桥杯省赛C++ A组/研究生组 Python A组/研究生组《数的拆分》(C++)

【题目描述】 给定 T 个正整数 &#xff0c;分别问每个 能否表示为 的形式&#xff0c;其中 , 为正整数&#xff0c;, 为大于等于 2 的正整数。 【输入格式】 输入第一行包含一个整数 T 表示询问次数。 接下来 T 行&#xff0c;每行包含一个正整数 。 【输出格式】 对于…

浅析JS原型链

目录 实例对象原型对象对象原型短暂总结一下constructor原型链 何为原型链呢&#xff1f; 就是实例对象和原型对象之间的链接,每一个对象都有原型,原型本身又是对象,原型又有原型,以此类推形成一个链式结构.称为原型链。 这里又扯到了另外两个概念了。 实例对象>>&g…

PyTorch 教程-快速上手指南

文章目录 PyTorch Quickstart1.处理数据2.创建模型3.优化模型参数4.保存模型5.加载模型 PyTorch 基础入门1.Tensors1.1初始化张量1.2张量的属性1.3张量运算1.3.1张量的索引和切片1.3.2张量的连接1.3.3算术运算1.3.4单元素张量转变为Python数值 1.4Tensor与NumPy的桥接1.4.1Tens…

腾讯云轻量4核8G12M服务器配置4C8G12M详解

4核8G是云服务器的参数&#xff0c;代表云服务器的硬件配置和网络带宽&#xff0c;4核代表CPU、8G是指内存、12M代表带宽值为12Mbps&#xff0c;腾讯云百科txybk.com以腾讯云轻量应用服务器4核8G12M带宽配置为例&#xff0c;来详细介绍下服务器参数&#xff1a; 4c8g是什么意思…

Unity学习笔记 9.2D射线

下载源码 UnityPackage 1.Ray2D 让小球向右发射射线&#xff1a; Ray2D ray;void Start() {// Ray2D(起点&#xff0c;终点)ray new Ray2D(this.transform.position, Vector2.right);// Debug.DrawLine(起点&#xff0c;终点&#xff0c;颜色&#xff0c;显示时间)Debug.DrawL…

嵌入式开发——基础电路知识

1. 电路知识 1.1. 驱动能力 IC是数字逻辑芯片&#xff0c;其输出的是逻辑电平。逻辑电平0表示输出电压低于阈值电压&#xff0c;逻辑1表示输出电压高于阈值电压。负载则是被驱动的电路或元件&#xff0c;负载大小则指负载的电阻大小。 驱动能力主要表现在几个方面&#xff1…

MySQL使用教程:数据库、表操作

目录 1. 免密码登录MySQL1.1 免密码配置1.2 登录选项介绍 2. MySQL基础配置&#xff1a;my.cnf3. 开机自启动设置&#xff08;可选设置&#xff09;4. 查看存储引擎5. 查看系统的编码规则和校验规则6. 数据库的操作6.1 查看数据库6.2 创建数据库 create database6.3 删除数据库…

【[NOIP1999 普及组] Cantor 表】

题目描述 现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的&#xff1a; 我们以 Z 字形给上表的每一项编号。第一项是 1 / 1 1/1 1/1&#xff0c;然后是 1 / 2 1/2 1/2&#xff0c; 2 / 1 2/1 2/1&#xff0c; 3 / 1 3/1…

腾讯云2核4G服务器最大能承载多少人访问?

腾讯云轻量应用服务器2核4G5M配置性能测评&#xff0c;腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;并发数10&#xff0c;支持每天5000IP人数访问&#xff0c;腾讯云百科txybk.com整理2核4G服务器支持多少人同时在线&#xff1f;并发数测试、CPU性能、内存性能、…

python入门题:输入输出练习

以下是Python基础语法的练习&#xff0c;项目要求和代码如下&#xff1a; """ 例3&#xff1a;小精灵&#xff1a;你好&#xff0c;欢迎古灵阁&#xff0c;请问您需要帮助吗&#xff1f;需要or不需要&#xff1f; 你&#xff1a;需要 小精灵&#xff1a;请问你需…

图片照片怎么做成二维码?图片快速生成二维码的简单教学

随着互联网的快速发展&#xff0c;二维码作为现在很常用的一种内容载体方式&#xff0c;可以应用的场景越来越多&#xff0c;不管是用于企业宣传、产品介绍、问卷调查等类型的内容&#xff0c;都能够使用二维码的形式展示。二维码能够提供更加快捷的有效的推广效果&#xff0c;…

高阶数据结构 <红黑树>

本文已收录至《数据结构(C/C语言)》专栏&#xff01; 作者&#xff1a;ARMCSKGT 目录 前言正文红黑树简介红黑树整体结构红黑树节点的定义红黑树主体类设计红黑树的插入函数情况一&#xff1a;变色情况二&#xff1a;变色旋转单旋情况双旋情况 完整插入代码 关于红黑树红黑树检…

系统安装(kuntaiR522 kvm安装)

(1)通过PC1 web连接Server2,给Server2安装rocky-arm64 CLI系统(语言为英文)。 首先是访问server2的IPMI口,访问192.168.2.10, 用户为Admin,密码为Admin@123 登录进去 以HTML5 集成控制台方式打开 插入U盘修改启动项安装系统

Floyd算法:浅显外表下的动态规划内核

很久没遇到Floyd算法的题目了&#xff0c;2642. 设计可以求最短路径的图类刚好是一个典型。在实现核心算法之余&#xff0c;顺便整理一下算法的内核。 Floyd-Warshall’s Algorithm Floyd-Warshall算法&#xff0c;简称Floyd算法&#xff0c;是“有向图非负权图的多源最短路”…

Selenium自动化测试面试题全家桶

1、什么是自动化测试、自动化测试的优势是什么&#xff1f; 通过工具或脚本代替手工测试执行过程的测试都叫自动化测试。 自动化测试的优势&#xff1a; 1、减少回归测试成本 2、减少兼容性测试成本 3、提高测试反馈速度 4、提高测试覆盖率 5、让测试工程师做更有意义的…