f9dad311ff
新增 credentials 目錄表(api_key/name/service/sensitivity/secret_ref/ created_at/last_used_at,PRIMARY KEY(api_key,name) + idx_cred_apikey), D19:只存目錄不存密文,密文本體改住 CF Workers per-script Secrets(T5)。 deploy.ts 重用既有 applyD1Migration,緊接 0001_base.sql 之後套用同一顆 D1, 機制完全一致(同一支 CF D1 query API)。 驗證:cli tsc --noEmit exit 0;leo21c arcrun-kbdb D1 (1099d0f3-d062-4202-984c-5a57b0a8c031)實際套用, sqlite_master 確認 table+index 存在,重跑驗證冪等。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018D6QoC5waFkcjc2N7csJBB
21 lines
1.4 KiB
SQL
21 lines
1.4 KiB
SQL
-- credential-primitives-wasm — credential-store-migration T2(D19:D1 只存目錄,不存密文)
|
||
-- SDD: system-dev/docs/3-specs/arcrun/credential-primitives-wasm/credential-store-migration.md §2.2
|
||
--
|
||
-- 密文本體不在這裡:值住在 CF Workers per-script Secrets(掛在 cypher worker 上,管理 API 唯寫)。
|
||
-- 這張表只存「目錄」:租戶(api_key) / 名字 / 服務 / 敏感度 / 指向 Workers Secrets 的 env var 名(secret_ref)。
|
||
-- 冪等(IF NOT EXISTS),與 0001_base.sql 同模式,套用機制走 cli/src/lib/deploy.ts applyD1Migration。
|
||
-- 同一顆 D1(與 KBDB base 共用 arcrun-kbdb),不新建第二顆。
|
||
|
||
CREATE TABLE IF NOT EXISTS credentials (
|
||
api_key TEXT NOT NULL, -- 租戶
|
||
name TEXT NOT NULL, -- credential 名(= auth-recipe required_secrets[].key,如 telegram_bot_token)
|
||
service TEXT, -- 對應 service(telegram / notion …),可空
|
||
sensitivity TEXT NOT NULL DEFAULT 'standard', -- 'standard' | 'high'(high = SA JSON/private key)
|
||
secret_ref TEXT NOT NULL, -- 指向 Workers Secrets 的 env var 名(如 CRED_TELEGRAM_BOT_TOKEN_XXXXXXXX;不是密文本體)
|
||
created_at INTEGER NOT NULL,
|
||
last_used_at INTEGER, -- 執行注入時更新(治理面 last_used 顯示用)
|
||
PRIMARY KEY (api_key, name)
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_cred_apikey ON credentials(api_key);
|