接上文:SQL Server目录视图教程:数据库和文件目录视图、SQL Server目录视图教程:对象目录视图 另一个重要的目录视图子分类就是安全视图,这类视图允许你查看关于数据库安全,服务器安全,加密以及审计等方面的信息。例如,你可以利用“sys.database_principals”视图来提取关于数据库中每个安全原则相关的信息。在下面的“SELECT”语句中,我使用这个视图来提取“AdventureWorks 2008 ”数据库中每项安全规则的类型和名称: USE AdventureWorks2008; GO SELECT type_desc AS……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
接上文:SQL Server目录视图教程:数据库和文件目录视图、SQL Server目录视图教程:对象目录视图
另一个重要的目录视图子分类就是安全视图,这类视图允许你查看关于数据库安全,服务器安全,加密以及审计等方面的信息。例如,你可以利用“sys.database_principals”视图来提取关于数据库中每个安全原则相关的信息。在下面的“SELECT”语句中,我使用这个视图来提取“AdventureWorks 2008 ”数据库中每项安全规则的类型和名称:
USE AdventureWorks2008; GO SELECT type_desc AS PrincipalType, name AS PrincipalName FROM sys.database_principals ORDER BY type_desc, name; |
如你所见,该语句非常简单。我只想提取类型和名称并按相应的结果排序,返回结果如下表所示:
PrincipalType | PrincipalName |
DATABASE_ROLE | db_accessadmin |
DATABASE_ROLE | db_backupoperator |
DATABASE_ROLE | db_datareader |
DATABASE_ROLE | db_datawriter |
DATABASE_ROLE | db_ddladmin |
DATABASE_ROLE | db_denydatareader |
DATABASE_ROLE | db_denydatawriter |
DATABASE_ROLE | db_owner |
DATABASE_ROLE | db_securityadmin |
DATABASE_ROLE | public |
SQL_USER | guest |
SQL_USER | INFORMATION_SCHEMA |
SQL_USER | sys |
WINDOWS_USER | dbo |
另一个与具体数据库有关的安全视图是“sys.database_permissions”视图。不说你也知道,该视图返回关于数据库权限的信息。例如,在下面的“SELECT”语句中,我利用“sys.database_permissions”视图来提取在“AdventureWorks 2008”数据库中赋予“SELECT”权限的数量统计:
USEAdventureWorks2008; GO SELECT class_desc AS ClassName, permission_name AS PermissionName, state_desc AS StateName, COUNT(*) AS NumberOfSelect FROM sys.database_permissions WHERE type = 'SL' AND state = 'G' GROUP BY class_desc, permission_name, state_desc; |
在该语句中,我按照“class,permission和state”对结果进行分组,这样就可以得到合计值。我利用“WHERE”从句来限制只查询权限类型“SELECT(SL)”和状态为“GRANT(G)”的数据。如下面结果所示,129个“SELECT”权限已经被授予到了“AdventureWorks 2008”数据库中:
ClassName | PermissionName | StateName | NumberOfSelect |
OBJECT_OR_COLUMN | SELECT | GRANT | 129 |
你还可以利用安全视图来提取服务器级别的信息。例如,在下面的例子中我利用“sys.server_principals ”视图来提SQL Server本地实例中的安全原则类型和名称:
SELECT type_desc AS PrincipalType, name AS PrincipalName FROM sys.server_principals WHERE type <> 'C' ORDER BY type_desc, name; |
请注意,在这个语句中,我使用了“WHERE”从句把类型为“C”的数据从结果中排除掉了。类型C表示认证映射登录,我不想把这类数据包含进来。下面的结果展示了“sys.server_principals”视图返回的信息:
PrincipalType | PrincipalName |
SERVER_ROLE | bulkadmin |
SERVER_ROLE | dbcreator |
SERVER_ROLE | diskadmin |
SERVER_ROLE | processadmin |
SERVER_ROLE | public |
SERVER_ROLE | securityadmin |
SERVER_ROLE | serveradmin |
SERVER_ROLE | setupadmin |
SERVER_ROLE | sysadmin |
SQL_LOGIN | ##MS_PolicyEventProcessingLogin## |
SQL_LOGIN | ##MS_PolicyTsqlExecutionLogin## |
SQL_LOGIN | sa |
WINDOWS_LOGIN | BOBE024Administrator |
WINDOWS_LOGIN | NT AUTHORITYLOCAL SERVICE |
WINDOWS_LOGIN | NT AUTHORITYSYSTEM |
你还可以通过“sys.server_permissions”视图查看服务器权限明细,请看下面的示例:
SELECT class_desc AS ClassName, permission_name AS PermissionName, state_desc AS StateName, COUNT(*) AS NumberOfGrant FROM sys.server_permissions WHERE type = 'CO' AND state = 'G' GROUP BY class_desc, permission_name, state_desc; |
在该语句中,我提取了已经赋予我本地SQL Server实例的“CONNECT”权限数量。正如你在前面的例子中看到的,我将按“class,permission类型和state”分组,这样就可以得出结果,请看下面的结果:
ClassName | PermissionName | StateName | NumberOfGrant |
ENDPOINT | CONNECT | GRANT | 4 |
除了我在这里展示的安全视图,SQL Server还支持大量其它视图。你可以在SQL Server联机丛书“系统视图(Transact-SQL)”中看到那些视图的清单。
翻译
相关推荐
-
不安全的Firebase数据库使关键数据面临风险
当开发人员无法对支持其移动应用程序的数据库或云实例执行身份验证时,这里会发生一种最简单且最具破坏性的安全事件。 […]
-
详解Azure SQL数据库行级安全
本文中,专家举例说明如何实现行级安全性——微软Azure SQL数据库新近推出的预览特性。
-
在Azure SQL数据库中引入行级安全性
行级安全性是Azure SQL数据库的一个新特性,它帮助微软数据库平台达到与Oracle和DB2的同等水平。
-
网络最常见的攻击方式竟然是SQL注入
NTT研究表明,尽管SQL注入(SQLi)型攻击记录详尽且为人熟知,但目前网络应用程序仍然是SQLi攻击的重灾区。