A.17 MySQL 5.7 FAQ:InnoDB 静态数据加密


**A.17.1. **
是否为有权查看数据的用户解密了数据?
是。 InnoDB静态数据加密旨在透明地在数据库内应用加密,而不会影响现有应用程序。以加密格式返回数据将破坏大多数现有应用程序。 InnoDB静态数据加密提供了加密的好处,而没有与传统数据库加密解决方案相关的开销,这通常需要对应用程序,数据库触发器和视图进行昂贵且实质性的更改。

**A.17.2. **
InnoDB静态数据加密相关的开销是多少?
没有额外的存储开销。根据内部基准,性能开销总计相差个位数。

**A.17.3. **
InnoDB静态数据加密使用的加密算法是什么?
InnoDB静态数据加密支持基于高级加密标准(AES256)块的加密算法。它使用电子密码簿(ECB)块加密模式进行 table 空间密钥加密,并使用密码块链接(CBC)块加密模式进行数据加密。

**A.17.4. **
是否可以使用第三方加密算法代替InnoDB静态数据加密功能提供的加密算法?
否,无法使用其他加密算法。提供的加密算法被广泛接受。

**A.17.5. **
可以对索引列进行加密吗?
InnoDB静态数据加密透明地支持所有索引。

**A.17.6. **
InnoDB静态数据加密支持哪些数据类型和数据长度?
InnoDB静态数据加密支持所有受支持的数据类型。没有数据长度限制。

**A.17.7. **
网络上的数据是否仍保持加密状态?
从 table 空间文件中读取数据时,将解密由InnoDB静态数据功能加密的数据。因此,如果数据在网络上,则为明文形式。但是,可以使用 MySQL 网络加密对网络上的数据进行加密,该 MySQL 网络加密使用 SSL/TLS 加密往返数据库的数据。

**A.17.8. **
数据库内存是否包含明文或加密数据?
使用InnoDB静态数据加密,将对内存中的数据进行解密,从而提供了完全的透明性。

**A.17.9. **
我如何知道要加密哪些数据?
遵守 PCI-DSS 标准要求信用卡号(主帐号或“ PAN”)以加密形式存储。违反通知法律(例如,CA SB 1386,CA AB 1950 和美国其他 43 个 State 的类似法律)要求对名字,姓氏,驾驶 License 编号和其他 PII 数据进行加密。 2008 年初,CA AB 1298 在 PII 数据中添加了医疗保险信息。此外,行业特定的隐私和安全标准可能要求对某些资产进行加密。例如,诸如药品研究结果,油田勘探结果,财务 Contract 或执法人员的个人数据之类的资产可能需要加密。在医疗保健行业,患者数据,健康记录和 X 射线图像的隐私至关重要。

**A.17.10. **
InnoDB静态数据加密与 MySQL 已经提供的加密功能有何不同?
MySQL 中有对称和非对称加密 API,可用于手动加密数据库中的数据。但是,应用程序必须通过调用 API 函数来 Management 加密密钥并执行所需的加密和解密操作。 InnoDB静态数据加密不需要更改应用程序,对最终用户透明,并提供自动的内置密钥 Management。

**A.17.11. **
可移动 table 空间功能是否可以使用InnoDB静态数据加密?
是。加密的每 table 文件 table 空间支持该功能。有关更多信息,请参见导出加密的 table 空间

**A.17.12. **
压缩是否可以使用InnoDB静态数据加密?
使用InnoDB静态数据加密的 Client 将获得压缩的全部好处,因为压缩是在加密数据块之前进行的。

**A.17.13. **
我可以对加密 table 使用mysqlpumpmysqldump吗?
是。因为这些 Util 创建逻辑备份,所以从加密 table 转储的数据不会被加密。

** A.17.14. *
我如何更改(旋转,重新密钥)主加密密钥?
InnoDB静态数据加密使用两层密钥机制。使用静态数据加密时,各个 table 空间密钥存储在基础 table 空间数据文件的 Headers 中。table 空间密钥是使用主加密密钥加密的。主加密密钥在启用 table 空间加密后生成,并存储在数据库外部。使用ALTER INSTANCE 旋转 INNODB 主密钥语句旋转主加密密钥,该语句生成一个新的主加密密钥,存储该密钥,然后将其旋转使用。

**A.17.15. **
如何将数据从明文InnoDBtable 空间迁移到加密的InnoDBtable 空间?
不需要将数据从一个 table 空间传输到另一个 table 空间。要加密每个 tableInnoDB个文件的 table 空间中的数据,请运行ALTER TABLE tbl_name ENCRYPTION ='Y'。要加密常规 table 空间或mysqltable 空间,请运行ALTER TABLESPACE tablespace_name ENCRYPTION ='Y'。 MySQL 8.0.13 中引入了对常规 table 空间的加密支持。自 MySQL 8.0.16 起,对mysql系统 table 空间的加密支持已可用。

**A.17.16. **
InnoDB静态数据功能是否可以使用 PKSC11 接口将主加密密钥存储在外部设备中?
目前不在。当前,keyring_okv插件支持 KMIP 1.1 协议,该插件可在 MySQL 企业版中使用。