10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 36.3 mb
PDF (A4)- 36.3 mb
手册页(TGZ)- 236.9 kb
手册页(邮政编码)- 348.5 kb
信息(Gzip)- 3.4 mb
信息(邮政编码)- 3.4 mb
本手册摘录

MySQL 5.7参考手册/InnoDB存储引擎/ InnoDB静止数据加密

14.14 InnoDB静止数据加密

InnoDB支持数据加密file-per-table表空间。

对数据加密

InnoDB使用两层加密密钥体系结构,包括主密钥和表空间的钥匙。当一个表空间加密,一个表空间加密并存储在表空间头是关键。当一个应用程序或身份验证的用户希望访问加密的数据,InnoDB使用主密钥解密表空间的关键。的解密版本表空间关键永远不会改变,但主加密密钥可以根据需要改变。这个动作被称为万能钥匙旋转

数据加密功能依赖于一个密匙环主密钥管理插件。

所有MySQL版本提供keyring_file插件,将密匙环数据存储在一个本地文件服务器主机。

MySQL Enterprise Edition提供了额外的密匙环的插件:

  • keyring_encrypted_file:存储数据以加密的密匙环,有密码保护的文件本地服务器主机。

  • keyring_okv:KMIP 1.1插件使用KMIP-compatible后端密匙环存储产品。支持KMIP-compatible产品包括集中式密钥管理解决方案,比如Oracle关键库,金雅拓KeySecure,泰利斯Vormetric密钥管理服务器和Fornetix密钥编排。

  • keyring_aws:与Amazon Web服务通信密钥管理服务(AWS公里)的后端密钥生成和使用本地文件的密钥存储。

警告

加密密钥管理keyring_filekeyring_encrypted_file插件并不打算作为一个法规遵从性解决方案。安全标准,如PCI FIPS等需要使用密钥管理系统安全、管理和保护关键的加密密钥金库或硬件安全模块(hsm)。

一个安全的、健壮的密钥管理方案是至关重要的安全,遵守各种安全标准。当静止数据加密特性使用集中式密钥管理方案,该特性被称为MySQL企业透明数据加密(语音)

数据加密功能支持高级加密标准(AES)基于块的加密算法。它使用电子码(ECB)块加密模式表空间关键加密和密码块链接(CBC)加密模式数据块加密。

关于数据加密功能的常见问题,明白了部分A.17”, MySQL 5.7 FAQ: InnoDB静止数据加密”

加密的先决条件

  • 一个密匙环插件必须安装和配置。密匙环插件安装在启动时执行使用early-plugin-load选择。早期加载之前确保可用的插件初始化的InnoDB存储引擎。密匙环插件安装和配置说明,请参阅6.4.4部分,“MySQL密匙环”

    只有一个密匙环插件应该启用。使多个密匙环插件不支持的和结果可能不如预期。

    重要的

    一旦加密的表空间中创建一个MySQL实例,加密的密匙环插件加载在创建表空间必须继续在启动时加载使用early-plugin-load选择。未能这样做,当启动服务器并在导致错误InnoDB复苏。

    验证一个密匙环插件被激活时,使用显示插件语句或查询INFORMATION_SCHEMA.PLUGINS表。例如:

    mysql >选择PLUGIN_NAME PLUGIN_STATUS INFORMATION_SCHEMA。插件,PLUGIN_NAME像“密匙环%”;+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | PLUGIN_NAME | PLUGIN_STATUS | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | keyring_file活动| | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  • 对生产数据进行加密时,确保你采取措施以防止损失的主密钥。如果主密钥丢失,数据加密存储在表空间文件是不可恢复的。如果你使用keyring_filekeyring_encrypted_file插件,创建一个密匙环的备份数据文件后立即创建第一个加密的表空间,主密钥前旋转,主密钥后旋转。的keyring_file_data配置选项定义的密匙环的数据文件位置keyring_file插件。的keyring_encrypted_file_data配置选项定义的密匙环的数据文件位置keyring_encrypted_file插件。如果你使用keyring_okvkeyring_aws插件,确保你已经完成了必要的配置。说明,请参阅6.4.4部分,“MySQL密匙环”

使File-Per-Table表空间加密

启用加密新file-per-table表空间指定加密选择在一个创建表声明。下面的例子假设innodb_file_per_table启用。

mysql > CREATE TABLE t1 (c1 INT)加密= ' Y ';

启用加密为现有file-per-table表空间,指定加密选择在一个ALTER TABLE声明。

mysql > ALTER TABLE t1加密= ' Y ';

禁用加密file-per-table表空间,集加密= ' N '使用ALTER TABLE

mysql > ALTER TABLE t1加密= ' N ';

万能钥匙旋转

主密钥应该定期轮换,每当你怀疑被破坏的关键。

