专栏首页数据库安全美创运维日记|SQL server 那点事
原创

美创运维日记|SQL server 那点事

XXX,你好,我想给一个用户某张表的只读权限,你有空看看吗?

于是,我就远程连上去,本来几分钟能搞定的事情,半个小时、一个小时过去了,笑容逐渐凝固……

几经周折,终于找到问题所在,原来是public作怪,哈哈

今天,我们就模拟客户的实际环境,来和大家聊聊public如何作祟,以及我们平时应该如何正确对待public,请看下文。

一、环境描述

客户想给某个数据库某张表的只读权限,然后就新建用户-->映射数据库-->数据库下用户的安全对象选中表-->给选择权限。

步骤貌似没问题啊,可这个用户就是能更改、能插入,很头疼……

二、模拟操作

2.1本地环境新建用户并授权

--1、创建用户dsz_test(映射数据库为dsz)

--2、授予tb_Ts表的只读权限

--3、测试(用dsz_test登录)

--4、图形化界面显示

可以看到,我本地的 dsz_test  登录只可以看到tb_Ts 表,拒绝了其他读写等权限

2.2模拟客户环境新建并授权

--1、创建用户并授权

--2、测试(用dsz_test1登录)

--3、图形化界面显示

妈耶,dsz_test1登录后可以看到另外一张表,而且竟然可以update,玩我呢!!!

三、分析原因

3.1查看本地用户权限

3.2查看客户环境权限

貌似一毛一样,真的见鬼了吗?

我们再仔细分析,对于新建的用户,我们不是别的角色成员,也不是别的角色领袖……等等,角色?对啊,不是还有个public的东东存在吗???

3.3查看本地Public权限

3.4查看客户Public权限

嗷,是不是感觉到什么了,之所以dsz_test1能对dsz_1表肆意妄为,是因为public的锅啊。

四、Public

每个数据库的所有用户都是public角色,用户同样不能退出public角色成员。

默认拥有VIEW ANY DATABASE和CONNECT权限

可以通过REVOKE VIEW ANY DATABASE FROM PUBLIC回收public权限

五、总结

本次权限问题就是因为客户授予public指定表的更新选择权限,又因为所有用户都是public的角色,所以,只能回收掉public对该表的更新选择权限:

然后再用dsz_test1登录测试,结果令人满意。如下:

建议:SQL server的public权限很特殊,每个用户都会继承它所拥有的权限,所以不建议对其授予相应的权限,必要情况下,建议VIEW ANY DATABASE也回收。

美创科技拥有强大的运维中心数据库服务团队,其中Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师,并著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。

本文转自杭州美创科技有限公司(新运维新数据),如需二次转载,请咨询。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据库防火墙

    数据库防火墙仿佛是近几年来出现的一款新的安全设备,但事实上历史已经很长。2010年,Oracle公司在收购了Secerno公司,在2011年2月份正式发布了其数...

    数据安全
  • 静态脱敏典型应用场景分析——开发测试、数据共享、科学研究

    在数据流动、共享、交换成为趋势的今天,数据脱敏已经成为实现敏感数据保护的重要手段之一。数据脱敏产品也逐步被金融、政府、企业等行业客户广泛使用。

    数据安全
  • 动态脱敏典型应用场景分析——业务脱敏、运维脱敏、数据交换脱敏

    如前文《静态脱敏典型应用场景分析——开发测试、数据共享、科学研究》所说,当前数据脱敏产品主要包括静态脱敏、动态脱敏产品两类。由于两者使用场景不同,关键技术有所差...

    数据安全
  • 在UWP应用中读取系统证书信息

    在Windows里,我们可以通过certmgr.msc查看和管理系统证书,这个工具是Windows自带的。

    Edi Wang
  • ASP.NET Core 依赖注入基本用法

    ASP.NET Core从框架层对依赖注入提供支持。也就是说,如果你不了解依赖注入,将很难适应 ASP.NET Core的开发模式。本文将介绍依赖注入的基本概念...

    thz
  • MessagePack Java 0.6.X 可选字段

    https://www.cwiki.us/display/Serialization/QuickStart+For+MessagePack+Java+0.6.X

    HoneyMoose
  • 经典设计模式之策略模式【如何重构聚合支付平台,对接【支付宝,微信,银联支付】】 顶 原 荐

    策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。

    须臾之余
  • 经典设计模式之策略模式【如何重构聚合支付平台,对接【支付宝,微信,银联支付】】

    策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。

    须臾之余
  • 真实经历:一个Linux小白被文件权限绕晕,评论区让他root用户777

    如果你遇到了修复web服务器的文件权限问题,在网上搜索后,有大牛告诉你需要递归地chmod 777 你的web目录!

    程序员小助手
  • 编码最佳实践——依赖注入原则

    我们在这个系列的前四篇文章中分别介绍了SOLID原则中的前四个原则,今天来介绍最后一个原则——依赖注入原则。依赖注入(DI)是一个很简单的概念,实现起来也很简单...

    撸码那些事

扫码关注云+社区

领取腾讯云代金券