DB2安全性概述

2021-05-22 22:28:42 字數 4613 閱讀 5264

db2 的安全性由兩方面組成:認證和授權

認證

認證就是系統驗證使用者身份的過程。說的簡單點,就是驗證使用者名稱和密碼,因為db2使用者同時也是作業系統使用者,所以,首先必須得到作業系統的認可。在預設情況下,db2使用的就是基於作業系統的使用者認證。當然,你也可以指定其它認證方式。dbm cfg 的authentication引數決定在**進行使用者認證。

authentication可以設定為以下值:

server (default)            認證在伺服器端執行 

client                          認證在客戶端執行 

server_encrypt                  和server 引數相似,而且使用者的id 和密碼都經過加密 

kerberos                    認證使用kerberos 安全機制 

sql_authentication_dataenc  在伺服器端進行認證,資料庫連線時必須使用資料加密 

sql_authentication_dataenc_cmp  與上面類似,但當條件不允許的情況下,可以不對資料進行加密 

gssplugin                   使用外部的基於gss api 外掛程式的安全工具進行認證 

檢視當前設定:db2 get dbm cfg | grep authentication

授權

授權是 db2  獲取有關已認證的 db2 使用者的資訊的過程,此資訊指示該使用者可執行的資料庫操作,以及可訪問的資料物件。

很多人都感覺db2的許可權非常難理解,其實非常簡單,大家之所以感覺難理解,主要原因是ibm把它介紹複雜了,然後,各種書籍、資料把db2 的官方資料翻譯出來呈現在大家面前,有的翻譯的可能並不是很好,所以大家就感覺難理解了。其實,大家完全可以把db2想象乙個倉庫,倉庫中有好多房間,房間中有好多東西。倉庫管理員有所有房間的鑰匙,你想進入某個房間時,你必須有該房間的鑰匙。如果你沒有鑰匙,你可以像管理員申請。那麼db2 有哪些房間呢(也就是db2的組成部分)? db2由 例項、資料庫、表空間、模式、表、檢視等組成。每個組成部分都定義了相應的許可權,如:你想訪問某個表,那麼你首先得連線資料庫,所以,你必須具有該資料庫的connect許可權,同時你還必須有該錶的select 許可權。這就相當於,你想進入乙個房間,你必須有該房間的鑰匙。下面我們來了解一下db2的不同組成部分定義了哪些許可權:

例項級別許可權:引用

sysadm  系統管理許可權 

sysctrl 系統控制許可權 

sysmaint系統維護許可權 

sysmon  系統監視許可權 

資料庫級別許可權:引用

accessctrl  允許擁有者授予和撤銷所有物件特權和資料庫許可權以及 accessctrl、dataaccess、dbadm 和 secadm 許可權 

bindadd                     允許擁有者在資料庫中建立新包 

connect                     允許擁有者連線到資料庫 

createtab                   允許擁有者在資料庫中建立新錶 

create_external_routine     允許擁有者建立過程以供資料庫的應用程式和其他使用者使用 

create_not_fenced_routine   允許擁有者建立未受防護的使用者定義的函式(udf)或過程 

dataaccess                  允許擁有者訪問儲存在資料庫表中的資料。 

dbadm                       允許擁有者充當資料庫管理員 

explain                     允許擁有者說明查詢方案,而不要求他們擁有訪問這些查詢方案所引用的表中資料的特權 

implicit_schema             允許任何使用者隱式地建立模式 

load                        允許擁有者將資料裝入到表中。 

quiesce_connect             允許擁有者在資料庫處於停頓狀態時訪問該資料庫。 

secadm                      允許擁有者充當資料庫的安全管理員。 

sqladm                      允許擁有者監視和調整 sql 語句。 

wlmadm                      允許擁有者充當工作負載管理員 

grant  createtab on database  to user

revoke  createtab on database  from user

表空間特權引用

use 允許使用者在該錶空間中建立表 

grant use of tablespace to user

revoke use of tablespace from user

模式特權引用

createin  允許使用者在模式中建立物件 

alterin   允許使用者在模式中改變物件 

dropin    允許使用者在模式中刪除物件 

