Documentation Home
MySQL 8.0 参考手册  / 附录 A MySQL 8.0 常见问题解答  /  A.17 MySQL 5.7 FAQ:InnoDB 静态数据加密

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

A.17.1. 是否为有权查看数据的用户解密数据?
A.17.2. 与 InnoDB 静态数据加密相关的开销是多少?
A.17.3. InnoDB 静态数据加密使用的加密算法是什么?
A.17.4. 是否可以使用 3rd 方加密算法代替 InnoDB 静态数据加密功能提供的算法?
A.17.5。 索引列可以加密吗?
A.17.6. InnoDB 静态数据加密支持哪些数据类型和数据长度?
A.17.7. 数据在网络上是否保持加密状态?
A.17.8。 数据库内存是否包含明文或加密数据?
A.17.9. 我如何知道要加密哪些数据?
A.17.10。 InnoDB 静态数据加密与 MySQL 已经提供的加密功能有何不同?
A.17.11. 可传输表空间功能是否适用于 InnoDB 静态数据加密?
A.17.12。 压缩是否适用于 InnoDB 静态数据加密?
A.17.13. 我可以对加密表使用 mysqlpump 或 mysqldump 吗?
A.17.14. 如何更改(轮换、重新加密)主加密密钥?
A.17.15。 如何将数据从明文 InnoDB 表空间迁移到加密的 InnoDB 表空间?
A.17.16. InnoDB 静态数据功能是否可以使用 PKSC11 接口将主加密密钥存储在外部设备中?

A.17.1.

是否为有权查看数据的用户解密数据?

是的。InnoDB静态数据加密旨在在不影响现有应用程序的情况下透明地在数据库中应用加密。以加密格式返回数据会破坏大多数现有应用程序。 InnoDB静态数据加密提供了加密的好处,而没有与传统数据库加密解决方案相关的开销,而传统数据库加密解决方案通常需要对应用程序、数据库触发器和视图进行昂贵且大量的更改。

A.17.2.

InnoDB 与静态数据加密 相关的开销是多少?

没有额外的存储开销。根据内部基准,性能开销相差个位数百分比。

A.17.3.

静态数据加密使用哪些加密算法 InnoDB

InnoDB静态数据加密支持高级加密标准 (AES256) 基于块的加密算法。它使用电子密码本 (ECB) 块加密模式进行表空间密钥加密,使用密码块链接 (CBC) 块加密模式进行数据加密。

A.17.4.

是否可以使用第 3 方加密算法代替静态InnoDB 数据加密功能提供的算法?

不,不可能使用其他加密算法。提供的加密算法被广泛接受。

A.17.5。

索引列可以加密吗?

InnoDB静态数据加密透明地支持所有索引。

A.17.6.

InnoDB 静态数据加密支持 哪些数据类型和数据长度?

InnoDB静态数据加密支持所有支持的数据类型。没有数据长度限制。

A.17.7.

数据在网络上是否保持加密状态?

InnoDB当从表空间文件中读取数据时,会解密由静态数据功能 加密的数据。因此,如果数据在网络上,则为明文形式。但是,网络上的数据可以使用 MySQL 网络加密进行加密,它使用 SSL/TLS 对进出数据库的数据进行加密。

A.17.8。

数据库内存是否包含明文或加密数据?

通过静态InnoDB数据加密,内存中的数据被解密,从而提供完全的透明性。

A.17.9.

我如何知道要加密哪些数据?

符合 PCI-DSS 标准要求信用卡号(主帐号,或“PAN”)以加密形式存储。违规通知法(例如,CA SB 1386、CA AB 1950 以及美国 43 多个州的类似法律)要求对名字、姓氏、驾照号码和其他 PII 数据进行加密。2008 年初,CA AB 1298 将医疗和健康保险信息添加到 PII 数据中。此外,行业特定的隐私和安全标准可能需要对某些资产进行加密。例如,药物研究成果、油田勘探成果、金融合同或执法线人的个人数据等资产可能需要加密。在医疗保健行业,

A.17.10。

静态InnoDB数据加密与 MySQL 已经提供的加密功能有何不同?

MySQL 中有对称和非对称加密 API,可用于手动加密数据库中的数据。但是,应用程序必须管理加密密钥并通过调用 API 函数执行所需的加密和解密操作。InnoDB静态数据加密不需要更改应用程序,对最终用户透明,并提供自动化的内置密钥管理。

A.17.11.

可传输表空间功能是否适用于静态 InnoDB数据加密?

是的。它支持加密的 file-per-table 表空间。有关详细信息,请参阅 导出加密表空间

A.17.12。

压缩是否适用于静态InnoDB 数据加密?

使用静态InnoDB数据加密的客户可以获得压缩的全部好处,因为压缩是在数据块加密之前应用的。

A.17.13.

我可以使用mysqlpumpmysqldump加密表吗?

是的。因为这些实用程序创建逻辑备份,所以从加密表中转储的数据未加密。

A.17.14.

如何更改(轮换、重新加密)主加密密钥?

InnoDB静态数据加密使用两层密钥机制。使用静态数据加密时,各个表空间密钥存储在基础表空间数据文件的标头中。表空间密钥使用主加密密钥加密。主加密密钥在启用表空间加密时生成,并存储在数据库外部。使用ALTER INSTANCE ROTATE INNODB MASTER KEY语句轮换主加密密钥,生成新的主加密密钥,存储密钥,并将密钥轮换使用。

A.17.15。

如何将数据从明文InnoDB 表空间迁移到加密InnoDB表空间?

不需要将数据从一个表空间传输到另一个表空间。要加密InnoDB file-per-table 表空间中的数据,请运行 . 要加密通用表空间或 表空间,请运行 . MySQL 8.0.13 中引入了对通用表空间的加密支持。从 MySQL 8.0.16 开始,对系统表空间的加密支持 可用。 ALTER TABLE tbl_name ENCRYPTION = 'Y'mysqlALTER TABLESPACE tablespace_name ENCRYPTION = 'Y'mysql

A.17.16.

静态数据功能能否InnoDB使用 PKSC11 接口将主加密密钥存储在外部设备中?

不是在这个时候。目前,该keyring_okv插件支持 KMIP 1.1 协议,可用于 MySQL 企业版。