在 Percona Server for MySQL 中使用 AWS 密钥管理服务配置加密密钥环

在 Percona Server for MySQL 中使用 AWS 密钥管理服务配置加密密钥环

💡 原文英文,约800词,阅读约需3分钟。
📝

内容提要

Percona Server for MySQL 8.0.30现在支持AWS KMS进行数据加密。设置加密需要创建一个只读的清单文件和一个配置文件。清单文件应放置在mysqld安装目录中,配置文件应命名为component_keyring_kms.cnf并放置在插件目录中。确保输入正确的区域、ARN、认证密钥和秘密访问密钥。使用AWS命令行工具测试设置。检查MySQL中的密钥环状态以确保激活。当无法使用保险库时,可以使用AWS KMS进行加密。Percona Distribution for MySQL是一个安全可扩展的开源解决方案。

🔎

延伸解读

为何必须用清单文件加载组件

文章强调,密钥环组件必须通过清单文件加载,而不能使用 INSTALL_COMPONENT 语句。原因是该语句在服务器启动序列中加载组件太晚:组件注册在 mysql.component 表中,而该表在 InnoDB 初始化之后才被加载,但 InnoDB 此时已需要密钥环组件。因此,若用 INSTALL_COMPONENT,InnoDB 可能因缺少密钥环而无法正常启动或加密。正确做法是将清单文件放在 mysqld 安装目录,并设为只读,避免错误日志警告。

配置文件的关键参数与权限要求

配置文件需命名为 component_keyring_kms.cnf 并放在插件目录。其中必须正确填写区域、KMS 密钥 ARN、认证密钥(访问密钥 ID)和秘密访问密钥。文章提醒,生成秘密密钥的用户必须拥有密钥管理服务的访问权限,且访问密钥需具备适当权限。此外,配置文件中的 path 指定密钥环数据文件位置,read_only 设为 false 表示可写。任何配置错误都会导致组件初始化失败,状态显示为 inactive。

验证配置是否生效的方法

设置完成后,可通过两种方式验证:一是使用 AWS 命令行工具运行 aws kms list-keys,确认能列出密钥,证明认证信息有效;二是在 MySQL 中查询 keyring_component_status 表,检查 component_status 是否为 Active。若状态为 inactive,应查看 mysqld 错误日志,通常指向配置文件问题。文章示例中,状态表还显示了组件名称、版本、数据文件路径和 KeyId,便于核对配置是否与预期一致。

适用场景与方案定位

文章指出,AWS KMS 适用于没有 Vault 且希望快速使用密钥进行加密的场景。其工作方式与 keyring_file 类似,但密钥由 AWS KMS 服务加密,而非本地文件。这意味着用户无需自建密钥管理基础设施,即可实现静态数据加密。不过,该方案依赖 AWS 云服务,需确保网络连通性和正确的 IAM 权限。对于已使用 AWS 的环境,这是一种便捷的集成方式;若无法使用 Vault,可将其作为替代方案。

❓

Q&A

Percona Server for MySQL 从哪个版本开始支持 AWS KMS 加密?

从 8.0.30 版本开始,Percona Server for MySQL 支持使用 AWS KMS 组件进行数据静态加密。

如何安装 AWS KMS 密钥环组件?

需要创建两个文件:一个只读的清单文件(如 mysqld.my)放在 mysqld 安装目录,内容指定组件路径;另一个配置文件 component_keyring_kms.cnf 放在插件目录,包含区域、ARN、认证密钥等信息。不要使用 INSTALL_COMPONENT 语句加载。

配置 AWS KMS 密钥环时,配置文件需要包含哪些关键参数?

配置文件 component_keyring_kms.cnf 需包含:region(区域)、kms_key(密钥 ARN)、auth_key(访问密钥 ID)、secret_access_key(秘密访问密钥),以及可选的 path 和 read_only 等。

如何验证 AWS KMS 密钥环组件是否已激活?

在 MySQL 中执行 SELECT * FROM keyring_component_status; 查看 Component_status 是否为 Active。也可用 AWS CLI 命令 aws kms list-keys 测试密钥访问。

使用 AWS KMS 加密时,如果组件状态显示 inactive 该怎么办?

检查 mysqld 错误日志,通常是因为配置文件有误导致组件未初始化。确保清单文件和配置文件格式正确、权限适当,且认证信息有访问 KMS 的权限。

什么场景下适合使用 AWS KMS 而不是 Vault 进行加密?

当没有 Vault 且希望快速使用密钥进行加密时,可以使用 AWS KMS。它类似 keyring_file,但使用 AWS KMS 服务加密密钥。

🏷️

标签

➡️

继续阅读