万能钥匙旋转是一个原子,实例级操作。每次旋转主密钥,所有表空间MySQL实例的密钥对和保存回各自的表空间的标题。作为一个原子操作,re-encryption所有表空间必须成功钥匙旋转操作启动一次。如果主键旋转打断了服务器失败,InnoDB卷操作在服务器重启。有关更多信息,请参见加密和恢复

旋转主密钥只有改变主密钥和对表空间的钥匙。它不解密或对相关表空间的数据。

旋转主密钥需要超级特权。

旋转主密钥,运行:

mysql >改变实例旋转INNODB万能钥匙;

改变实例旋转INNODB主密钥支持并发DML。然而,它与表空间不能同时运行加密操作,和锁来防止冲突可能出现的并发执行。如果一个改变实例旋转INNODB主密钥操作时,必须完成一个表空间加密操作进行之前,反之亦然。

加密和恢复

如果服务器故障发生在一个加密操作,操作向前滚动当服务器重启。

如果在发生服务器故障时主键旋转,InnoDB继续操作在服务器重新启动。

密匙环插件之前必须加载存储引擎初始化,因此所需的信息解密表空间可以从表中检索数据页标题InnoDB初始化和恢复表空间数据的访问活动。(见加密的先决条件。)

InnoDB初始化和恢复开始,主键旋转操作的简历。由于服务器故障,一些表键可能已经使用新的主密钥加密。InnoDB从每个表空间头读取加密数据,如果数据表明表空间使用旧主人加密密钥加密的关键是,InnoDB检索旧键的密匙环,并使用它来解密表空间的关键。InnoDB然后对表空间使用新的主关键加密密钥和节省re-encrypted表空间关键表空间头。

出口加密的表空间

当导出一个加密的表空间,InnoDB生成一个转移的关键用于加密的表空间的关键。加密和传输密钥存储在表空间关键tablespace_name.cfp文件。这个文件需要加密的表空间文件一起执行导入操作。进口,InnoDB使用传输密钥解密表空间的关键tablespace_name.cfp文件。相关信息,请参阅部分14.6.1.3,“进口InnoDB表”

加密和复制

识别加密的表空间

加密选项中指定创建表ALTER TABLE声明中,这是记录的CREATE_OPTIONS列的INFORMATION_SCHEMA.TABLES。这一列可以查询识别表驻留在加密file-per-table表空间。

mysql >选择TABLE_SCHEMA、TABLE_NAME CREATE_OPTIONS INFORMATION_SCHEMA。表在CREATE_OPTIONS像“%加密%”;+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + | TABLE_SCHEMA | TABLE_NAME | CREATE_OPTIONS | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - | + |测试t1 = " Y " | + |加密- - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +

查询INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES检索信息与一个特定的模式相关联的表空间和表。

mysql >选择空间,名字,从INFORMATION_SCHEMA SPACE_TYPE。INNODB_SYS_TABLESPACES NAME = '测试/ t1 ';+ - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + | | |名称空间SPACE_TYPE | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | 3 |测试/ t1单| | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +

加密使用笔记

  • 计划适当改变现有的表空间时加密选择。表重建使用复制算法。的原地算法不支持。

  • 如果服务器退出或停止正常运行期间,建议重新启动服务器使用相同的加密之前配置的设置。

  • 第一个主密钥生成当第一个新的或现有的表空间是加密的。

  • 主密钥对表空间旋转钥匙但不会改变表空间的关键。改变表空间的关键,必须禁用和启用加密,这是一个算法=复制操作,重建。

  • 如果一个表的创建压缩加密选项,压缩之前执行表空间数据是加密的。

  • 如果一个密匙环数据文件(文件命名的keyring_file_datakeyring_encrypted_file_data)为空或失踪,第一次执行改变实例旋转INNODB主密钥创建一个主密钥。

  • 卸载keyring_filekeyring_encrypted_file插件不移除现有密匙环数据文件。

  • 建议您不是一个密匙环数据文件表空间数据文件相同的目录下。

  • 修改keyring_file_datakeyring_encrypted_file_data设置在运行时或者当重新启动服务器会导致之前加密的表空间变得难以接近,导致数据丢失。

加密的局限性

  • 高级加密标准(AES)是唯一支持的加密算法。InnoDB数据加密使用电子码(ECB)块加密模式表空间关键加密和密码块链接(CBC)加密模式数据块加密。不使用填充与CBC块加密模式。相反,InnoDB确保文本加密是块大小的倍数。

  • 改变加密执行属性表的使用复制算法。的原地算法不支持。

  • 加密只是支持file-per-table表空间。不支持加密等其他表空间类型一般的表空间系统表空间

  • 你不能移动或复制一个从一个加密的表file-per-table表空间的表空间类型不支持加密。

  • 加密只适用于表空间中的数据。在重做日志数据没有加密,undo日志,或二进制日志。

  • 它不允许改变表的存储引擎驻留在,或以前居住在一个加密的表空间。

  • 不支持加密的InnoDB全文添加时隐式地创建索引表全文索引。相关信息,请参阅InnoDB全文索引表