簡體   English   中英

如何控制Access數據庫的用戶權限?

[英]How to control user rights to an Access database?

允許一個用戶寫訪問權限以及其他人對本地網絡上的MS Access數據庫進行只讀訪問的最簡單方法是什么?

我相信我的用戶,但不幸的是,只要取消選擇表的行,Access就會保存對數據的更改。 保存意外擊鍵,用戶不要求保存更改。

關於控制Jet數據存儲的用戶權限的一些想法:

  1. 如果你真的想鎖定它,你永遠不會用Jet管理它,因為它本身就容易受到攻擊,因為用戶必須擁有對MDB文件的WRITE訪問權限。

  2. 如果您滿足於控制前端應用程序中數據的權限,則可以提供不同的前端(一個用於WRITE用戶,另一個用於READ-ONLY)。

  3. 如果您不使用ACCDB格式,則可以使用Jet用戶級安全性。 如果您真的想要鎖定對數據的訪問權限,那么這是一項令人驚訝的復雜技術 - 您必須遵循Jet安全白皮書中的所有說明,或者您的數據將對使用標准Jet工作組文件的任何人開放。 甚至一旦你完成,它是可以破解的(雖然不是沒有花費$$$購買破解軟件)。 順便說一句,Access 2007之前的數據庫密碼完全無用且容易破解。 Access 2007通過提高數據加密級別來增強安全性,但數據庫密碼會導致許多問題,並且不允許您具有多個訪問級別(除非您提供兩個不同的前端使用不同的密碼 - 參見#2)。

  4. 如果您只想使用Jet ULS來控制前端的訪問權限,則可以將用戶添加到組中,然后檢查前端UI對象(即表單)中的組成員身份,並向用戶授予WRITE權限。在提供該級別訪問權限的用戶組中。 最簡單的方法是假設您擁有比具有WRITE權限的用戶更多的READ-ONLY用戶,那就是讓READ-ONLY用戶以默認管理員用戶身份登錄(即,您沒有為他們的設置做任何事情),並擁有WRITE用戶使用WRITE權限以組中的用戶身份登錄。 換句話說,如果它們未以用戶“admin”身份登錄,則它們具有完全WRITE訪問權限。

  5. 另一種方法是使用NTFS安全組。 用於此的API代碼可在Access Web上找到,但它確實需要Windows管理員為您實施。 同樣,您將限制前端應用程序中的訪問權限,而不是實際限制后端MDB中的用戶權限。

只有Jet ULS實際上允許您阻止READ-ONLY用戶(沒有破解您的工作組文件)編輯您的數據。 所有用戶都必須具有對后端MDB的網絡訪問權限,但即使沒有實現Jet ULS的跳躍,也可能使他們難以獲取數據。 以下是執行此操作的一些步驟(是的,所有這些都是“默默無聞的安全”形式,並且只會減慢確定要破解后端的READ-ONLY用戶):

  1. 右鍵單擊后端的每個表,然后打開HIDDEN屬性。 這也可以在代碼中完成(請參閱“幫助”中的SetHiddenAttribute)。 當然,如果最終用戶將其Access選項設置為顯示隱藏表,則不會執行任何操作。 但大多數最終用戶並不知道,如果您的用戶在運行時運行您的應用程序,他們將無法選擇。

  2. 將后端數據庫的“啟動屬性”更改為顯示數據庫窗口,並且使用特殊鍵。 您可以在“AllowBypassKey”的“幫助”主題中找到用於設置啟動屬性的代碼。

  3. 在后端,使用一個命令Quit創建一個名為AutoExec的宏。 禁用特殊鍵后,無法阻止此宏的執行,並且只要用戶嘗試打開后端(即使他們按住SHIFT鍵,即繞過所有啟動例程的標准擊鍵) ,數據庫(和Access的實例)將關閉。

現在,所有這些事情都可以被知道自己在做什么的人解開。 如果你給了我一個實現這些東西的后端,我會在大約5分鍾內進入它,只需在另一個Access數據庫中運行代碼來更改所有這些啟動屬性以便我訪問。

但是您的最終用戶可能沒有那種專業水平。 任何這樣的用戶可能應該是一個WRITE用戶,不是嗎? :)

是的,當然 - 所有這些事情都很容易被任何知道如何做的人所破解。 但是對於擁有合適工具的人來說,在幾秒鍾內闖入你的房子也很容易。 這並不意味着你不會鎖門,即使它不是防盜的防彈保護。

另一個考慮因素是,如果您僅向用戶提供Access運行時而不是完全Access,則他們將無法撤消后端MDB中的任何這些設置。

最后一個:

安全不僅僅是一個技術問題 - 事實上,大部分問題都是人員問題。 為了讓人們完成工作,您必須在一定程度上信任他們,讓他們訪問您的數據。 例如,對於不值得信任的系統管理員的問題沒有技術解決方案,完全保護數據的唯一方法就是根本不給他們任何訪問權限。

最簡單的方法是使用共享權限。 授予對組的寫訪問權限,並將必須寫入該用戶的用戶放入該組。 將其他人放在閱讀組中。 當然,這假設您有一個Windows域。

是一個站點,其中包含有關保護Access數據庫的一些信息。 它處理Access 2000,可能有更多版本的選項。

這是一個厚顏無恥的答案,但如果您需要更好的安全性,請認真考慮升級到更強大的RDBMS。

我認為可以使用ODBC連接將Access用作幾乎所有數據庫的接口。 例如,我已成功配置了一個SQL Server 2008 Express Edition數據庫,其中包含2個用戶,一個讀/寫和一個只讀。 我已經能夠通過打開ODBC數據源從Access連接到數據庫。 因此,用戶可以使用他們熟悉的基於Office的報告生成和郵件合並功能。 但是您希望使用任何數據庫服務器。

這個對話可能有點舊,但由於某些原因,我最近遇到了同樣的問題。 它不適合所有人,因為它不依賴於M $ SQL Server而是依賴於MySQL。 使用MySQL ODBC連接器(可在此處獲取: http//dev.mysql.com/downloads/connector/odbc/ ),並將表存儲在MySQL服務器上。 Access用戶對表的權限將繼承MySQL用戶的權限。 很容易定制......

事實上, 訪問數據庫沒有功能安全性

下面的鏈接銷售將“恢復”您的訪問數據庫的軟件即使它有一個密碼。

他們存在是件好事。 當他們以前的程序員死了,沒有其他人擁有密碼時,他們的程序保存了我的一個客戶的屁股。 由於這個程序,我們無法進入,沒有數據丟失。

http://www.stellarinfo.com/access-recovery.htm

在你想到之前,不,我不為他們工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM