Database-Administration

Web應用程序訪問的數據庫和數據庫使用者的命名約定?

  • July 23, 2011

在安裝使用單個使用者與單個數據庫(例如 MySQL,但這也可能適用於其他 RDBMS)的 Web 應用程序時,您通常會遇到一系列事件,例如:

CREATE DATABASE wordpress CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'localhost' IDENTIFIED BY 'hunter2';

一些指南建議對數據庫名稱使用不同的使用者名,而其他指南建議使用不同的名稱,例如使用者的“appuser”和數據庫名稱的“app”。

使用相同的名稱是否有任何明顯的技術缺點?是否有任何地方可能會因為這樣做而造成混亂?

編輯:我知道這是有問題的安全做法,您應該將您的數據庫命名為fhqwhgads和您的使用者flobadob;但是,(a) 晦澀難懂是一個值得懷疑的工具,並且 (b) 這是每個 webapp 在其文件中給出的範例。

使用與數據庫名稱相同的使用者名的缺點是太明顯了。如果您查看訪問日誌,您會看到攻擊者經常嘗試該組合,如果您獲得正確的名稱,您已經參與其中。除此之外,您使用的名稱幾乎沒有區別,儘管有一些話要說因為也不使用字典單詞。

混淆數據庫提供大約 15 到 30 秒的防禦時間,以防出現妥協和大約 1234783562387561235 小時的挫敗感。

我認為您將角色與使用者名相關聯。就像是:

app_role

或者:

wordpress_www
wordpress_dba
wordpress_cron

如果我看到一個wordpress使用者,我就知道有些不對勁。使用*_dba約定有助於讓人們明白網路使用者不應該擁有數據庫對象,只有*_dba’ 應該擁有。對於使用者,您只需使用他們的站點使用者名。像這樣的簡單約定使管理權限變得容易,尤其是與SCHEMAs.

這是我正在研究的一個範例項目,它正是這樣做的:

https://github.com/sean-/flask-skeleton/blob/master/sql/create_roles.sql

https://github.com/sean-/flask-skeleton/blob/master/sql/perms.sql

引用自:https://serverfault.com/questions/276642