MSSQL Job 构建提升权限的途径(mssql利用job提权)

2023-04-21 13:47:40 权限 构建 途径

MSSQL Job 构建提升权限的途径

MSSQL 作业是Microsoft主流的增强数据库性能的一项技术,它可以有效支撑大型数据库平台上的定期和非定期复杂操作。合理安排MSSQL 作业,可以降低整个数据库网络的负载,提升数据库的性能。

鉴于MSSQL 作业是完成数据库任务的基础,其任务完成所需的权限至关重要。如果权限不足,将会导致任务执行的限制,或者完全无法运行。既要提升MSSQL 作业的权限,又要保证数据库安全性,如何实现?

其实,MSSQL 作业权限提升可以采取以下两种方法实现:

1. 使用Windows账号为MSSQL 作业建立访问权限。首先,在Windows系统里创建一个账号,并为此账号设置密码;然后,在MSSQL里建立该账号,并加以授权,赋予该账号MSSQL 作业任务权限;最后,设置MSSQL 作业以此Windows账号为其登录账号,完成权限的提升。

例如,当需要为作业修改服务器配置时,就可以用以下代码为Windows账号建立访问权限:

sp_grantlogin 'My Windows Domain\My Windows Login Name';
GO
grant execute on sp_configure to [My Windows Domain\My Windows Login Name];
GO
exec sp_configure 'Show Advanced Options',1
GO
RECONFIGURE
GO
exec sp_configure 'max degree of parallelism',2
GO
RECONFIGURE
GO
SP_MULTIPLELOGINS SET
GO

2. 使用Excecut,为MSSQL 作业创建一个Proxy用户方案。这种方法可以实现更为有效的权限管理,而不是完全按照Windows账号来控制MSSQL 作业权限。利用Proxy平台,可以简单地进行MSSQL 作业权限提升,而不用登录帐号来实现,可以很大程度的降低数据库的安全风险。

所以,利用Excecut创建Proxy方案,代码可以是这样:

create proxy p_proxy 
with login = 'My Windows Domain\My Windows Login Name',
external_name = 'My Windows Domain\My Windows Login Name',
credential = Cred_Name

create login My Proxy
with password = 'testProxy'
, default_database = master
, check_policy = off
exec sp_grantlogin 'My Proxy'
exec sp_grantproxy 'My Proxy','p_proxy'
use AdventureWorksDW2012
exec sp_grantdbaccess 'My Proxy'
exec sp_addrolemember 'db_datareader','My Proxy'
exec sp_addrolemember 'db_datawriter','My Proxy'

综上所述,MSSQL 作业提升权限途径,可以采用Windows账号登录权限方案和Excecut,来创建Proxy用户方案,有效实现MSSQL作业任务的权限提升,而又不影响数据库的安全。

相关文章