跳到主要內容

發表文章

目前顯示的是有「SQL 子集分類法」標籤的文章

SQL 子集分類法實戰指南:DDL、DML、DCL 權限拆分與最低權限原則資安防護

為什麼資料庫權限管理至關重要? SQL 並非單一語言,而是由五大子集組成的語法體系。 錯誤的權限配置 是 SQL Injection 攻擊得逞的主因。掌握子集分類,才能精準落實最低權限原則。 SQL 五大子集與職責切分 SQL 子集分類法 將語法依功能拆分為五類: DDL (CREATE、ALTER、DROP,定義結構)、 DML (INSERT、UPDATE、DELETE,操作資料)、 DQL (SELECT,查詢資料)、 DCL (GRANT、REVOKE,存取控制)、 TCL (COMMIT、ROLLBACK,交易控制)。資安核心在於 職責隔離 :應用程式帳號僅持有 DML/DQL 權限,DDL 與 DCL 應由專屬 DBA 帳號管理。攻擊者即便注入惡意 SQL,也無法執行 DROP TABLE 或竄改權限設定,大幅縮小攻擊面。 最低權限原則實作 以 PostgreSQL 為例,建立應用程式帳號時僅授予目標 Schema 的 DML/DQL 權限。DDL 操作保留給 Migration 專用帳號,並在 CI/CD 流程結束後立即撤銷連線。 DCL 操作(GRANT/REVOKE) 僅由超級使用者執行,且須留下完整 Audit Log。這三層帳號切分能有效防範橫向移動攻擊。 -- 應用程式帳號:僅 DML / DQL GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA app TO app_user; -- Migration 帳號:僅 DDL,用後撤銷 GRANT CREATE ON SCHEMA app TO migration_user; REVOKE CREATE ON SCHEMA app FROM migration_user; -- 執行完畢後立即撤銷 💡 重點整理 子集分類 :DDL 定結構、DML 操作資料、DQL 查詢、DCL 控權限、TCL 管交易。 帳號隔離 :應用程式帳號絕對不持有 DDL/DCL 權限。 即時撤銷 :Migration 帳號於 CI/CD 完成後立刻收回 DDL 授權。 Audit Log :所有 DCL 操作須強制記錄,供事後稽核追蹤。 SQL 子集分類...