《mysql效能調優與架構設計》筆記:三mysql 安全管理

來源:互聯網
上載者:User

標籤:

4.1資料庫系統安全相關因素

        1,周邊網路

        2,主機:

        3,資料庫本身

            訪問授權相關模組主要是由兩部分組成:

                一個是基本的使用者管理模組:主要負責使用者登入連結相關的基本許可權控制

                另外一個是訪問授權控制模組:隨時隨地檢查已經進門的訪問者,校正他們是否 有訪問所發出請求需要訪問的資料的許可權。通過校正者可順利拿到資料,而未通過校正的訪問者,只能收到“訪問越權了”的相關反饋。

            三道防線圖:

            

        4,代碼:sql注入--危害很大,防不勝防

    4.2許可權系統簡介

        4.2.1,相關許可權資訊主要儲存在幾個被稱為grant tables的系統資料表中。mysql.user,mysql.db,mysql.Host,mysql.table_priv,mysql.column_priv由於許可權表資料量比較小,而且訪問非常頻繁,所以mysql在啟動的時候就會將所有的許可權資訊Load到記憶體中,所以當我們手動修改許可權後要執行FLUSH PRIVILEGES命令來重新載入mysql的許可權資訊。如果用GRANT,REVOKE,DROP USER不需要執行FLUSH PRIVILEGES,這個幾個命令在修改表的時候,記憶體也進行了修改。CREATE USER來添加使用者,注意新添加的使用者僅有初始user許可權,通過CREATE USER 命令也會更新記憶體。推薦使用GRANT,REVOKE,DROP USER,CREATE USER進行許可權控制。

                5.6以上不包含5.6               5.6以上包含5.6   

            

        4.2.2,許可權授予與去除:

            GRANT  授權

            REVOKE 撤回許可權

            更新 GRANT TABLES系列表的。

            給使用者授權的時候,不僅需要指定使用者名稱,還需要指定來訪主機。如果僅僅指定使用者名稱,則mysql則會認為是:‘username‘@‘%‘授權,要去除使用者權限,同樣也要指定來訪主機。

            查看某個使用者權限:"SHOW GRANTS FOR ‘username‘@‘hostname‘;    查詢 grant tables 系列表裡的許可權資訊

        4.2.3,權限等級:MySQL 中的許可權分為五個層級

            1,Global Level:全域控制許可權,所有許可權資訊都儲存在mysql.user表中。

                範圍:所有許可權是針對整個mysqld的,對於資料庫下的所有表及所有欄位都有效。

            2,Global Level主要有如下許可權:

                

            3,要授予Global Level的許可權,則只需要在執行GRANT命令的時候,用*.*來指定適用範圍是Global即可,當有多個許可權需要授予的時候,也並不需要多次授權,只需要將所有需要的許可權通過逗號(,)隔開即可:例如:

            GRANT SELECT,UPDATE,DELETE,INSERT ON *.* TO ‘username‘@‘localhost‘;

            4,Database Level

                在Global Level之下,其他三個level之上

                範圍:指定資料庫下的所有對象

                使用權限設定:與Global Level比,少了一下幾個許可權:CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE,SHOW DATABASES,SHUTDOWN,SUPER,USEAGE,沒有增加任何許可權

                實現方式:兩種:

                    1,GRANT ALTER ON test.* to ‘username‘@‘localhost‘;

                    2,USE DATABASENAME

                         GRANT DROP ON * TO ‘username‘@‘locahost‘;

                    3,在授權的時候,如果授予多個使用者相同的許可權,則可以授權多個使用者

                        GRANT CREATE ON test.* TO ‘username1‘@‘localhost,‘username2‘@‘localhost‘

                        show grants form username@localhost

            5,Table Level

                   範圍:低於Global Level,Database Level,高於Column Level,Routine Level

                   實現:GRANT INDEX ON test.t1 TO ‘USERNAME‘@‘LOCALHSOT‘;

                   使用權限設定:ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT,UPDATE

            6,Column Level:

                    範圍:低於Global,Database,Table level ,高於Routine Level

                    實現:GRANT select(id,value) on test.t2 to ‘ab‘@‘localhsot‘;

                    注意:當某個使用者在向某個表插入(INSERT)資料的時候,如果該使用者在某個列上沒有INSERT許可權,則該列的資料將插入預設值填充

            7,Routeine Level:

                範圍:低於其他4中層級

                使用權限設定:EXECUTE,ALTER ROUTINE兩種

                實現:GRANT EXECUTE ON test.p1 to ‘username‘@‘localhost‘;

            8,grant 許可權:

                擁有grant許可權的使用者,可以將自身所擁有的許可權授權給其他使用者,通常加上:WITH GRANT OPTION字句達到授權的目的。

            9,我們可以通過GRANT ALL 語句授予某個Level的所有可用許可權給某個使用者:

                grant all on test.t4 to ‘abc‘;

            注意:上面的五個許可權中:Table,Column,Routine三者在授權的時候有所依賴的對象必須是存在的,而不像DATABASE level,可以在當前資料庫不存在的時候完成授權

        4.2.4存取控制實現原理:

            1,組成:

                    使用者管理模組:是否存在某個使用者

                        主要就是:user表中的host,username,password這三項

                    存取控制模組:監控來訪者每個動作

                        所有授權使用者都存放在mysql.user表中

                    說明:使用者管理模組決定造訪者能否進門,存取控制模組則決定每個客人能那什麼不能拿什麼

           2,客戶管理模組流程:

                    

            3,許可權控制模組流程:詳細解釋:page45

                    select * from test.t4 where status=‘ss‘;

                    

                
        4.3mysql 訪問授權策略:

            1,瞭解來訪主機:‘username‘@‘%‘授予所有主機許可權

            2,瞭解使用者:唯讀,唯寫,備份,管理,訪問特定資料庫,表

            3,位工作分類

            4,確保絕對必要這擁有grant option許可權


《mysql效能調優與架構設計》筆記:三mysql 安全管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.