我需要FO如下:
- 检查
Public
或guest
授予的对象(数据库角色和服务器角色)的任何许可 - 检查是否有任何用户授予的对象,而不是角色的权限。
- 检查用户是否具有
with grant
权限的对象 - 检查谁有权访问的扩展存储过程(这是我从获得
select name from sysobjects where xtype='X'
)
我认为他们都是相互关联的(但不知道怎么做)。
可以在此的任何一个建议?
还是直接给我有用的表格?
任何帮助将是非常赞赏。
我需要FO如下:
Public
或guest
授予的对象(数据库角色和服务器角色)的任何许可 with grant
权限的对象 select name from sysobjects where xtype='X'
) 我认为他们都是相互关联的(但不知道怎么做)。
可以在此的任何一个建议?
还是直接给我有用的表格?
任何帮助将是非常赞赏。
下面是从SQL Server Central.com良好的PROC为#3
http://www.sqlservercentral.com/scripts/Permissions/64309/
我想你可以修改它#4
像这样:
Create View vwObjectPermissions AS
select schema_name(o.schema_id) as [Schema_Name]
, o.name as [object_name]
, u.name as [principal_name]
, u.type_desc as [principal_type]
, r.minor_id, r.permission_name, r.state_desc
, o.schema_id, o.principal_id as [alt_owner], o.type_desc
from sys.database_permissions r
Left Join sys.database_Principals u
ON r.grantee_principal_id = u.principal_id
Left Join sys.all_objects o
ON o.object_id = r.major_id
Where class_desc NOT IN ('database')
GO
--1. Check if Public or guest is granted any permission on an object (database role and server role)
Select * from vwObjectPermissions
Where principal_name IN ('Public','Guest')
--2. Check if any user is granted permissions on an object rather than roles.
Select * from vwObjectPermissions
Where principal_type NOT LIKE '%ROLE%'
--3. Check if a user has "with grant" previliges on an object
Select * from vwObjectPermissions
Where state_desc = 'WITH GRANT' --check the spelling on this one
--4. Check who has access to extended stored procedures (which I get from select name from sysobjects where xtype='X')
Select * from vwObjectPermissions
Where type_desc LIKE '%X%Proc%'
GO
drop view vwObjectPermissions;
在MSSQL 2005/2008 - 使用SELECT CURRENT_USER你可以得到当前用户名 - 使用则sp_helpuser你可以得到当前用户角色 - 使用sys.obecjts,sys.database_principals和你的sys.database_permissions猫得到用户privilegies。
假设你至少有2005年的SQL ...
相关的元数据存储在的sys.database_permissions数据库的安全对象,并在sys.server_permissions服务器级别的安全对象。 你得到的数据库主体(用户和角色)从列表sys.database_principals ,从服务器主体(登录的服务器角色) sys.server_principals 。
这将让你明确的权限列表,但你需要考虑也隐含权限,未申报。 某些群体有隐式权限。 更为复杂的是进一步还必须处理Windows组成员,不属于任何SQL视图中声明,但在做访问检查时,会考虑。 Finaly中,访问规则是相当复杂的:一个主体可以有权限通过明晰的GRANT,通过会员向被授予权限的组,但任何DENY胜过所有的赠款和必须被考虑到,除了可保安全主控权胜过任何DENY。 蛋糕上的糖衣是系统管理员的会员服务,胜过所有的权限规则:系统管理员定义了所有权限。
您可以通过冒充校长核实的任何安全对象大多数校长任何特权EXECUTE AS和检查的输出fn_my_permissions所需的安全对象。