Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  MySQL 8.4 Frequently Asked Questions  /  MySQL 8.4 FAQ: InnoDB Data-at-Rest Encryption

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

A.17.1. 授权用户是否可以查看解密的数据?
A.17.2. InnoDB静态加密与解密的开销是什么?
A.17.3. InnoDB静态加密使用什么加密算法?
A.17.4. 是否可以使用第三方加密算法来代替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. 可以使用transportable tablespaces功能与InnoDB静态加密一起使用吗?
A.17.12. 是否可以使用压缩功能与InnoDB静态加密一起使用?
A.17.13. 是否可以使用mysqldump工具与加密表一起使用?
A.17.14. 如何更改(旋转、重新密钥)主加密密钥?
A.17.15. 如何将数据从明文InnoDB表空间迁移到加密InnoDB表空间?

A.17.1.

是否对授权用户解密数据?

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

A.17.2.

InnoDB静态数据加密相关的开销是什么?

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

A.17.3.

InnoDB静态数据加密相关的加密算法是什么?

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

A.17.4.

是否可以使用第三方加密算法来代替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标准要求信用卡号(Primary Account Number,简称PAN)以加密形式存储。泄露通知法(例如CA SB 1386、CA AB 1950等)要求加密姓名、姓氏、驾驶执照号码和其他个人身份信息。此外,行业特定的隐私和安全标准可能需要加密某些资产。例如,资产如制药研究结果、石油田勘探结果、金融合同或执法人员的个人数据可能需要加密。在医疗行业,患者数据、健康记录和X射线图像的隐私非常重要。

A.17.10.

与MySQL已经提供的加密函数相比,InnoDB静态数据加密有什么不同?

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

A.17.11.

可移植表空间功能是否与InnoDB静态数据加密兼容?

是的。它支持加密的文件每表表空间。有关更多信息,请参阅Exporting Encrypted Tablespaces

A.17.12.

压缩是否与InnoDB静态数据加密兼容?

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

A.17.13.

是否可以使用mysqldump与加密表?

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

A.17.14.

如何更改(旋转、重新密钥)主加密密钥?

InnoDB 静态加密使用双层密钥机制。当使用静态加密时,单个表空间密钥存储在基础表空间数据文件的头部中。表空间密钥使用主加密密钥进行加密。主加密密钥是在启用表空间加密时生成的,并存储在数据库外部。主加密密钥使用 ALTER INSTANCE ROTATE INNODB MASTER KEY 语句旋转,生成新的主加密密钥,存储密钥,并将其旋转到使用中。

A.17.15.

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

不需要将数据从一个表空间传输到另一个表空间。要加密 InnoDB 文件每个表表空间中的数据,请运行 ALTER TABLE tbl_name ENCRYPTION = 'Y'。要加密通用表空间或 mysql 表空间,请运行 ALTER TABLESPACE tablespace_name ENCRYPTION = 'Y'。从 MySQL 8.0.13 开始支持通用表空间的加密支持,从 MySQL 8.0.16 开始支持 mysql 系统表空间的加密支持。