給用戶或程序配置的權限超出規定的級別,會造成數據丟失或數據盜竊,給企業造成損失。允許過度頻繁的數據讀取也會影響性能,因為用戶并不會注意運行查詢的類型。在美國,政府還有相應的法規(如PCI,HIPAA,SOX等),如果沒有按照訪問權限規定進行設置,可能面臨高額罰款,甚至入獄。
這就是為什么我們要遵循最小權限原則(Principle of Least Privilege)。根據維基的定義,“在計算機科學以及其它領域中,最小權限原則是要求計算環境中的特定抽象層的每個模塊如進程、用戶或者計算機程序只能訪問當下所必需的信息或者資源。賦予每一個合法動作最小的權限,就是為了保護數據以及功能避免受到錯誤或者惡意行為的破壞。”該原則說得很清楚,只能賦予所需(required)和合理(justified)的最低權限。關鍵詞是所需和合理二詞。DBA會收到大量開通權限的請求。如果DBA開通了訪問生產數據庫的權限,就應該有能力解釋為什么他們開通了這樣的權限,說清楚為什么這是所需的,為什么是合理的。
你可能經常聽到這樣的說法,說非生產環境中沒有能夠支持他們想查詢語句的功能或數據。或者,很難進行他們想要運行的測試或調查。如果非生產環境不足以滿足這樣的需求,正確的辦法是解決非生產環境的不足。如果按照正確的方法很難完成你的工作,那就換份簡單些的工作。事實上,很多人告訴你只能在生產環境中才完成的工作,卻有大量高技能的專家能夠在非生產環境中完成。
我曾被臨時借調去接手一個大型商務智能應用的運營。接管沒有多久,我發現開發人員都有SysAdmin的系統管理員訪問權限,而且還可以自己部署新的程序。我立刻刪除了所有開發人員訪問生產的權限,并通知他們。當然這讓很多人不高興,但之后他們也意識到,我做的是正確的,而且幾乎沒有人和我來進行爭吵。
接下來我負責運營該應用程序的三個月內,開發工程師團隊也證明他們具備成為一個真正企業級隊伍的能力。但之后該公司招到了一名全職DBA,六個月后,聽說事情又恢復到以前的狀態,開發人員又有了SysAdmin的權限,各自進行各自的部署。DBA辯解道,他對于這些請求沒法說不,是開發人員迫使他這樣做的。這個故事只是想說,DBA只要自己本事過硬,就可以堅持正確的方式。
DBA應該承擔起判斷是否應該給與權限的責任,確保遵循最小權限原則,否則,因為這個失誤被公司開除,也不算冤枉。