首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料庫帳號密碼安全設計:雙層加密、職責分離與集中管理架構

     編輯:關於SqlServer

前言

傳統做法在 config 明文儲存 sa 帳密,或僅靠內網隔離,一旦伺服器滲透即全盤洩露。本文提出一套「雙層加密 + 職責分離 + 集中管理」架構:應用程式不存帳密,透過 Web Service 雙層解密取得連線資訊;DBA 單機加密錄入,超級管理員與唯讀查詢帳號嚴格分離,實現帳密全生命週期零明文落地。

架構總覽

安全架構圖

核心流程解析

  1. 應用程式 (App1, App2):config 僅存唯一 Key (由 DBA 發布),呼叫 Web Service 取得加密連線字串。
  2. Web Service (唯讀帳號):使用唯讀資料庫帳號查詢 LinkConfig 視圖,取得 En_LinkIP、En_LinkSa、En_LinkPassWord (已加密),以 | 串聯後二次加密 (不同演算法) 回傳。
  3. 唯讀帳號視圖

  4. 應用程式端 DLL 解密:內建雙層解密演算法,還原明文 IP、帳號、密碼建立連線。
  5. DBA 單機錄入工具:DBA 收集真實帳密,使用單機機密程式加密寫入 LinkConfig 表,生成唯一 LinkName (PK) 給開發人員。開發全程不知真實帳密。
  6. 超級管理員視圖

資料表設計 (LinkConfigTest)

CREATE TABLE [dbo].[LinkConfigTest](
    [Id] INT IDENTITY(1,1) NOT NULL,
    [LinkName] NVARCHAR(50) NOT NULL PRIMARY KEY,  -- 唯一 Key
    [LinkIP] VARCHAR(50) NULL,          -- 明文 IP (僅超管可見)
    [LinkSa] VARCHAR(50) NULL,          -- 明文帳號
    [LinkPassWord] VARCHAR(50) NULL,    -- 明文密碼
    [Description] NVARCHAR(100) NULL,
    [State] INT NULL DEFAULT 0,         -- 0 停用 / 1 啟用
    [StateDescription] NVARCHAR(50) NULL,
    [HostName] NVARCHAR(50) NULL,
    [CreateTime] DATETIME NULL,
    [En_LinkIP] VARCHAR(50) NULL,       -- 加密 IP
    [En_LinkSa] VARCHAR(50) NULL,       -- 加密帳號
    [En_LinkPassWord] VARCHAR(50) NULL  -- 加密密碼
);

關鍵安全強化措施

  1. 非預設埠:LinkIP 含埠號 (如 192.168.1.147,14339),避開 1433。
  2. 二次加密防攔截:Web Service 回傳已雙層加密字串,網路抓包無明文。
  3. Web Service 唯讀帳號:無 INSERT/UPDATE/DELETE 權限,即使服務被攻破亦無法竄改帳密表。
  4. 超級管理員帳號隔離:僅極少數人知悉,與 Web Service 帳號完全分離。
  5. 狀態位即時撤銷:洩露時 DBA 修改 State=0 或刪除記錄,無需通知開發改配置。
  6. 異常捕獲重連:應用層捕獲連線失敗異常,支援 DBA 熱換帳密後自動重試。
  7. 演算法可替換:視圖層預設 MD5,生產環境建議替換為 AES-256 / RSA 等強加密。

測試資料範例

INSERT [LinkConfigTest] ([LinkName],[LinkIP],[LinkSa],[LinkPassWord],[Description],[State],[HostName],[CreateTime],[En_LinkIP],[En_LinkSa],[En_LinkPassWord])
VALUES 
('sd9_DB1','192.168.1.147,14339','sd158admin','sd158admin+-987','內網_DB1',1,'SERVR9','2012-03-07 14:08:52',
 '0xddf4a1c5a5dadc7374a9ca3ed3aa9f6b','0xe319cb7bedd3b0d400c3da3484c6a6e3','0xdc24223e94b4c4d754cfc40230680156'),
('sc13','192.168.1.25,13433','sc13admin','sc13adminasdfg','內網_DB1',1,'BAREOT-4','2012-03-07 14:08:52',
 '0x0f3e6234263b544bbb7861fc3be9d4a9','0xe969c53b6c44990ac38a92f1c6ad2d97','0xac7663644f8de76a3da122257a6593ea');

總結

此架構將「知情者」限縮至 DBA 與極少數超管,「持有者」限於編譯後 DLL 與加密資料表,網路傳輸全程密文,配合職責分離與狀態位緊急撤銷,構建了纵深防禦體系。雖非絕對不可破解,但大幅提升攻擊成本,符合資安分級保護實務需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved