DDL触发器抓取赋权操作

近期在对接中,业务(数据挖掘同事)需要将部分账号控制到表级别,只允许部分账号访问指定的表.

而这些人员是不确定的,并且变动将较为频繁.

与对接同事沟通后采用如下方案实现:

给此同事开通此数据库的db_securityadmin角色账号,此账号可以在库级别范围内给其他用户赋予表级别权限.

新建一个数据库,并在其中新增一张记录相应操作的日志表.

赋予此账户写入log表操作(grant insert)其余权限无

新建库级别的DDL触发器,通过此触发器获取相应的权限操作变动记录(grant,deny,revoke)

详细步骤及SQL代码如下:

Create Database [TriggerLog];
GO
USE [TriggerLog];
GO
CREATE TABLE [dbo].[Authority_log](
    [id] [bigint] IDENTITY(1,1) NOT NULL,
    [PostTime] [datetime] NOT NULL DEFAULT (getdate()),
    [DB_User] [nvarchar](200) NOT NULL DEFAULT (‘‘),
    [DBNAME] [nvarchar](50) NOT NULL DEFAULT (‘‘),
    [EventType] [nvarchar](100) NOT NULL DEFAULT (‘‘),
    [TSQLCommand] [nvarchar](max) NOT NULL DEFAULT (‘‘),
 CONSTRAINT [PK_Authority_log] PRIMARY KEY CLUSTERED ([id] ASC)
) ON [PRIMARY]
GO

建库&建表

--赋予账号记录日志权限***必要,否则触发器无法正常运行,赋予权限操作也无法执行***

USE [TriggerLog]
GO
CREATE USER [test] FOR LOGIN [test]            --新建登陆账号在日志库中对应的用户
GO
GRANT INSERT ON [dbo].[Authority_log] TO [test]    --赋予用户插入日志表数据的权限
GO

赋予账号记录日志权限

--在所需开通赋权的库上新建DDL触发器

USE [testdb]        --如有多个库,每个库上都部署一个即可
GO

IF EXISTS(SELECT * FROM sys.triggers WHERE name = N‘Tr_Train_Authority_Monitor‘ AND parent_class_desc = N‘DATABASE ‘)
    DROP TRIGGER Tr_Train_Authority_Monitor ON DATABASE
GO

CREATE TRIGGER Tr_Train_Authority_Monitor ON DATABASE
    FOR GRANT_DATABASE,DENY_DATABASE,REVOKE_DATABASE
AS
   DECLARE @data XML
    SET @data = EVENTDATA()
    INSERT TriggerLog.dbo.[Authority_log] (PostTime, DB_User,DBNAME, EventType, TSQLCommand) VALUES
       (GETDATE(), CONVERT(nvarchar(100), CURRENT_USER), DB_NAME(),
       @data.value(‘(/EVENT_INSTANCE/EventType)[1]‘, ‘nvarchar(100)‘),
       @data.value(‘(/EVENT_INSTANCE/TSQLCommand)[1]‘, ‘nvarchar(2000)‘) ) ;
GO

新建DDL触发器

--在所需开通赋权的库上新建登陆和赋予db_securityadmin角色

USE [testdb]        --如有多个库,每个库上都部署一个即可
GO

CREATE USER [test] FOR LOGIN [test]
GO

ALTER ROLE [db_securityadmin] ADD MEMBER [test]
GO

新建登陆和赋予db_securityadmin角色

至此,相关权限开通和监控已经部署完毕.测试结果:

时间: 2024-10-14 07:49:42

DDL触发器抓取赋权操作的相关文章

Python 抓取网页tag操作

1. 获取操作tag 获取操作tag的接种方式: soup.find_all(name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs),返回符合条件的所有标签,查找不到则返回[],可以传递标签名,标签属性,关键字参数,函数,True等 soup.find(name=None, attrs={}, recursive=True, text=None, **kwargs),返回第一个符合条件的标签,查找不到则返回Non

MySql数据库4【命令行赋权操作】

MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利. grant select on testdb.* to [email protected]'%' grant insert on testdb.* to [email protected]'%' grant update on testdb.* to [email protected]'%' grant delete o

多表和视图联合查询,实现MVM扫描任务详细SOC Case----去重,联合,stuff,触发器赋权