grant createin,dropin,alterin on schema to user

revoke createin,dropin,alterin on schema from user

表和檢視特權引用

select       允許使用者檢索表或檢視中的行、對錶建立檢視以及執行 export 實用程式。 

insert       允許使用者將行插入表或檢視以及執行 import 實用程式。 

update       允許使用者更改表或檢視中的條目,或表或檢視中的乙個或多個特定列的條目。使用者只能對特定的列擁有此特權。 

delete       允許使用者從表或檢視中刪除行。 

alter       允許使用者修改表,例如,為表新增列或唯一約束。具有 alter 特權使用者還可以 comment on 乙個表,或者表的一列。 

index       允許使用者對錶建立乙個索引。索引建立者自動具有索引的 control 特權。 

references  允許使用者建立和刪除乙個外來鍵,並指定該錶為關係中的父表。使用者可能只對特定的列擁有此特權。 

control     給使用者提供對錶或檢視的所有特權,包括刪除它以及授予和撤銷各個表特權的功能。 

grant  select on table to user

revoke select on table from user

索引特權引用

control    允許使用者刪除和修改索引 

grant  control on index to user

revoke control on index from user

函式、過程、方法特權

execute    允許使用者執行函式、過程、方法 

grant execute on function to user

grant execute on procedure to user

grant execute on method to user

程式包特權引用

execute  允許使用者執行或執行程式包 

bind     允許使用者重新繫結或繫結該程式包以及新增具有相同程式包名和建立者的新程式包版本 

control  給使用者提供重新繫結、刪除或執行程式包的功能,以及將那些特權授予其他使用者的功能 

revoke  execute on package from user

grant  execute on package to user

使用者、使用者組、public組引用

db2 的使用者是作業系統使用者,當然,db2使用者組也是作業系統使用者組。由上面的介紹大家就可以知道賦予使用者許可權是非常繁瑣的,為了方便許可權管理,我們可以把許可權賦給使用者組,這樣,任何屬於該組的使用者都可以獲得相應的許可權。值得注意的是db2還定義了乙個public組,任何人或組都屬於public組,當乙個資料庫建立時,下面的特權都會自動的授予public 組:connect,createtab,implicit schema,bindadd,這就是當我們新建乙個作業系統使用者,沒有賦給它任何許可權,而它卻可以連線資料庫的原因。

賦予使用者例項級別許可權引用

細心的朋友可能已經發現了,我們在介紹例項級別許可權的時候沒有說明如何賦予使用者例項級別許可權,那是因為我們不能通過grant和revoke語句賦予和撤銷許可權,而且例項級別許可權也不能賦予單個使用者,只能賦予使用者組。那麼到底該怎麼賦予使用者組例項級別許可權呢?在dbm cfg中定義以下4個引數,我們只要修改這幾個引數就可以賦予使用者組相應的例項級許可權。

db2 get dbm cfg | grep group 

sysadm_group 

sysctrl_group 

sysmaint_group 

sysmon_group 

探索容器安全性 概述

編者的話 本文是 google雲平台 gcp 上的容器安全性系列部落格文章中的第一篇,介紹了容器安全的以下幾個方面 基礎設施安全 軟體 鏈和執行時安全,並澄清了容器不是強大的安全邊界,可能要依靠 google雲平台專案 提供的隔離。最後提供了幾場即將到來的在kubecon eu關於容器安全的講座資訊...

2執行緒安全性

當多個執行緒訪問可變的同乙個狀態變數沒有正確的同步,那麼就會出現錯誤,有三種方式可以修復這種錯誤 將狀態變數修改為不可變的變數 在訪問狀態變數時使用同步 編寫併發應用程式的時候,一種準確地程式設計方式是 首先使 正確執行,然後在提高 的速度。即便如此,最好也只是當測試結果和應用需求告訴你必須提高效能...

db2體系結構概述

系統環境變數 全域性註冊變數 db2set parameter value g db2例項 例項級別註冊變數 db2set parameter value i instancename 資料庫管理器 例項 配置檔案dbm cfg db2 get dbm cfg db2 update dbmcfg u...