資料庫許可權檢查

2022-02-16 06:09:07 字數 3283 閱讀 7018

本篇文章僅用於檢查主體所擁有的許可權。我們可以按照 例項->資料庫->資料庫物件 逐一檢查。

--

例項級別

select

*from sys.server_principals --

伺服器主體

select

*from sys.server_role_members --

伺服器角色成員

select

*from sys.server_permissions --

許可權分配

--資料庫級別

select

*from sys.database_principals --

資料庫主體

select

*from sys.database_role_members --

資料庫角色成員

select

*from sys.database_permissions --

許可權分配

綜合上面各系統檢視

/*

************檢查許可權步驟************

*/--

step1 伺服器角色中的登入名

select srvrole =

g.name

,membername

=u.name

,membersid

=u.sid

from

sys.server_principals u

,sys.server_principals g

,sys.server_role_members m

where g.principal_id =

m.role_principal_id

and u.principal_id =

m.member_principal_id

and u.name not

in(select name from master.sys.sql_logins where is_disabled=1)

order

by1,2

--step2 資料庫角色中的使用者

select dbrole =

g.name

,membername

=u.name

,membersid

=u.sid

from

sys.database_principals u

,sys.database_principals g

,sys.database_role_members m

where g.principal_id =

m.role_principal_id

and u.principal_id =

m.member_principal_id

order

by1,2

--step3 伺服器安全主體許可權

select

spc.name toobject

,spc.type_desc

,spm.class_desc

,spm.permission_name

,spm.state_desc

,spc1.name onobject

from

sys.server_permissions spm

inner

join

sys.server_principals spc

on spm.grantee_principal_id =

spc.principal_id

left

join

sys.server_principals spc1

on spm.major_id =

spc1.principal_id

where spc.principal_id>

265--

排除部分登入名

--step4 資料庫安全主體許可權

select

dpc.name granteename

,object_name(dpm.major_id ,db_id()) as

objectname

,col_name(dpm.major_id ,dpm.minor_id) as

columnname

,dpm.class_desc

,dpm.permission_name

,dpm.state_desc

from

sys.database_permissions (nolock) dpm

inner

join

sys.database_principals (nolock) dpc

on dpm.grantee_principal_id =

dpc.principal_id

where dpm.grantee_principal_id >=5--

排除public、dbo、guest、information_schema、sys

--and dpc.type='s' --r角色、s使用者

order

bydpc.type,dpc.name,objectname

--step5 檢視角色(使用者)被賦予的許可權(資料庫下)

exec sp_helprotect @username='

dbamonitor_etl_v1'--

username|dbrolename

exec sp_helprotect @name='

info_cpu_uselog'--

tablename

我們可以針對哪些permission_name進行grant/revoke/deny

--

羅列所有內建permissions

select

*from sys.fn_builtin_permissions(default

)order

byclass_desc,permission_name;

--羅列能在object上設定的permissions

select

*from sys.fn_builtin_permissions('

object')

order

by class_desc,permission_name;

上面羅列的permission_name,都可以在例項、資料庫、資料庫物件右擊屬性的許可權或安全物件頁找到。

資料庫許可權

物件許可權 select 對錶,同義詞,檢視資料查詢許可權 update 對錶,同義詞,檢視資料修改許可權 delete 對錶,檢視資料刪除許可權 insert 對錶,檢視資料插入許可權 execute 執行儲存過程和函式許可權 recevie 從對列中檢索訊息的許可權 view defintion...

資料庫許可權

ora 01031 許可權不足?建立使用者後,我們需要給使用者分配角色,connect角色是必需的否則,使用者都無法登陸了,其次有個地方需要注意,不要以為你給了使用者dba角色許可權就可以 為所欲為 了。雖然分配了許可權,如果後面你不給使用者分配查詢許可權,你很可能會出現下面這種情況,其實原因的想很...

資料庫角色許可權

use database goexec sp addlogin name 新增登入 exec sp grantdbaccess n name exec sp addrolemember n db owner n name 新增db owner許可權 go 刪除測試使用者 exec sp revoke...