netiCRM Connector 資料安全與權限說明

適用對象:想了解 netiCRM Connector(MCP)如何在保護個資的前提下,讓 AI 協助分析 CRM 資料的組織夥伴與資訊人員。

本章由技術團隊提供素材,說明「AI 到底看得到哪些資料、看不到哪些資料」,以及背後的權限與安全機制。若您想直接開始設定與使用,請參考下一章〈操作與設定〉(尚未公開,請稍候)。

一、Connector 是怎麼保護資料的?

很多人第一個問題是:「把 CRM 接給 AI,它會不會把我們所有捐款人、會員的個資都讀走?」

答案是不會。

netiCRM Connector 並不是把完整資料庫直接開放給 AI,而是先在系統裡建立幾個「資料櫥窗(View)」。您可以把它想像成博物館的展示櫃——櫃子裡只擺放被允許展示的資料表與欄位,其餘資料仍鎖在庫房裡,AI 看不到、也碰不到。

除此之外,還有三道把關:

  1. 只展示指定欄位:櫥窗只呈現分析所需的欄位。個資相關的,例如姓名、電話、Email、地址、身分證字號等「可直接識別個人身分」的資料一律不開放。
  2. 查詢前再檢查一次:每一筆查詢送出前,系統會再驗證一次,確認這個要求只是讀取、沒有夾帶新增/修改/刪除的動作。
  3. 使用唯讀帳號連線:Connector 連線資料庫時使用的是唯讀帳號,就算指令想改資料,資料庫層也不會執行。

一句話結論:AI 只能「看被允許看的統計欄位」,不能新增、不能修改、不能刪除,也讀不到姓名等個資。

二、權限驗證流程

一筆查詢從發問到回傳結果,會經過以下關卡。任何一關不通過,查詢就會被直接拒絕:

  1. 提出問題:使用者或 AI 助手提出分析需求。
  2. MCP 入口驗證:確認身分、權限與使用頻率。未通過 → 拒絕查詢。
  3. 轉成資料查詢:通過後,把問題轉換成資料查詢。
  4. 安全檢查器:只允許讀取、只允許指定的資料櫥窗與欄位。不符合 → 拒絕查詢。
  5. 唯讀帳號連線:以唯讀帳號連上資料庫。
  6. 讀取資料櫥窗:只讀取聯絡人摘要(無個資)、捐款摘要、活動摘要、會員摘要等 View。
  7. 回傳結果:回傳統計或分析結果。

而完整的原始資料庫,絕不直接開放給 Connector,Connector只能讀取櫥窗提供的指定欄位,

流程圖:


三、權限如何對應到可查詢的資料?

Connector 提供三個查詢工具,分別對應 CiviCRM 的三個模組權限。使用者(指的是組織為netiCRM connetor 使用所開立的netiCRM管理員帳號)原本有哪些模組權限,就只能用對應的查詢工具、看對應的資料櫥窗;沒有模組權限,就無法使用該工具。

例如「花小花」是OO基金會的行銷同仁,OO基金會的CRM系統後台設定了一個「花小花AI」帳號,只勾選了「捐款管理員」「活動管理員」,如此一來,花小花使用了設定好的claude connectors就只能讀取OO基金會CRM系統裡的捐款與活動紀錄來分析。

使用者權限 可使用的 MCP 工具 預設可查詢的資料櫥窗 若有額外權限,會再開放
MCP query + access CiviContribute contribution_query(捐款分析) 聯絡人摘要、捐款摘要、定期捐款摘要、募款頁摘要、活動付款對照、會員付款對照 若也有 access CiviEvent:加開活動參加者、活動資料。若也有 access CiviMember:加開會員資料。
MCP query + access CiviEvent participant_query(活動參加者分析) 聯絡人摘要、活動參加者摘要、活動摘要、活動付款對照 若也有 access CiviContribute:加開捐款摘要、定期捐款摘要、募款頁摘要。
MCP query + access CiviMember membership_query(會員分析) 聯絡人摘要、會員摘要、會員付款對照 若也有 access CiviContribute:加開捐款摘要、定期捐款摘要、募款頁摘要。
只有 MCP query,但沒有以上三種模組權限 無法使用上述查詢工具 因為每個查詢工具都還需要對應的 CiviCRM 模組權限。

重點:Connector 的權限完全「繼承」您在 netiCRM 裡開給花小花AI帳號的權限設定。它不會擴權,只會在既有權限範圍內提供分析能力。

四、三個查詢工具與可讀資料

1. contribution_query(捐款分析工具)

