天天看點

生産資料庫是否該對開發人員設限?

話題

topic 一個dba老師正在苦逼地恢複被開發删除的資料。作為一家有100人以上it人員的公司,開發人員是否應該碰生産庫?能做得到不碰嗎?(本期話題貢獻人:楊志洪)

精彩論點  

【楊建榮】root,dba權限嚴格來說都是不能開放的,我們原來電信行業對sys、system都不能開放,會給一個單獨的dba賬戶。

我們的開發是沒有權限的,要做任何核心資料的查詢都得提申請,有一些外圍的會開放隻讀備庫權限,權限精确到對象。我碰到過一個例子,因為需要通路不同使用者下的表,最後dba給所有使用者都是dba角色,不過開發似乎還是沒有意識到。舉個例子,某同僚之前在國内某移動支援,想看看自己的手機号資訊,一個sql語句下去,審計就發郵件了,為什麼要做這個查詢。我知道的做法是個人賬号不開防火牆,隻能通過某個指定的伺服器去通路,可能還要跳幾個網段。

【洪建唯】沒有開發做出來的應用,要dba幹啥?dba本身就是服務性的,再說了資料庫軟體難道不是開發做出來的嗎?開發那套東西是以實作功能為目的的,比如開發工具,uml,各種架構,根本不去考慮sql執行效率之類的,所謂開發團隊必須要有個開發dba輔助,上線後,那是運維dba去負責了。開發出功能,管理出性能開發和運維就是乾和坤的關系。沒有做過開發的dba,不會了解很多東西。系統本身就是一體的,缺哪個東西都很難受的。整個系統必須滿足使用者的願景,使用者看到的體會到的是應用程式本身,根本不知道什麼是資料庫。是以首先需要開發去滿足使用者的功能,純講功能顯然不行,系統必須要穩定,高效,就必須有運維人員。

【kingx】我認為開發不應該碰生産,生産資料庫隻有運維專業dba處理,開發要處理就走流程,把腳本發過來,運維稽核後再執行。如果腳本内容有誤,處理方式是全部復原。而查資料,我是給他們一個adg備庫,考慮資料安全性,也隻是針對個别開發。提供一個桌面虛拟化,限制他們直接取資料,要資料則要走流程。

【lei】開發db與生産db應該實體隔離;開發db的資料庫名應該與生産db不一樣;開發db的上的使用者密碼(root使用者,sys使用者,system使用者,應用程式的使用者)應該與生産db不同。開發工程師如果确需上生産db,需經相關部門上司審批,同時應該有dba陪同并開啟螢幕錄像,并簽訂生死狀:若是錯誤的删除了生産db的資料,一切後果由開發負責。

開發人員不應該有生産資料庫伺服器的登入帳号。資料庫的連接配接權限隻來給相應的應用伺服器,隻有自己的業務帳号連接配接資料庫即可,權限當然是在滿足業務的條件下越小越好,可以通過權限和流程保障,上線的應用通過配管部門上線。這是一個規範,你如果直接操作了,可以通過日志查出來,違反規範受處罰呗。

【太虛山寺】有時開發會以開發環境沒有生産資料,無法錯誤重制為由強行要求開權限。我認為擁有公司級的資料庫規範及其重要,如果賬号密碼開發都知道,萬一開發偷摸上生産搞一下,那麼出了問題dba是死得最快的。而且沒有公司規定的時候,開發要上生産系統攔也攔不住,開發地位比我們高,一句我要上生産系統解決問題,不給上的話最後彙報到管理層錯還是在我。但是如果有了規定,那麼代表上司也認可,再有問題我們就不用擔全責了。

【djs資料庫】開發人員可否碰生産資料,在于這個公司的管理制度。開發人員要具備生産意識,在運維崗位輪崗半年。開發運維人員經常互換,大家目标統一,責任共擔,例如華為。開發,運維,銷售都互相輪崗過(限制在一定比例)。ipd內建的開發模式,ibm推薦的流程。目前很多公司把開發運維人為隔離,卻還是未能避免事件,那麼,大家可否換一個思路管理?就像經常看到文章中描述的,生産降落傘的人自己去試用,這個品質應該很高吧。

【十一月肖邦】一句話,開發使用者是否有dba角色,有的話各位回去打闆子;開發使用者是否有root密碼,開發使用者是否在oracle組裡;有的話,必須要打闆子。必須要限制開發以及應用維護的權限。職責必須和職能分開,不然每天就去扯皮了。攜程是最好的例子。經驗告訴我,環境越複雜,控制必須越嚴格。很多公司開發的權限無比大。root,dba角色絕對不能放給開發。

【tony】rotate不是沒有可能,但一定是在知道範圍下選擇性體驗,非完全替換。uat很重要,不需要有朋生産。開發再怎麼發現資料錯誤都不能碰生産,都需要送出變更申請。由該做的人去做,哪怕隻是一個dml。以前我在甲方時,是需要嚴格制定各種規範的。下面的人多,庫也多,我們當時it人員就差不多1000人,全國估計幾千了,是以權責一定是分離的。每個dba都不可能有每套環境的賬号,甚至ip都通路不了。

運維是一個大課題。運維與研發是互相牽制又互相發展的,而不是互相限制。生産、uat、開發環境都是獨立的,當然每個公司都有自己特殊的地方,有自己不同的管理方式,就看什麼樣的方式是最适合自己公司的。争執是無用的,隻有每個部門從自身找改進的點才是最重要的,是以說it部門是一個複雜的系統,除了規範和制度。當然,各公司的ods和edw是個特例。像華為、海爾、順豐這樣的ods或者edw,開發人員就會有一些權限可以登陸過去(當然不可能是sys之類的,一定是focus自己的那一塊業務)。但是幾個大的銀行倒是沒有發現這個情況。

衆說紛纭     

【香草拿鐵】現在應用疊代很快,是以應用總會有些問題,需要查詢資料以定位問題,但也隻能限于隻讀。個人建議還是要讓專業的人做專業的事。

【田力】不接觸生産很難。兩方面考慮:管理上要有規範。這個規範不是法律,主要目的是為了争取主動權與話語權。技術上還是要有防誤删的手段。

【北極熊】還是要讓專業的人做專業的事。如果開發輪崗運維沒有什麼問題。運維輪崗開發就有問題、需要時間成本很大。

【yellow】開發人員不應該有非隻讀使用者。相當一部分公司的開發承擔着應用運維工作,特别是甲方。都有實名賬戶的。

【alex-t】開發提ticket, dba操作;權限一定要厘清并嚴格執行。

【yiwei du】開發在生産庫上隻能給readonly,備份最好交給dba之外的team。

【robo】回收生産使用者,對開發人員開放隻讀賬戶。

【鳴 謝】

在“dba+社群”各大城市微信群進行的“周末話題”讨論活動中,得到了北京、上海、濟南、福州、杭州、香港六大城市群的聯合發起人以及群友們的積極參與和支援。在此,小編整理成文,并附上所有發表觀點的人員頭像彙總圖,特此鳴謝!

各群話題發起人

生産資料庫是否該對開發人員設限?

發表觀點的群友

生産資料庫是否該對開發人員設限?

<b>本文來自雲栖社群合作夥伴"dbaplus",原文釋出時間:2015-9-28</b>