為數(shù)據(jù)源使用連接池可能會導(dǎo)致基于角色的安全性破壞。IBM Informix 服務(wù)器中對可信連接和可信上下文的支持能夠靈活地重用連接,向中間層授予受控的權(quán)限,以及在三層應(yīng)用程序中加強用戶責(zé)任性而不損害其數(shù)據(jù)庫安全性,所有這些都改善了系統(tǒng)性能。
本文將討論可信連接和可信上下文,展示如何使用 JDBC、ESQL/C 和 ODBC 驅(qū)動程序管理可信上下文。
在傳統(tǒng)的三層應(yīng)用程序模型中,您只有在成功授權(quán)之后才能與交互,檢查和審計由中間層執(zhí)行。即使有多個用戶登錄到中間層,中間層也僅使用單個用戶 ID 來訪問,而且會在所有資源上授予權(quán)限。此模型無法獲取嘗試訪問數(shù)據(jù)庫的實際用戶身份,以進行訪問控制。另外,如果中間層用戶 ID 被盜用,可能導(dǎo)致嚴(yán)重的安全威脅。
為了在中間層服務(wù)器與數(shù)據(jù)庫服務(wù)器之間實現(xiàn)惟一的交互組,Informix 中引入了可信數(shù)據(jù)庫連接 的概念。可信上下文 是在數(shù)據(jù)庫服務(wù)器上創(chuàng)建的一種數(shù)據(jù)庫安全對象,它定義了一個可信數(shù)據(jù)庫連接的屬性。在連接屬性與 Informix 服務(wù)器上定義的惟一可信上下文屬性匹配時,就會建立可信連接。中間層服務(wù)器建立可信連接后,可重用同一個物理連接,而無需在數(shù)據(jù)庫服務(wù)器上對最終用戶重新進行身份驗證。
從應(yīng)用程序開發(fā)人員的角度講,可信連接的重要性離不開這樣一個事實:單個數(shù)據(jù)庫連接可與其他用戶共享,同時維護每一個嘗試訪問數(shù)據(jù)庫的應(yīng)用程序或用戶的 ID。對用戶權(quán)限的控制有助于適當(dāng)?shù)厥谟杌蛳拗朴脩魧γ舾匈Y源的訪問,進而提高系統(tǒng)安全性和用戶責(zé)任性。
使用 Informix 客戶端驅(qū)動程序管理可信上下文
在本節(jié)中,您將學(xué)習(xí)如何創(chuàng)建、修改和丟棄一個可信上下文。要創(chuàng)建和管理可信上下文,您的應(yīng)用程序必須通過 TCP/IP 連接 Informix 服務(wù)器。以下 Informix 客戶端驅(qū)動程序通過公開后面幾節(jié)中將探討的相關(guān) API 來支持可信連接。
建立可信連接
使用 JDBC 驅(qū)動程序
要在 JDBC 應(yīng)用程序中請求一個可信連接,可將 TRUSTED_CONTEXT = TRUE; 屬性包含在數(shù)據(jù)庫 URL 中,如清單 1 中所示。
清單 1. 使用 JDBC 驅(qū)動程序連接
jdbc:informix-sqli://hostname:portnumber/database_name:INFORMIXSERVER = server_name; TRUSTED_CONTEXT = TRUE;
使用 ODBC 驅(qū)動程序
以下是通過 ODBC 建立可信連接的兩種方式,一個示例如清單 2 中所示。
使用 SQLSetConnectAttr() API:
SQLSetConnectAttr(hdbc1,SQL_ATTR_USE_TRUSTED_CONTEXT,SQL_TRUE,SQL_IS_INTEGER));
使用連接字符串參數(shù):
TRUSTEDCONTEXT=1; 或 TCTX=1;
清單 2. ODBC 驅(qū)動程序的樣例連接字符串
"Server=ol_informix_1170;Host=9.124.123.54;Service=ol_informix_1170;Protocol=onsoctcp; Database=stores7;TRUSTEDCONTEXT=1;"
使用 ESQL/C 驅(qū)動程序
在 ESQL/C 中,可信連接使用 TRUSTED 關(guān)鍵字和連接語句,以及用戶名和密碼來建立,如清單 3 中所示。
清單 3. 使用 ESQL/C 驅(qū)動程序連接
EXEC SQL CONNECT TO 'database_name' USER 'informix' USING :infx_passwd TRUSTED;
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com