SELECT distinct([faultline].[MVMLive].[vwScan].[JobID])      ,[faultline].[dbo].[Users].Name      ,[faultline].[MVMLive].[vwScan].[ConfigurationName]      ,[faultline].[MVMLive].[vwScan].[StartTime]      ,[faultline].[MVMLive].[vwScan].[EndTime]    

用Python进行网页抓取

引言 从网页中提取信息的需求日益剧增,其重要性也越来越明显.每隔几周,我自己就想要到网页上提取一些信息.比如上周我们考虑建立一个有关各种数据科学在线课程的欢迎程度和意见的索引.我们不仅需要找出新的课程,还要抓取对课程的评论,对它们进行总结后建立一些衡量指标.这是一个问题或产品,其功效更多地取决于网页抓取和信息提取(数据集)的技术,而非以往我们使用的数据汇总技术. 网页信息提取的方式 从网页中提取信息有一些方法.使用API可能被认为是从网站提取信息的最佳方法.几乎所有的大型网站,像Twitter.

12C 用户管理与赋权

1.1  Common user公共用户/通用用户 可以管理CDB,如果有权限也可以操作PDB. 公共用户可以在PDB数据库之间进行赋权操作,可以开关PDB(有权限),可以对整个CDB进行恢复操作. 公共用户可以在不同的PDB数据库中有不同的权限. 注意:如果先插入一个PDB大CDB中,如果有用户名相同的公共用户,会进行合并,密码是新插入的用户的密码,但是这个用户锁住的. 1.2  Local user本地用户 和公共用户不同之处: 1.本地用户不能创建公共用户,但是可以创建和修改本地用户权限或

「实例操作」抓取耐克中国官网数据转淘宝数据包-1 获取商品链接

最近接了个单子,要抓耐克中国的数据,把里面的商品转化成淘宝数据包,可以直接上传宝贝 客户提出了3个要求: 1:批量下载全网站商品: 2:定期更新网站新品: 3:批量更新淘宝库存,检查网站数据 这边先确定思路 第一是要抓取这些商品的列表, 第二是抓取单品的信息, 第三是把信息按照淘宝数据包格式输出. 这样就解决了第一个要求, 第二个邀请是抓取新品,这个要求可以这样理解,定期抓取所以链接,并保存下来,如果有的新的链接,那就是新品, 第三个要求更新库存,这个要有淘宝接口,我朋友那边有,借用下即可 ==

网页抓取信息(php正则表达式、php操作excel)

1.问题描述 实现对固定网页上自己需要的信息抓取,以表格形式存储.我是拿wustoj上的一个排行榜来练习的,地址:wustoj 2.思路 网页自己就简单学习了一下php,刚好用它来做点事情吧,我的想法是这样的: (1)查看网页源代码并保存在文件中. (2)根据需要的信息写出正则表达式,读文件,根据正则表达式来提取需要的信息.写正则表达式的时候最好分组,这样提取起来就方便了很多. (3)对excel操作,将提取的信息以excel的形式输出. 比较好的开源php处理excel类链接:点击打开链接 3

Atitit.web的自动化操作与信息抓取 attilax总结

Atitit.web的自动化操作与信息抓取 attilax总结 1. Web操作自动化工具,可以简单的划分为2大派系: 1.录制回放 2.手工编写0 U' z; D! s2 d/ Q! ^1 2. 常用的软件1 2.1. swt (ie com)  ,nativeswing2 2.2. 基于 selenium2 2.3. Imacro for firefox插件2 2.4. Zenno Poster2 2.5. Ubot在Zenno Poster出来以前应该是最火爆的Web自动化工具(BHW最常

网页抓取信息(php正則表達式、php操作excel)

1.问题描写叙述 实现对固定网页上自己须要的信息抓取,以表格形式存储. 我是拿wustoj上的一个排行榜来练习的,地址:wustoj 2.思路 网页自己就简单学习了一下php,刚好用它来做点事情吧,我的想法是这种: (1)查看网页源码并保存在文件里. (2)依据须要的信息写出正則表達式.读文件,依据正則表達式来提取须要的信息.写正則表達式的时候最好分组,这样提取起来就方便了非常多. (3)对excel操作.将提取的信息以excel的形式输出. 比較好的开源php处理excel类链接:点击打开链接