透過表單申請特定的流程發動key與API語法,就能用熟悉的程式開發,甚至用PowerShell or BAT批次檔發動流程並把資料寫入平台(當然!建議用安全的方式保存API Key,此例只是呈現過程是如此簡單)

| 項目 | 說明 |
|---|---|
| 本篇一句話目標 | 不經管理員手動建 Key:資安人員在表單中心填「API Key 申請單」,管理員核准後由系統自動核發,本人到「個人設定」一次性領取金鑰。 |
| 你需要的身分 | 申請人:持有已授權資安表單的角色(DemoSOC 出廠為 SECURITY_STAFF、SOC_SUPERVISOR)。核准人:企業管理員。 |
| 做完會得到什麼 | 一把歸屬於申請人本人、只能發動勾選那幾張表單的 API Key(key_id 與 secret),以及「個人設定」頁可直接複製的 curl 串接範例。 |
| 預估時間 | 申請人 5 分鐘、管理員 2 分鐘、領取 1 分鐘(核發由流程自動完成,通常十幾秒內)。 |
平台有兩條拿到 API Key 的路徑。本篇講的是「員工自助申請、Key 歸屬個人、管理員只做核准」的申請單路徑;管理員直接配發的路徑在第 01 篇。
| 比較項目 | 01 篇:管理員直接配發 | 02 篇(本篇):表單中心申請 |
|---|---|---|
| 誰發起 | 企業管理員在「系統安全 / API Key 管理」按「建立 API Key」 | 任何填得到「API Key 申請單」的成員(出廠授權給企業成員與企業管理員) |
| Key 歸誰 | 可不綁人,或綁定一個專用系統帳號 | 一定歸屬「使用者(Key 歸屬人)」欄位選的那個人;可代同事申請,但金鑰只有歸屬人本人領得到 |
| 授權範圍 | 表單分類(含子分類)、個別已發行表單、資安事件接收來源 | 只有「授權表單」勾選的那幾張個別表單,且只能勾歸屬人自己填得到的表單;管理端看得到但不能改 |
| 誰把關 | 管理員自己 | 流程中的「管理員核准」關卡(指派角色「企業管理員」);核准後系統再驗一次授權範圍 |
| secret 怎麼拿 | 建立完成的視窗顯示一次 | 歸屬人本人到「個人設定 / 我的 API Key」按「領取金鑰」,只顯示一次,領取憑證 72 小時有效 |
| secret 遺失 | 撤銷重建 | 本人按「重新產生金鑰」,舊金鑰立即失效 |
| 適合的情境 | 設備不屬於某個員工、要綁專用帳號、要集中管理 | 資安人員替自己負責的設備接線,管理員不想經手金鑰 |
金鑰不經手任何人
核發節點產生 secret 後立刻丟棄明文,只留一張「一次性領取憑證」給歸屬人。管理員在整條流程裡看不到 secret,也沒有替他人領取的功能。
申請單上的「授權表單」清單不是全企業的表單,而是「Key 歸屬人自己填得到、而且已發行」的表單。規則是:你手動填得到的表單,才能申請一把 Key 去自動填。判定方式如下:
DemoSOC 出廠已把三張資安表單(SEC_INCIDENT_RESPONSE、SEC_IR_SOC_TEAM、SEC_IR_SOLO)授權給角色「資安人員(SECURITY_STAFF)」與「資安主管(SOC_SUPERVISOR)」。實跑時以 linda.hu@demo-soc.example(資安人員)查詢,清單共 6 張:
| 分類 | 表單名稱 | 表單代碼 | 為什麼在清單裡 |
|---|---|---|---|
| 其他 | API Key 申請單 | API_KEY_REQUEST | 出廠授權企業成員、企業管理員、全企業群組 |
| 其他 | 代理指定申請單 | PROXY_REQUEST | 一般表單,預設企業成員可填 |
| 其他 | 差旅費申請(人事取值示範) | HR_LOOKUP_TRAVEL_DEMO | 一般表單,預設企業成員可填 |
| 資安案件 | 資安事件處置 | SEC_INCIDENT_RESPONSE | 配對已授權 SECURITY_STAFF |
| 資安案件 | 資安事件處置(SOC 團隊版) | SEC_IR_SOC_TEAM | 同上 |
| 資安案件 | 資安事件處置(小企業單人版) | SEC_IR_SOLO | 同上 |
選單「表單流程 / 配對管理」(路徑 /forms/mappings),找到該表單那一列,按「權限」按鈕(按鈕上會顯示規則筆數,沒有規則時顯示「預設」),開啟「填寫權限設定 - 表單名稱」視窗:
| 視窗區塊 | 內容 |
|---|---|
| 預設規則(不可修改) | 三行說明:流程設計師 (FLOW_DESIGNER) 角色永遠可填;表單設計師 (FORM_DESIGNER) 角色永遠可填;未設任何自訂規則時企業成員 (EMPLOYEE) 角色可填、外部廠商不可填 |
| 自訂規則 | 已建立的規則列表,每列顯示類型標籤(部門/角色/社群/個人)與對象名稱,部門或社群類型另標「(含子部門)」「(含下層群組)」,列尾可刪除。沒有規則時顯示「尚無自訂規則,目前由企業成員 (EMPLOYEE) 角色可填寫此表單」 |
| 加新增規則 | 「類型」下拉(部門/角色/社群/個人);部門類型可勾「包含所有子部門」、社群類型可勾「包含下層群組」;選「角色」時出現「選擇角色」下拉;按「新增」 |
資安表單的「預設規則」那三行不適用
視窗裡「未設任何自訂規則時企業成員可填」是一般表單的規則。資安案件分類的表單沒有自訂規則時是全部拒絕,所以要讓資安人員申請得到 Key,至少要加一條「角色」規則。
申請人登入後開「表單中心」,在「新填表單」區的分類「其他」找到卡片「API Key 申請單」,點卡片開啟「填寫表單 - API Key 申請單」視窗。視窗最上方是平台層的「表單主旨」(必填),下方才是申請單本身的欄位:
| 畫面欄位 | 必填 | 欄位說明(照畫面上的說明文字) | 本篇範例值 |
|---|---|---|---|
| 表單主旨 | 必填 | 平台層欄位;核發後會成為這把 Key 在管理端與「我的 API Key」列表的「名稱」 | WAF-01 事件通報用 API Key |
| 使用者(Key 歸屬人) | 必填 | 預設為登入者本人。代為申請時改選對象;核發的 Key 歸該對象所有,只有本人領得到金鑰。 | linda.hu(預設帶入本人) |
| 授權表單 | 必填 | 只列出「Key 歸屬人」自己填得到、且已發行的表單。換人時選項會重新計算。上方有「搜尋表單名稱或代碼...」搜尋框,下方顯示「已選 N 張」 | 勾「資安事件處置」(SEC_INCIDENT_RESPONSE) |
| 用途說明 | 必填 | 寫明哪一台設備、哪一個系統要使用,以及大約的呼叫頻率。至少 10 個字 | WAF-01(192.168.0.111)偵測到攻擊時自動建立資安案件,預估每小時最多 60 次 |
| 有效期限 | 必填 | 到期後這把 Key 立即失效,需要重新申請。日期選擇器,格式 yyyy-MM-dd;系統把它解讀為「該日在企業時區的結束」,也就是可以用到當天 24:00 | 2027-03-31 |
| 來源 IP 限制 | 選填 | 可填單一 IP 或 CIDR,多筆以逗號分隔。留空表示不限制來源。 | 192.168.0.111(WAF-01 自己的 IP) |
| 核發結果 | — | 由流程自動填寫,申請人不需輸入。(欄位是唯讀的) | 留空 |
按「送出表單」。成功時畫面回「表單已送出,流程已啟動」,表單中心會出現這張單的序號(實跑為 Form-260900025)。
有效期限與其他必填欄位留空送不出去
「使用者(Key 歸屬人)」「授權表單」「用途說明」「有效期限」都是必填,送出前畫面會擋;就算繞過畫面直接送,伺服器也會回 400 missing_required_fields,訊息「缺少必填欄位:欄位名稱」。「用途說明」的 10 字下限由表單本身檢查。
來源 IP 限制填的是「設備的 IP」,不是你的工作機
這個限制會寫進 Key 的來源白名單,之後從白名單以外的主機打 API 一律 401。填了工作機 IP、再把 Key 放到設備上,設備就會被擋。實跑用鎖了 192.168.0.111 的 Key 從另一台主機呼叫,回應是 401 auth_failed。如果設備在 NAT 後面,要填 NAT 之後平台看到的 IP。
出廠的「API Key 申請核發流程」只有一個人工關卡。流程如下:
企業管理員開「表單中心」,「待簽核」區會列出這張單:欄位為單號、表單(API Key 申請單)、主旨、發起人、類別、目前關卡(顯示「管理員核准」)、等待時間、操作。按該列的「簽核」按鈕(若別人正在簽會顯示「簽核中」且不能按),開啟「簽核表單」視窗:
「核發 API Key」節點在核發前會再檢查一次,任一項不符就不核發,流程停在這個節點:
| 檢查 | 不符時的錯誤訊息 |
|---|---|
| 歸屬人有填 | API Key 核發失敗:未指定領取人 |
| 授權表單至少一張 | API Key 核發失敗:未指定授權表單 |
| 有效期限是可解讀的日期 | API Key 核發失敗:有效期限格式錯誤 |
| 歸屬人是本企業有效帳號(未停用、未刪除) | API Key 核發失敗:領取人不是本企業有效帳號 |
| 授權表單全部落在歸屬人「自己填得到」的範圍內(與第 2 節同一套判定,核准當下重算) | API Key 核發失敗:授權表單超出領取人可填寫的範圍 |
檢查通過後,系統建立 Key(名稱=表單主旨、說明=用途說明加一行「來源申請單: 申請單識別碼」、授權範圍=勾選的表單模板、來源 IP 白名單=「來源 IP 限制」拆成的清單、期限=有效期限當天結束),並建立一張只有歸屬人能用的一次性領取憑證,有效 72 小時。Key 的 secret 明文在這一步就被丟棄,之後只能靠領取憑證解出一次。
接著「寫回核發結果」節點把下面這段文字寫進申請單的「核發結果」欄位(實跑值,識別碼即這把 Key 的 key_id):
已核發 API Key,識別碼 ak_7bbdad985194ff13。請 Key 歸屬人本人登入平台,於「個人設定」頁一次性領取金鑰;金鑰只顯示一次,逾期未領取需重新申請。
實跑中核准後五個節點(Start、管理員核准、核發 API Key、寫回核發結果、End)全部 SUCCESS,流程狀態 COMPLETED。選「駁回」則直接到 End,不建立任何 Key,申請單與簽核記錄照常保留。
歸屬人登入後開「個人設定」(路徑 /personal-settings),頁面下方有「我的 API Key」區塊。沒有任何 Key 時顯示「目前沒有屬於你的 API Key。可到表單中心提出「API Key 申請單」。」有 Key 時是一張表格:
| 欄位 | 內容 |
|---|---|
| 名稱 | Key 名稱(=申請單主旨),下方小字是說明(用途說明與來源申請單) |
| Key ID | ak_ 開頭的公開識別碼,例 ak_7bbdad985194ff13 |
| 授權表單 | 這把 Key 能發動的已發行表單名稱,每張一行;沒有時顯示「(無)」 |
| 狀態 | 啟用中/已暫停/已撤銷;下方小字「有效期限: 時間」,過期改顯示「已過期 時間」,沒設期限顯示「永久有效」 |
| 最後使用 | 最近一次驗章成功的時間;從未用過顯示「尚未使用」 |
| 申請單 | 來源申請單的序號(例 Form-260900025);管理員直接配發的 Key 這格是「—」 |
| 金鑰 | 領取狀態:「尚未領取」(下方小字「領取期限: 時間」)/「已於 時間 領取」/「領取期限已過」/「未建立領取憑證」 |
| 操作 | 依領取狀態出現:「領取金鑰」(尚未領取時);「查看串接範例」(已領取時);「重新產生金鑰」(只要不是「尚未領取」都會出現) |
這張表只列「歸屬人是你」的 Key。別人替你申請的 Key 會出現在你的頁面、不會出現在申請人的頁面;管理員也沒有替你領取的功能。
在【個人設定】的最下面,要捲動
按「領取金鑰」。系統確認這張領取憑證屬於你、尚未領取、還沒過期,而且 Key 仍是啟用狀態,然後把 secret 解出來顯示一次,並開啟「API Key 串接範例」視窗(內容見第 6 節),視窗頂端警示:
這串金鑰只會顯示這一次。關閉後將無法再次查看,遺失時只能重新產生。
底層 API 的回應(實跑值,secret 已隱去):
POST /api/my-api-keys/<key 識別碼>/claim
{
"success": true,
"data": {
"key_id": "ak_7bbdad985194ff13",
"secret": "<領取時顯示一次的 secret>",
"claimed_at": "2026-09-26T15:35:45"
}
}
領取後表格的「金鑰」欄變成「已於 時間 領取」,按鈕變成「查看串接範例」與「重新產生金鑰」。
{"success": false, "error": "這筆領取憑證已失效或已領取過"} HTTP 400
按「重新產生金鑰」會先跳確認:「重新產生後,舊的金鑰立即失效,所有正在使用它的系統都會連不上。確定要繼續嗎?」確定後系統換一組 secret、開同一個「API Key 串接範例」視窗顯示一次。Key 必須是啟用中;已暫停的 Key 會回「已停用的 API Key 不可重新產生金鑰」;已撤銷的 Key 會直接從「我的 API Key」列表消失。
領取當下、重新產生當下,或之後按「查看串接範例」,都會開同一個「API Key 串接範例」視窗,內容由上到下:
| 區塊 | 內容 |
|---|---|
| 警示列 | 剛領到金鑰時是「這串金鑰只會顯示這一次…」;事後開啟時是「金鑰已領取過,範例中以環境變數佔位。請自行代入當初保存的金鑰。」 |
| 金鑰 | 唯讀輸入框加「複製」按鈕。剛領到時是真實 secret;事後開啟時顯示佔位字串 $BP_API_KEY_SECRET |
| 表單 | 下拉,選項是這把 Key 能發動的表單(本篇只有「資安事件處置」)。換表單會重設下方欄位 |
| 主旨 | 預設「外部系統觸發」,可改;會成為案件的主旨 |
| 網址警示 | 系統對外網址沒設定時顯示「(尚未設定系統對外網址,請聯絡管理員)」,且 curl 裡的網址也會是這句話——這個值由系統管理員在「主機設定」頁的「系統對外網址」設定,企業管理員無法自行填 |
| 併案提示 | 選到資安表單時顯示:「資安案件會依 actor_ip 與 finding_rule_id 併入同一案件;兩者任一留空就每次各自開案。也可在 body 頂層加 case_group_key 自訂分組鍵。」 |
| 欄位輸入框 | 表單的每個欄位 key 各一格(資安表單有 28 格)。資安表單會預填四格:actor_ip=203.0.113.42、finding_rule_id=RULE-1、severity_id=3、source_system=manual;留空的欄位不會進 body |
| case_group_key | 標示「(選填,自訂分組鍵)」,最多 128 字元,只在資安表單出現;有填才會放進 body 頂層 |
| curl | 唯讀多行文字框加「複製」按鈕,內容隨上方欄位即時更新 |
以本篇的 Key、表單「資安事件處置」、預填值不動、事後開啟(金鑰以環境變數佔位)為例,視窗產生的 curl 是:
BASE='http://192.168.0.112:8000/beakplatform'
KEY_ID='ak_7bbdad985194ff13'
SECRET="$BP_API_KEY_SECRET"
BODY='{"form_code":"SEC_INCIDENT_RESPONSE","subject":"外部系統觸發","form_data":{"actor_ip":"203.0.113.42","finding_rule_id":"RULE-1","severity_id":"3","source_system":"manual"}}'
TS=$(date +%s)
KEY_HEX=$(printf '%s' "$SECRET" | tr '_-' '/+' | base64 -d | xxd -p | tr -d '\n')
SIG=$(printf '%s\n%s' "$TS" "$BODY" | openssl dgst -sha256 -mac HMAC -macopt hexkey:"$KEY_HEX" -hex | awk '{print $NF}')
curl -s -X POST "$BASE/api/trigger/form" \
-H 'Content-Type: application/json' \
-H "X-BP-Key-Id: $KEY_ID" \
-H "X-BP-Timestamp: $TS" \
-H "X-BP-Signature: sha256=$SIG" \
-d "$BODY"