條件 可讀資料 用途
基本條件:MCP query + access CiviContribute 聯絡人摘要、捐款摘要、定期捐款摘要、募款頁摘要、活動付款對照、會員付款對照 分析捐款金額、日期、狀態、募款頁、定期捐款,以及判斷捐款是否與活動或會員有關。
另外有 access CiviEvent 加開活動參加者摘要、活動摘要 可以把捐款與活動報名資料一起分析。
另外有 access CiviMember 加開會員摘要 可以把捐款與會員資料一起分析。

2. participant_query(活動參加者分析工具)

條件 可讀資料 用途
基本條件:MCP query + access CiviEvent 聯絡人摘要、活動參加者摘要、活動摘要、活動付款對照 分析活動報名人數、報名狀態、活動費用、活動日期等。
另外有 access CiviContribute 加開捐款摘要、定期捐款摘要、募款頁摘要 可以把活動報名與付款、捐款資料一起分析。

3. membership_query(會員分析工具)

條件 可讀資料 用途
基本條件:MCP query + access CiviMember 聯絡人摘要、會員摘要、會員付款對照 分析會員類型、會員狀態、加入日期、會員期間等。
另外有 access CiviContribute 加開捐款摘要、定期捐款摘要、募款頁摘要 可以把會員資料與付款、捐款紀錄一起分析。

五、資料櫥窗開放了哪些欄位?

以下是每個資料櫥窗(View)對應的來源資料表,以及實際開放給 AI 的欄位。請特別注意:聯絡人摘要不含姓名、電話、Email、地址等直接識別個人身分的資料

資料櫥窗 View 來源資料表 開放欄位 這些欄位大概代表什麼
聯絡人基本摘要
v_civicrm_contact
civicrm_contact id, contact_type, employer_id, birth_date, prefix_id, suffix_id, gender_id, job_title, created_date, modified_date 聯絡人編號、聯絡人類型、所屬組織、生日、稱謂、性別、職稱、建立時間、修改時間。不含姓名、電話、Email、地址等直接識別資料。
捐款摘要
v_civicrm_contribution
civicrm_contribution id, contact_id, total_amount, amount_level, receive_date, is_test, contribution_recur_id, contribution_status_id, contribution_page_id, contribution_type_id, cancel_date, receipt_date 捐款編號、捐款人編號、金額、金額級距、收款日期、是否測試資料、是否來自定期捐款、捐款狀態、募款頁、費用類型、取消日期、收據日期。
定期捐款摘要
v_civicrm_contribution_recur
civicrm_contribution_recur id, contact_id, amount, contribution_status_id, create_date, start_date, end_date, installments 定期捐款編號、捐款人編號、定期金額、狀態、建立日期、開始日期、結束日期、期數。
募款頁摘要
v_civicrm_contribution_page
civicrm_contribution_page id, created_date, title 募款頁編號、建立日期、募款頁標題。
活動參加者摘要
v_civicrm_participant
civicrm_participant id, contact_id, event_id, status_id, register_date, fee_level, is_test, fee_amount 參加者記錄編號、聯絡人編號、活動編號、報名狀態、報名日期、費用級距、是否測試資料、活動費用金額。
活動摘要
v_civicrm_event
civicrm_event id, title, event_type_id, start_date, end_date, is_active, is_template 活動編號、活動名稱、活動類型、開始日期、結束日期、是否啟用、是否為範本。
會員摘要
v_civicrm_membership
civicrm_membership id, contact_id, membership_type_id, join_date, start_date, end_date, status_id, is_test 會員記錄編號、聯絡人編號、會員類型、加入日期、會員起日、會員迄日、會員狀態、是否測試資料。
活動付款對照表
v_civicrm_participant_payment
civicrm_participant_payment id, contribution_id, participant_id 用來判斷某筆付款是否對應到某筆活動報名。
會員付款對照表
v_civicrm_membership_payment
civicrm_membership_payment id, contribution_id, membership_id 用來判斷某筆付款是否對應到某筆會員紀錄。

為什麼看得到 contact_id 卻不算個資?
contact_id 只是系統內部的一組編號,AI 拿到的是「編號 12345 捐了多少」,而不是「某某某捐了多少」。因為聯絡人的姓名、聯絡方式都沒有開放,AI 無法把編號還原成真實個人。這讓 AI 能做跨資料的統計分析(例如同一位捐款人是否也報名了活動),同時保護當事人身分。

六、相關程式碼參考(給資訊人員)

若貴組織的資訊人員想進一步檢視技術細節,可參考以下開放原始碼:

讓我們挺你,用聰明的方法改變世界