DB2許可權與授權
--許可權相關的檢視
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 "select char(workloadname,30) from syscat.workloads"
db2 "select workloadid,char(workloadname,30),usageauth,char(grantee,30) from syscat.workloadauth"
-----------------------------------------------------------------------
例程特權
execute 允許使用者呼叫例程,從例程建立函式(只應用於函式),以及在任何DDL語句中引用例程
序列特權
usage 允許使用者對序列使用nextval和prevval表示式
alter 允許使用者使用alter sequence語句修改序列屬性
--向使用者或組授予許可權和特權時,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:擁有此特權並可以授予其他人
--模式特權
--查詢public能訪問的模式
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 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'
"
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 新包繫結需要的許可權
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 grant dbadm on database to group db2grp1
db2 grant load on database to user user1
db2 grant load on database to group grp1
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
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(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 "
from sysibmadm.privileges where authid='PUBLIC' order by 1,2 "
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22661144/viewspace-1477189/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 認證/授權與許可權的問題
- 授權物件許可權後的授權者顯示問題物件
- 授權許可權服務設計解析
- 1.7.6. 授權和撤銷管理許可權
- 為什麼許可權授權很難?- osohq
- 許可權管理之多租戶隔離授權
- 鴻蒙Next許可權申請全攻略:系統授權與使用者授權之道鴻蒙
- django開發之許可權管理(一)——許可權管理詳解(許可權管理原理以及方案)、不使用許可權框架的原始授權方式詳解Django框架
- DB2 public許可權相關DB2
- DB2許可權管理的理解DB2
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- 許可權之選單許可權
- 『學了就忘』Linux許可權管理 — 54、sudo授權Linux
- mysql操作命令梳理(4)-grant授權和revoke回收許可權MySql
- 如何用 Vue 實現前端許可權控制(路由許可權 + 檢視許可權 + 請求許可權)Vue前端路由
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- Django(63)drf許可權原始碼分析與自定義許可權Django原始碼
- 許可權系統:一文搞懂功能許可權、資料許可權
- db2不同license授權DB2
- DB2的4種查詢許可權DB2
- Anvil Connect:一個集各種許可權授權協議的開源身份驗證與授權伺服器協議伺服器
- 微服務中如何設計一個許可權授權服務微服務
- Linux-許可權管理(ACL許可權)Linux
- DB2授權和特權安全機制DB2
- oracle受權與回收許可權grant和revokeOracle
- 授權機制與授權模型研究模型
- Android系統許可權和root許可權Android
- [BUG反饋]許可權管理 -> 訪問授權 點選後報錯
- Spring security(五)-完美許可權管理系統(授權過程分析)Spring
- [WCF許可權控制]利用WCF自定義授權模式提供當前Principal模式
- 適配懸浮窗許可權與系統設定修改許可權
- Oracle 使用者許可權管理與常用許可權資料字典列表Oracle
- Oracle建立表空間、建立使用者、授權、授權物件的訪問以及檢視許可權集合Oracle物件
- win10 管理員許可權授權怎麼關掉 win10電腦管理員許可權怎麼解除Win10
- mysql許可權MySql
- MySQL 許可權MySql
- ORACLE許可權Oracle
- 認證鑑權與API許可權控制在微服務架構中的設計與實現:授權碼模式API微服務架構模式