這幾行在做的事:
簽章規格的完整說明、用 <平台安裝目錄>/scripts/bp_trigger.py 免算簽章的做法、以及回應與錯誤碼,見第 03 篇。該篇的工具吃 BP_BASE_URL/BP_KEY_ID/BP_SECRET 三個環境變數,BP_SECRET 放的就是這裡領到的 secret。
申請流程核發的 Key 與管理員直接建立的 Key 放在同一張表:「系統安全 / API Key 管理」(路徑 /security/api-keys/)。列表欄位為 Key ID、名稱 / 使用者、授權範圍、IP 鎖定、期限、最後使用、狀態、操作。本篇這把 Key 在列表上長這樣:
| 欄位 | 顯示值 | 來源 |
|---|---|---|
| Key ID | ak_7bbdad985194ff13 | 系統產生 |
| 名稱 / 使用者 | WAF-01 事件通報用 API Key(第二行「使用者標籤」為空) | 申請單主旨;流程不填使用者標籤 |
| 授權範圍 | 表單模板 x1 | 「授權表單」勾了幾張就是幾 |
| IP 鎖定 | 192.168.0.111 | 「來源 IP 限制」;沒填顯示「不鎖」 |
| 期限 | 2027-03-31 | 「有效期限」 |
| 狀態 | 啟用中 | 核發即啟用 |
從管理 API 讀這筆記錄還能看到:applicant_user_secure_code=歸屬人、created_by_secure_code=wf: 加流程實例識別碼(表示由流程建立,不是某位管理員)、scopes={"form_template": [...]}、description=用途說明加一行「來源申請單: …」。
管理員可以對它做的事與其他 Key 相同:「暫停」(可復原)、「復原」、「撤銷」(不可逆)、「編輯」(改名稱、期限、IP 白名單、追加分類或個別表單範圍)。不同的是:
「授權表單」清單裡沒有資安表單
症狀:只看得到「其他」分類的表單,或清單顯示「沒有可申請的表單」。
原因:資安案件表單沒有規則時是全部拒絕,而且清單依「Key 歸屬人」而不是填單的人計算——代申請時對方沒有角色,你有也沒用。
做法:請管理員到「表單流程 / 配對管理」該表單的「權限」加一條角色規則(例如「資安人員」),並確認歸屬人真的持有該角色。
管理員核准了,但「我的 API Key」沒有出現新的一列
症狀:申請單的「核發結果」欄位空白,個人設定頁沒有這把 Key。
原因:「核發 API Key」節點在核准當下重算了一次歸屬人的填寫權限,最常見是核准前角色被拿掉、歸屬人被停用,或送單時塞進了歸屬人填不到的表單;節點回的錯誤訊息是第 4.2 節那張表其中一句,流程停在該節點。
做法:修正權限或帳號狀態後重新申請一張。
領取期限過了
「金鑰」欄變成「領取期限已過」,「領取金鑰」按鈕消失。Key 還在,按「重新產生金鑰」會立刻顯示一組新的 secret(只顯示一次)。管理員無法替你延長或代領。
「來源 IP 限制」填了工作機 IP,設備打 API 卻 401
白名單在驗章之前就檢查,只要來源不在清單內就是 401 auth_failed,回應不會說是 IP 的問題。從自己的工作機測試通了、搬到設備上就失敗,通常就是這個原因。請管理員在「API Key 管理」的「編輯」視窗改「來源 IP 白名單」,或重新申請時填設備的 IP;動態 IP 的設備建議留空。
「重新產生金鑰」會讓舊金鑰立即失效
確認對話框已經寫明:所有正在使用舊金鑰的系統都會連不上。先確定設備能同步更新設定再按;只是想「再看一次」金鑰是不行的,關閉視窗後沒有任何地方可以再看到舊值。
兩個容易混淆的時間
「有效期限」是 Key 本身的壽命(申請單上填的日期,用到當天結束);「領取期限」是拿 secret 的時限(核發後 72 小時)。前者到期 Key 失效、要重新申請;後者到期只是還沒拿到 secret,用「重新產生金鑰」即可。
簽核記錄與決策
管理員選「駁回」時流程直接結束、不核發,申請人在表單中心看到的是這張單已結束而「核發結果」為空;要知道原因看簽核意見。
拿到 key_id 與 secret 之後,到第 03 篇:從你的設備建立第一張資安案件,用 bp_trigger.py 或第 6 節那段 curl 打 POST /api/trigger/form,並對照 28 個資安表單欄位把設備的告警對應進去。