防止非法存取、避免資料遺失/洩露/破壞。Oracle 提供多層防護機制:
CONNECT、RESOURCE 等角色,限制操作範圍。SELECT、UPDATE 等細粒度權限。利用 密碼保護角色,將角色名稱與密碼內嵌於應用程式中:
CONNECT 權限(無操作權限)。SET ROLE role_name IDENTIFIED BY password 激活角色,取得業務權限。情境:使用者 xiayan 需查詢/更新 account.paytable,但不直接授權。
-- 1. 建立角色與密碼
CREATE ROLE checkerrole IDENTIFIED BY xm361001;
CREATE ROLE defaultrole IDENTIFIED BY defaultrole;
-- 2. 授予角色物件權限
GRANT SELECT, UPDATE ON account.paytable TO checkerrole;
GRANT CONNECT TO defaultrole;
-- 3. 建立使用者
CREATE USER xiayan IDENTIFIED BY xiayan;
-- 4. 授予角色給使用者
GRANT checkerrole TO xiayan;
GRANT defaultrole TO xiayan;
-- 5. 設定預設角色(登入即生效)
ALTER USER xiayan DEFAULT ROLE defaultrole;
-- 6. 登入流程
CONNECT xiayan/xiayan@Oracle; -- 僅擁有 CONNECT 權限
-- 7. 應用程式激活業務角色
SET ROLE checkerrole IDENTIFIED BY xm361001; -- 獲得 paytable SELECT/UPDATE 權限
PROXY AUTHENTICATION(代理認證)進一步強化中介層安全性。