DB2許可權與授權

fjzcau發表於2015-03-28
--許可權相關的檢視
db2 "select substr(tabname,1,30) as tabname 
from syscat.tables
where tabschema='SYSCAT' and tabname like '%AUTH'
"

--檢視資料庫使用者
db2 " select char(authid,30) as authid, authidtype 
from sysibmadm.authorizationids
"

--檢視public的資料庫許可權
db2 "select substr(grantee,1,32) as grantee,granteetype,
bindaddauth,dbadmauth,connectauth,createtabauth,implschemaauth,loadauth,dataaccessauth
from syscat.dbauth
where grantee='PUBLIC'
"

--管理許可權,所有物件的的所有特權 
db2 " SELECT substr(AUTHID,1,20) as AUTHID,
   AUTHIDTYPE,
   PRIVILEGE,
   GRANTABLE,
   substr(OBJECTNAME,1,30) as OBJECTNAME,
   substr(OBJECTSCHEMA,1,30) as OBJECTSCHEMA,
   OBJECTTYPE
FROM SYSIBMADM.PRIVILEGES
where  authid = 'PUBLIC' order by 1,7,5,3
"

--特權privilege
db2 " SELECT substr(AUTHORITY,1,32) as Authority, D_USER, D_GROUP, D_PUBLIC, ROLE_USER, ROLE_GROUP, ROLE_PUBLIC, D_ROLE
FROM TABLE (SYSPROC.AUTH_LIST_AUTHORITIES_FOR_AUTHID ('DB2INST1', 'U') ) AS T ORDER BY AUTHORITY
"


db2 " select substr(grantee,1,32) as grantee,granteetype,substr(tbspace,1,20) as tbspace,useauth
from syscat.tbspaceauth
"

--回收特權
db2 "revoke use of tablespace userspace1 from public"
db2 "revoke createtab on database from public"
db2 "revoke implicit_schema on database from public"

--當前連線的使用者所擁有的管理許可權
db2 get authorizations


--windows syscat授權給誰 應檢視的檢視
db2 list tables for schema syscat | find /i "AUTH"

--linux  syscat授權給誰 應檢視的檢視
db2 list tables for schema syscat  | grep -i auth

db2 "select char(grantee,20) as grantee,char(tabname,20) as tabname,
controlauth,alterauth,deleteauth,insertauth,selectauth,updateauth 
from syscat.tabauth 
where tabname='EMPLOYEE'
"

--workload 許可權查詢 
db2 "select char(workloadname,30) from syscat.workloads"
db2 "select workloadid,char(workloadname,30),usageauth,char(grantee,30) from syscat.workloadauth"



-----------------------------------------------------------------------
資料庫許可權
connect
bindadd
createtab
create_not_fenced
implicit_schema  允許使用者在尚不存在的模式中建立物件
quiesce_connect  允許使用者連線處於quiesced狀態的資料庫
create_external_routine 允許使用者註冊外部例程

表空間特權
use  允許使用者在指定表空間中建立表

模式特權
createin 允許使用者在模式中建立物件
alterin
dropin

表和檢視特權
control 授予使用者在表和檢視上的所有特權,以及將這些特權(除了control)授予別人
alter   允許使用者在表中新增列,在表和列上新增或修改註釋,新增主鍵或唯一約束,以及建立或刪除表檢查約束
delete  允許使用者從表或檢視刪除行
index   允許使用者在表上建立索引
insert 
references 允許建立和刪除外來鍵
select   允許使用者從表或檢視中檢索行,在表上建立檢視,以及執行EXPORT實用程式
update

索引特權
control  允許使用者刪除索引

包特權
control 允許使用者重新繫結、刪除或執行包,以及將這些特權(除了CONTROL)授予別人
bind   允許使用者重新繫結現有的包
execute 允許使用者執行包
bindadd 新包繫結需要的許可權 

例程特權
execute  允許使用者呼叫例程,從例程建立函式(只應用於函式),以及在任何DDL語句中引用例程

序列特權
usage 允許使用者對序列使用nextval和prevval表示式
alter 允許使用者使用alter sequence語句修改序列屬性

db2 grant dbadm on database to user  user1
db2 grant dbadm on database to group db2grp1 
db2 grant load on database to user user1
db2 grant load on database to group grp1

--向使用者或組授予許可權和特權時,DB2允許授予不存在的賬號。如果以後建立了同名的賬號,則這個賬號就獲得了許可權和特權。

db2 grant insert on table t1 to user nxz

db2 grant select on table t1 to group grp1

db2 grant delete on table t1 to group grp1

with grant option 只能用於包、例程、模式、表、檢視和表空間的GRANT語句。

CONTROL特權只能由具有SYSADM或DBADM許可權的使用者執行。

--drop 表必須具有模式上的許可權 

db2 grant alterin,createin,dropin on schema s1 to group grp1 with grant option

db2 grant dropin on schema s1 to all 

db2 revoke alter on table t1 from user u1

db2 revoke all privileges on table t1  from u1


從組中撤銷特權不一定會從這個組的所有成員撤銷該特權,

db2 revoke all on table s1.t1 from group grp1

但是,test1使用者仍然擁有對這個表的特權(如select),因為test1是被直接授予這個特權的。


--nxz 執行以下命令,則nxz需要這個包的動態SQL的特權,執行動態SQL的每個SQL所需的特權,以及包上的EXECUTE特權。
db2 BIND sampleapp.bnd QUALIFIER u1 OWNER u2 DYNAMIC RULES RUN

--nxz執行以下命令,檢查使用者U2的特權,不是檢查nxz
db2 BIND sampleapp.bnd QUALIFIER u1 OWNER u2 DYNAMIC RULES BIND


DB2關於特權的資訊儲存在7個系統編目檢視中:模式syscat
dbauth      資料庫特權
colauth     列特權
indexauth   索引特權
packageauth 包特權
schemaauth  模式特權
tabauth     表和檢視特權
tbspaceauth 表空間特權 

GTYPE 被授權者型別 U:使用者賬號 G:組賬號
其他列 Y:擁有此特權 N:不擁有特權  G:擁有此特權並可以授予其他人 

--模式特權  
db2 "select char(grantee,20) grantee, char(schemaname,20) schema ,alterinauth ,createinauth,dropinauth 
from syscat.schemaauth where grantee='PUBLIC' 
"

--角色特權
db2 "select char(rolename,20),roleid 
from syscat.ROLEAUTH where grantee='PUBLIC'
"

--執行計劃包特權
db2 "select char(pkgschema,20), char(pkgname,20), CONTROLAUTH,BINDAUTH,EXECUTEAUTH
from syscat.packageauth where grantee='PUBLIC'
"

--序列特權 
db2 "select char(seqschema,20),char(seqname,20) from syscat.SEQUENCEAUTH where grantee='PUBLIC' "


--查詢public能訪問的模式 
db2 "select distinct char(objectschema,40) as "ObjectSchema" from sysibmadm.privileges where authid='PUBLIC'"

--查詢public許可權和特權 
db2 "select char(objectschema,30) as "ObjectSchema" ,char(objectname,50) "ObjectName",objecttype,privilege
from sysibmadm.privileges where authid='PUBLIC' order by 1,2 "



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22661144/viewspace-1477189/,如需轉載,請註明出處,否則將追究法律責任。

相關文章