我想,每個人心裡都清楚,要想授權最簡單最簡單方便,維護工作量最少,那自然是將所有許可權都授予所有的使用者來的最簡單方便了。但是,我們大家肯定也都知道,乙個使用者所用有的許可權越大,那麼他給我們的系統所帶來的潛在威脅也就越大。所以,從安全方面來考慮的話,許可權自然是授予的越小越好。乙個有足夠安全意識的管理員在授權的時候,都會只授予必要的許可權,而不會授予任何多餘的許可權。既然我們這一章是專門討論安全的,那麼我們現在也就從安全的角度來考慮如何設計乙個更為安全合理的授權策略。
首先,需要了解來訪主機。
由於 mysql 資料庫登入驗證使用者的時候是出了使用者名稱和密碼之外,還要驗證**主機。所以我們還需要了解每個使用者可能從哪些主機發起連線。當然,我們也可以通過授權的時候直接通過「%」萬用字元來給所有主機都有訪問的許可權,但是這樣作就違背了我們安全策略的原則,帶來了潛在風險,所以並不可取。尤其是在沒有區域網的防火牆保護的情況下,更是不能輕易允許可以從任何主機登入的使用者存在。能通過具體主機名或者 ip 位址指定的盡量通過使用具體的主機名和 ip 位址來限定來訪主機,不能用具體的主機名或者 ip 位址限定的也需要用盡可能小的通配範圍來限定。
其次,了解使用者需求。
既然是要做到僅授予必要的許可權,那麼我們必須了解每個使用者所擔當的角色,也就是說,我們需要充分了解每個使用者需要連線到資料庫上完成什麼工作。了解該使用者是乙個唯讀應用的使用者,還是乙個讀寫都有的帳戶;是乙個備份作業的使用者還是乙個日常管理的帳戶;是只需要訪問特定的某個(或者某幾個)資料庫(schema),還是需要訪問所有的資料庫。只有了解了需要做什麼,才能準確的了解需要授予什麼樣的許可權。因為如果許可權過低,會造成工作無法正常完成,而許可權過高,則存在潛在的安全風險。
再次,要為工作分類。
為了做到各司其職,我們需要將需要做的工作分門別類,不同類別的工作使用不同的使用者,做好使用者分離。雖然這樣可能會帶來管理成本方面的部分工作量增加,但是基於安全方面的考慮,這部分管理工作量的增加是非常值得的。而且我們所需要做的使用者分離也只是乙個適度的分離。比如將執行備份工作、複製工作、常規應用訪問、唯讀應用訪問和日常管理工作分別分理出單獨的特定帳戶來授予各自所需許可權。這樣,既可以讓安全風險盡量降低,也可以讓同類同級別的相似許可權合併在一起,不互相交織在一起。對於 process,file 和super 這樣的特殊許可權,僅僅只有管理類帳號才需要,不應該授予其他非管理帳號。
最後,確保只有絕對必要者擁有 grant option 許可權。
之前在許可權系統介紹的時候我們已經了解到 grant option 許可權的特殊性,和擁有該許可權之後的潛在風險,所以在這裡也就不再累述了。總之,為了安全考慮,擁有 grant option許可權的使用者越少越好,盡可能只讓擁有超級許可權的使用者才擁有 grant option 許可權。
mysql 主外來鍵 策略 mysql外來鍵策略
1.外來鍵 建表時新增外來鍵 constraint 外鍵名 foreign key 從表字段 references 主表字段 級聯操作 create table dage create table xiaodi dage idint primary key,xiaodi id int,namecha...
mysql 優化策略 mysql的優化策略有哪些
第一 優化你的sql和索引 1.善用explain,看看自己寫的sql到底要涉及到多少表,多少行,使用了那些索引,根據這些資訊適當的建立索引 2.善用不同的儲存引擎,mysql有多種不同的儲存引擎,innodb,aria,memory根據需要給不同的表選擇不同的儲存引擎,比如要支援transacti...
mysql禁止訪問 mysql禁止外部訪問解決方案
本文主要講述了當mysql禁止外部訪問的解決方案,具有一定的收藏價值,有需要的朋友了解一下吧。1.在埠已經開放的情況下,ubuntu mysql 3306允許遠端訪問 vim etc mysql mysql.conf.d mysqld.cnf 注釋 bind address 127.0.0.1 2....