隨著我們的商業戰情室功能日漸完備,從互動圖表、情境模擬到 AI 自動化通報應有盡有,但在系統推廣到全公司、甚至跨分公司使用時,IT 主管與法務部門通常會立刻提出一個最嚴厲的審查要求:
「南部區經理絕對不能看到北部區的營收與獲利!」
「外包廠商只能看自己負責的產品線,不可以調閱全公司客戶名單。」
「AI 在 Discord 頻道推播營運摘要時,如何確保主管不會看到越權的敏感機密?」
如果為了不同部門各複製一份儀表板或分流建好幾條 n8n 流程,未來的維護成本將是天文數字。
今天我們將展示企業級 BI 與自動化架構中最關鍵的安全防護機制——列級安全性(Row-Level Security, RLS) 與 多租戶權限過濾,確保「同一座儀表板、同一條管線,每個人登入只能看見屬於自己的數據」!
一、什麼是列級安全性(Row-Level Security, RLS)?
傳統的權限管理往往是「工作表層級」或「專案資料夾層級」(能看這張報表 vs. 不能看這張報表)。
而 RLS(列級安全性) 則是將權限精確控制到「資料集的每一列(Row)」:
當北部主管(User A) 打開報表時,系統在底層強制加入 WHERE Region = 'North'。
當南部主管(User B) 打開同一個網址時,系統動態套用 WHERE Region = 'South'。
即使使用者試圖拉動篩選器或下載摘要資料,系統也會在底層直接攔截,絕無越權讀取其他區域資料的風險。
二、實戰步驟一:在 Tableau 建立使用者安全對應表
在 Tableau 中實作動態 RLS 最穩健且業界通用的做法,是建立一張 使用者權限對應表(Security Entitlement Table):
步驟 1:建立權限映射資料表
在試算表或資料庫中建立一張簡單的權限清單:
sername(登入帳號 / Email)Allowed_Region(授權區域)alice@superstore.comWestbob@superstore.comEastcarol@superstore.comCentralboss@superstore.comSouth💡 若主管有多區權限,可多列記錄或使用特定萬用群組。
步驟 2:在資料模型中進行關聯(Relationships)
打開 Tableau 的「資料來源」頁面。
將剛才的 Security_Mapping 表拖入畫布,與主要的 Orders 表建立關聯。
關聯條件設定為:Orders.Region = Security_Mapping.Allowed_Region。
步驟 3:撰寫動態使用者計算欄位
建立計算欄位,命名為 【資安】RLS_權限過濾器。
輸入 Tableau 原生使用者函數:USERNAME() = [Username]
註:若使用 Tableau Cloud / Server,USERNAME() 會自動抓取目前登入者的帳號名稱。
設為全域資料來源篩選器:
在左側資料來源名稱上點擊右鍵 ➔ 選擇 「編輯資料來源篩選條件 (Edit Data Source Filters)」。
將 【資安】RLS_權限過濾器 加入,勾選為 True。
設定完成後,整份工作簿在資料進入圖表前就已被硬性裁切,非授權區域的資料在記憶體中根本不存在!
三、實戰步驟二:n8n 自動化流程的多租戶分流隔離
不只 Tableau 要防禦,在後端的 n8n 自動通報與 AI 問答流程中,同樣必須做權限隔離:
┌─────────────────────────┐
│ 使用者在通訊軟體發起請求│ ──> 帶有發送者的 User ID / 帳號
└─────────────────────────┘
│
▼
┌─────────────────────────┐
│ n8n 權限查詢節點 │ ──> 比對員工名冊,查詢該員隸屬地區 (如:West)
└─────────────────────────┘
│
▼
┌─────────────────────────┐
│ 資料擷取 (強制帶 Filter)│ ──> 僅撈取 Region = 'West' 的訂單數據
└─────────────────────────┘
│
▼
┌─────────────────────────┐
│ Dify AI 推理與回覆 │ ──> AI 僅針對該主管權限內的資料進行解讀
└─────────────────────────┘
操作步驟:
驗證身分(Authentication):
當 n8n 接收到來自 Discord / Slack 的提問或 Webhook 時,先抓取發話者的 User ID 或 Email。
條件分流(Switch / Filter 節點):
使用 n8n 內建的 Switch 或 Google Sheets Lookup 節點,查詢該使用者被賦予的業務區域代碼。
強制注入查詢條件:
在向資料庫或 Google Sheets 撈取數據時,不可讓使用者自訂查詢範圍。
強制在 API 請求中鎖定其專屬參數:
{
"filter": {
"Region": "{{ $('Lookup_Permission').item.json.Allowed_Region }}"
}
}
這樣就能杜絕一般門市員工藉由 Prompt 越權套取全公司機密財務數字的漏洞。