2010-09-06 68 views
0

我有一個Python應用程序設計爲在Linux上作爲服務運行,並且我被要求將它安裝在沒有Linux機器的辦公室中的Windows XP盒子上(對我而言,這使它變得奇怪和令人困惑因爲我幾乎沒有開發Windows的經驗)。如何安全地存儲Windows應用程序的數據庫憑據?

在Linux上,應用程序具有自己的用戶,應用程序和數據庫憑證文件位於只能由該用戶訪問的加密文件夾中。 (我想說我不是一個密碼學家,如果在這個設置中已經有明顯的安全錯誤,我很樂意讓他們指出我!)

我該如何實現在Windows XP機器上通過類似或不同的方式達到同等級別的安全性?也就是說,如何防止那些有權訪問計算機或磁盤的人改變程序或讀取證書?

稍微背景:主機窗口框是一個工作站,每天都有非管理員權限的用戶使用。安全資產是個人數據,大致與學校報告一樣敏感。該應用程序旨在供大約10個使用個人密碼對應用程序進行身份驗證的人員使用(在數據庫中存儲醃製和散列)。

沒有收到答案一個非常類似的問題:

on Windows you would store the credentials in the registry in a location protected by an ACL

但是,它並沒有觸及保護程序文件的方面,並進一步將其似乎假定比我目前享受的更高級別的Windows體驗:)我不知道如何使用ACL保護註冊表項目,也不知道如何才能從我的程序訪問受保護的密鑰。對不熟悉環境的開發人員的簡單說明將不勝感激!

+0

我相信這個問題會更適合http://SuperUser.com因爲你需要做什麼不涉及任何編碼。 – 2010-09-08 10:36:05

+0

我想象出可能需要新代碼訪問以不同格式存儲的安全數據的解決方案,例如。受保護的註冊表項。如果其他人同意在其他地方更合適,我很高興這個問題能夠被遷移。 – 2010-09-08 15:11:50

+1

實際上,我認爲最簡單的方法就是將數據存儲在用戶主目錄下的文件中(應用程序在Windows中也需要自己的用戶,這樣才能很好地工作)。順便說一句對不起,但我沒有足夠的代表投票將其遷移到http://SuperUser.com – 2010-09-09 07:43:00

回答

2

您的問題不清楚您的應用程序的功能以及您的安全要求。我將做出一些假設,並根據這些假設提供答案。如果這些假設不正確,請在評論中澄清,我會更新。

我假設你有一個應用程序:

存儲在工作站上安裝了一個DBMS數據庫
  • 存儲敏感數據
  • 安裝在共享工作站上
  • 每個用戶都有自己的自己的登錄(非管理員)
  • 允許不同的用戶登錄,並與他們的數據interract
  • 用戶運行應用程序了,其連接到服務
  • 服務與數據庫連接,在自己的用戶帳戶

提供數據給用戶

  • 服務上運行。如果這是正確的,那麼你應該不會有太大問題。

    該服務可以在任何帳戶下運行,但它很容易使其在標準之一(本地計算機或網絡服務)下運行。配置數據庫,以便只有該帳戶可以訪問它。在Sql Server中,我只會授予該用戶帳戶(和框中的管理員)對數據庫的登錄和訪問權限。

    這是您需要的唯一安全性,如果用戶不是管理員。現在,當前端連接到服務時,用戶可以提供用戶名/密碼,並且服務可以對存儲在數據庫中的醃製和散列密碼進行認證。所有這一切都是安全的,只要1)每個用戶都有自己的登錄名2)通信是安全的(使用命名管道或SSL)3)沒有virii或鍵盤記錄器在管理員憑證下運行。


    您可以配置服務,以什麼解釋它通過在我的電腦上運行SERVICES.MSC(或右鍵單擊並選擇管理或在管理工具菜單下點擊控制面板中服務或可能下運行不同方式的數量)。

    調出服務列表,右鍵單擊您的應用程序並點擊屬性。從那裏,使它看起來像這樣: alt text

  • +0

    所有的假設都是正確的,直到「服務在自己的用戶帳戶下運行」,只有這樣,因爲我不知道服務是否可以作爲特定用戶運行。你知道我怎麼能指定一個服務運行的用戶?真的很有幫助的答案,謝謝! – 2010-09-09 16:55:45

    +0

    是的,您可以輕鬆配置Windows服務以在任何用戶帳戶下運行。爲此添加了活潑。似乎無法在網上找到friggen文檔! – Will 2010-09-09 18:17:27

    相關問題