微课程 | 第十五课《权限及黑白名单》

算法产
• 阅读 3570

https://v.youku.com/v_show/id...

上一期我们介绍了管理端,这一期我们来介绍一下权限和黑白名单。

功能简介

微课程 | 第十五课《权限及黑白名单》

权限是对表的 DML 权限控制,包括 insert、update、select、delete 这样的权限是否允许。黑名单是继承自 druid 的一个解析器功能,解析完 SQL 觉得不安全,可以在解析完这个层面就直接禁止掉这些不安全的操作。白名单是我指定某个用户和 IP 才有登录的许可,否则是不能登录的。

操作演示

我们通过实例来演示一下,这三个功能实际的工作效果是什么样的。

https://v.youku.com/v_show/id...

首先随机查询一张表,那么还是拿 tb_mod 这张表做演示。现在 select 是成功的,有三行数据。然后去设置一下 DML 权限。在 USER 项下面有这样一个配置项,默认是注释起来的。它包含了 insert、update、select、delete 这样一个权限。我们把这个注释解开,看会发生什么现象。注意:如果后端节点是大小写敏感,这里也要大小写敏感依赖于后端节点。

我们现在把 schema 级别的开关全部开启,不限制它的任何行为。但是我们把 td_mod 这个表级别变成了 1101,也就是第三项 select 权限给关掉了。配置后,我们通过 reload 热加载生效。成功以后,我们回到终端就可以看到 select 会报错。通过这种方式可以控制每张表执行权限的粒度。再把配置项删掉,删掉权限限制效果没有了。回到我的管理端口 reload 一下,然后再回到流量端口可以查了,顺便又展示了一下 reload 功能。

然后来看看黑名单。黑名单直接影响全局的行为。它配置项非常多,不像刚才的是个单表而且只有四项功能,黑名单可能有几十项。下面我们通过简单的 selectAllow 功能来展示一下。我们把白名单的功能先注释起来,只留黑名单。请大家注意,这个 SelelctAllow 的 select 是拼错的。我猜这是 druid 故意做的这个事情。因为一般情况下禁止 select 比较奇怪,所以你一旦有了这样的选项,就说明你真的知道自己在做什么。所以我猜他是故意把这里写错的。我们把功能打开 SelectAllow 改成 false,就是我不允许 select。再 reload 一下 config,回到流量端口 select 报错,说明这是一条不安全的 SQL ,在这里被用户拒绝了。这就是黑名单功能,目前是全局生效的,所以比较暴力。白名单的功能展示前,我先把黑名单配置删掉以后重新 reload 一遍。这样数据就可以查了,恢复到正常。我们去把白名单的注释去掉。这里面默认的白名单是允许 root 在本地登录,我们把它稍微改一下。我们把管理端用户放开,把其它的用户都关掉,这是白名单了。只有在这个列表上指定 IP 的指定用户才能去登陆。所以我们把它改成 man1,第二行我们就直接删掉了。我们把 IP 地址指成我们刚才在运行终端的机器,这样理论上我从 10.186.61.2 这台机器只有 man1 用户才能登录,其它用户都不能登录。我们还是通过 reload config 让命令生效。从终端退出以后重新登陆就会发现登录已经被我拒绝了,但管理端用户 man1 其实还是可以登录的。它粒度能精细到 IP + 用户这样一个级别,相对来说白名单的可用性更高一些。这就是白名单功能。今天就介绍到这里。

图文稿为了方便阅读,在不影响学习的情况下优化了一些口语化词汇,文稿与视频会尽量保持一致。
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这