<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                Google向MariaDB 10.1.13(暫未Release)貢獻了這個補丁,可以對表/表空間進行加密。 加密過的表可以防止某些非授權用戶訪問或偷取磁盤然后通過訪問原始數據文件來偷取數據。當然,假設你已經把密鑰文件存儲在另一個系統上。但是,使用加密可能會降低差不多10%的性能。目前,只有XtraDB/InnoDB引擎能完全支持加密。 MariaDB在InnoDB/XtraDB中支持兩種方式的加密: Table encryption(表級加密): 只有在創建時指定 PAGE_ENCRYPTION=1 的表才被加密。 Tablespace encryption(表空間加密): 當前實例下的任何文件都被加密(包括日志文件)。 MariaDB中所有的加密算法都是基于AES的。但是你可以在啟動的時候使用 --encryption-algorithm=name 來指定具體哪種基于AES的加密算法,有這些可選: | 選項 | 描述 |? | none | 默認值。不進行任何加密。 |? | aes_cbc | 建議值。這是大部分歐洲政府接受的算法。 |? | aes_ctr | 一種新的塊加密模式,Google自己開發的,并且在他們的MariaDB實例中使用的算法。 |? | aes_ecb | 這種加密模式用于內部計數器計算。你可以用它來加密,但它不能提供強保密性。 | **密鑰的管理** 為了保護加密過的數據,密鑰必須另外保存,不要跟數據文件放在一個地方。默認情況下,MariaDB支持兩種密鑰管理方式,都是以Plugin的方式實現的。 1) file_key_management_plugin file_key_management_plugin 是一個密鑰管理插件,可以從文件中讀取密鑰。這個插件有如下配置選項: file_key_management_plugin_filename=path-to-key-file: 密鑰文件存放的位置 file_key_management_plugin_filekey: 一個可選的Key,用來解密密鑰文件 一個my.cnf配置的例子: ~~~ [mysqld] encryption-algorithm = aes_cbc file_key_management_plugin_filename = /home/mdb/keys.enc file_key_management_plugin_filekey = secret ~~~ 這個密鑰文件(/home/mdb/keys.enc)包含了AES密鑰。128, 192 或 256位密鑰都可以支持。ID有16個字節。 一個密鑰文件內容的例子如下: ~~~ 1;F5502320F8429037B8DAEF761B189D12;770A8A65DA156D24EE2A093277530142 ~~~ 1是密鑰的標識,在建表的時候可以指定使用哪個密鑰; 接著是16字節的ID,最后是一個16字節的AES密鑰。密鑰標識可以從0~255,但是0號密鑰是保留給InnoDB日志文件使用的,不要在建表的時候用。 密鑰文件本身同樣可以加密,file_key_management_plugin_filekey定義的密鑰可以用來解密密鑰文件。OpenSSL命令行工具可以用來創建密鑰文件。例如: ~~~ openssl enc –aes-256-cbc –md sha1 –k secret –in keys.txt –out keys.enc openssl enc –aes-256-cbc –md sha1 –k <initialPwd> –in secret –out secret.enc ~~~ 如果密鑰文件在啟動的時候讀取不到(例如沒提供解密密鑰文件的Key),那么加密功能不再被支持,也無法訪問被加密過的表。 2) example_key_management_plugin 為了獲得真正高強度的加密,密鑰必須周期性的變更。 example_key_management_plugin 是一個實現的例子。用你自己的密鑰管理系統替換這個插件,可以創建一個非常安全的系統,例如從遠程服務器來獲取密鑰。Google內部就是這么做的。 當然,example_key_management_plugin 僅僅是一個例子,你要根據它來編寫你自己的Plugin! **加密數據** 1)表級加密 表級加密意味著你可以選擇哪些表需要加密。這可以讓你在速度和安全性之間獲得平衡。 要使用表級加密,你要這樣做: * 設置 encryption-algorithm 選擇你需要的加密算法; * 載入 file-key-management-plugin 插件或者其他相似的插件,添加 enable-file-key-management-plugin 到你的my.cnf文件。 要加密一個表,你需要在CREATE/ALTER TABLE 語句中使用新的參數: | 選項 | 可選值 | 描述 |? | PAGE_ENCRYPTION | 0 或 1 | 1是啟用這個功能,0是關閉 |? | PAGE_ENCRYPTION_KEY | 0-255 | 密鑰表示。這個值表示用那個密鑰。 | 例如: ~~~ CREATE TABLE T (id int, value varchar(255)) PAGE_ENCRYPTION=1 PAGE_ENCRYPTION_KEY=17; ~~~ 這個建表語句會創建一個表T,使用標識為17的密鑰加密。 ~~~ ALTER TABLE T PAGE_ENCRYPTION=1 PAGE_ENCRYPTION_KEY=18; ~~~ 更改表T使用標識為18的密鑰來加密。如果你之前加密過這張表,那會首先解密這張表再重新加密。 ~~~ ALTER TABLE T page_encryption=0; ~~~ 關閉表T的加密功能。如果之前是加密的,那這個操作會做解密。 2) 表空間加密 要使用加密表空間,需要這樣做: * 設置 encryption-algorithm 來選擇加密算法; * 設置 innodb-encrypt-tables 為 1; * 載入 file-key-management-plugin 插件或者其他相似的插件,添加 enable-file-key-management-plugin 到你的 my.cnf 文件; * 啟用 innodb-tablespaces-encryption 插件; * 啟用 innodb-tablespaces-scrubbing 插件。 有下列變量可以配置加密項: | 變量 | 可選值 | 描述 |? | innodb-encrypt-tables | Boolean (0 or 1) | 是否在存儲引擎加密所有表 |? | innodb-encryption-rotate-key-age | 秒數 | 如果獲取到了新密鑰多久更新一次頁面加密 |? | innodb-encryption-rotation-iop | IOPS數 | 后臺使用多少IOPS來做頁面加密更新 |? | innodb-encryption-threads | 線程數 | 用多少個后臺線程來做頁面加密更新和清理 |? | innodb-background-scrub-data-check-interval | 秒數 | 隔多久檢查空間是否需要清理 |? | innodb-background-scrub-data-compressed | Boolean (0 or 1) | 打開通過后臺線程來清理壓縮數據 |? | innodb-background-scrub-data-interval | 秒數 | 隔多久調用一次清理 |? | innodb-background-scrub-data-uncompressed | Boolean (0 or 1) | 打開通過后臺線程來清理未壓縮數據 | 清理(Scrubbing)意味著有一個后臺線程定期的掃描所有的表并且對所有頁面升級壓縮密鑰。 配置表空間加密的示例 my.cnf: ~~~ [mysqld] encryption-algorithm=aes_ctr innodb-tablespaces-encryption innodb-tablespaces-scrubbing innodb-encrypt-tables innodb-encryption-threads=4 ~~~ **加密和壓縮** 加密和壓縮(配合FusionIO使用的功能,[之前的月報介紹過](http://mysql.taobao.org/index.php/MySQL%E5%86%85%E6%A0%B8%E6%9C%88%E6%8A%A5_2014.08#MariaDB.C2.B7.E5.88.86.E6.94.AF.E7.89.B9.E6.80.A7.C2.B7FusionIO.E7.89.B9.E6.80.A7.E6.94.AF.E6.8C.81))可以同時使用。這可以讓MariaDB先壓縮數據然后再做加密,這種情況下可以很大的節省存儲空間,并且數據更難被解密。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看