2008-11-24 57 views
5

我認爲自己在應用程序設計方面相對比較熟練,但我從未必須使用敏感數據。我一直在思考審計線索的最佳實踐以及如何實施它們。我現在不必這樣做,但如果他們要求我爲他們做一些工作,能夠自信地與醫療公司談話會很好。假設我們有一個「學校」數據庫,其中「教師」,「班級」,「學生」全部歸一化爲多對多「成績」表格。你會記錄什麼?每個在「成績表」上插入/更新?只有更新(例如,一個孩子打破了,想要改變成績,這應該發出紅旗)?這是否完全取決於人們想要的偏執?有最佳做法嗎?審計跟蹤和實施SOX/HIPAA /等敏感數據的最佳實踐

這是應該在數據庫中完成的事情嗎? (每個敏感SELECT的觸發器,它將一行插入到'audit'表中記錄每個查詢?)應該記錄什麼? Oracle/DB2中是否有自動生成的功能可以幫您實現?這應該是應用方面的邏輯嗎?

如果任何人有關於如何處理敏感數據的任何正式文檔/書籍(不完全符合DoD「可信計算」規範,但符合該規範:P),我將不勝感激。如果這個問題非常模糊,我很抱歉。我意識到這個因應用而異。我只想聽聽你處理敏感數據的詳細經驗。

回答

3

Oracle有一個名爲Oracle Audit Vault的產品 - DB2可能具有相同的功能。

您應該從預防開始。系統不應允許無效操作。期。如果系統允許需要監控的「可疑」行爲,那就是「業務邏輯」,那麼您可能會更好地執行其他業務邏輯。

如果您想在數據庫中執行某些操作,可以查看日誌傳送(術語可能與RDBMS到RDBMS不同)。基本上,任何DML操作都會記錄到文件中。您可以將此信息用於備份和時間點恢復,即使對於複製/ HA /故障轉移/等等。如果您將日誌發送到單獨的「可信任」系統(即日誌傳送過程具有創建新日誌文件但不修改現有信息的權限)的風格,則您已具有原始審覈功能。如果你以一種安全的方式(即認證,不可否認)做到這一點,你甚至可能會非常接近「合規性」:-p

當然,篩選大量INSERT/UPDATE/DELETE語句是不是最複雜的工作方式。

4

首先要了解的是您選擇的DBMS的本地審計功能。這些細節有所不同,但通常提供配置審覈操作的方式,併爲其生成的審覈記錄提供安全存儲。

接下來要理解的是您想要審覈的內容。例如,對於HIPAA和SOX,您可能正在查看PII - 個人識別信息。請記住,有人訪問奧巴馬的電話記錄,或各種名人病歷,或......因爲系統審計人員閱讀了這些記錄,而且審計分析官員(AAO)發現人們訪問了名人記錄誰沒有特別授權這樣做。因此,這些系統必須記錄訪問每條記錄的人員,並發現何時這樣做的用戶沒有真實的業務理由。在這些情況下,看起來用戶已經閱讀了記錄的權限,所以如果他們的日常職責要求他們查看記錄,他們可以這樣做。但是,當他們不需要這樣做時,他們就會濫用權力並受到適當的制裁(直至並且包括失去工作)。

這意味着你可能不想跟蹤誰訪問記錄狀態代碼和全名(以及其他關於狀態的其他位信息)的狀態表。這份清單沒有任何保密信息 - 讀者閱讀並不重要。當然,幾乎沒有人應該寫信給它;狀態列表不會經常更改 - 但可以通過從每個人撤銷表上的更新和刪除權限來處理。

OTOH,您可能確實希望記錄誰訪問醫療記錄(HIPAA)中的記錄,或誰修改會計系統(SOX)中的數據。您可能會也可能不需要擔心讀取會計數據的人;很多都可以通過基本權限來處理(會計人員有權限,IT人員不會)。但是,審計始終是一道額外的防線。

請記住,審計記錄沒有任何幫助,如果他們從來沒有看過。一般而言,審計會降低系統的速度(僅僅是因爲它在寫審計記錄時會做更多的工作);在決定實施審計策略之前,理解其速度有多慢是非常重要的。但是,有些事情比應用程序更加重要,其中一件事就是讓自己和其他員工擺脫監獄。審計可能是必要的,以確保發生。