在 Azure Key Vault 中存储 MySQL Enterprise 加密密钥

Posted

技术标签:

【中文标题】在 Azure Key Vault 中存储 MySQL Enterprise 加密密钥【英文标题】:Store MySQL Enterprise encryption key in Azure Key Vault 【发布时间】:2021-03-16 20:25:12 【问题描述】:

mysql Server 企业版与 Hashicorp 集成以加密静态数据。加密密钥存储在 HashiCorp 保管库中,如 MySQL documentation 中所述。

根据 HashiCorp 文档[1][2],我们可以使用 Azure Key Vault 来存储机密。

是否可以集成 MySQL - HashiCorp - Azure Key Vault 所以

MySQL 企业版使用 HashiCorp 加密 加密密钥存储在 AKV 中。

编辑更多细节:我已经在 kv(Hashicop) 保险库中保存和读取 MySQL 加密密钥。但我想配置为从 Azure Key Vault 读取和存储此密钥。

像这样配置 MySQL 服务器:

[mysqld]

early-plugin-load=keyring_hashicorp.so

keyring_hashicorp_role_id='XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX'

keyring_hashicorp_secret_id='XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX'
keyring_hashicorp_store_path='/azure/mysql'

在 Azure 中,我已经设置了

vault read azure/creds/my-role
Key                Value
---                -----
lease_id           azure/creds/my-role/XXXXXXXX
lease_duration     1h
lease_renewable    true
client_id          XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX
client_secret      XXXXXXXX

如何设置keyring_hashicorp_store_path 以从 Azure 获取密钥?

我找不到任何配置选项、教程或文档来使这三者协同工作。

【问题讨论】:

您不会看到这一点,因为它通常违反身份验证最佳实践。 docs.microsoft.com/en-us/azure/key-vault/general/… 在生产环境中,您总是希望使用托管标识或带有证书的服务主体。我有一个偷偷摸摸的怀疑,你实际上是在问如何在本地开发期间轻松地从开发人员凭据切换到生产的应用程序凭据?看看这个:docs.microsoft.com/en-us/azure/key-vault/general/… 或者这可能更多是关于“静态加密”,然后是“应用程序凭据”。 docs.microsoft.com/en-us/azure/mysql/… 根据您要保护的内容以及更重要的是何时或在 DevOps 中的哪个周期,您可能会对基于 Azure 资源管理器的新 Azure RBAC 预览版系统非常感兴趣。 docs.microsoft.com/en-us/azure/key-vault/general/rbac-guide 【参考方案1】:

是的,这是可能的。我假设您的意思是为 HashiCorp Vault 存储一些启封密钥,用于在您需要访问密钥时启封保管库......以及您希望将这些启封密钥存储在 Azure Key Vault 等另一个保管库中的位置?与任何 Key Vault 一样,您几乎可以在其中存储任何您想要的任何密钥、值,甚至是小型文本文档,直至达到 Vault 的最大安全加密范围的限制(请参阅每个服务单独提供的加密密钥存储的文档,或寻求他们的支持)

需要注意的是,MySQL 的 HashiCorp 插件也是这样说的:

在生成这些 AppRole 角色 ID 和秘密 ID 凭据后,它们预计将无限期保持有效。它们不需要再次生成,并且可以使用它们配置 keyring_hashicorp 插件以持续使用。有关 AuthRole 身份验证的更多信息,请访问https://www.vaultproject.io/docs/auth/approle.html

【讨论】:

以上是关于在 Azure Key Vault 中存储 MySQL Enterprise 加密密钥的主要内容,如果未能解决你的问题,请参考以下文章

在 Azure Key Vault 中存储 SQL 数据库连接字符串

安全地存储 Azure Key Vault clientSecret

将 appsettings.json 文件中的机密存储在 Azure Key Vault 上的 .Net 控制台应用程序中

如何保护 Azure Key Vault 中的 blob 存储访问密钥

在 C# 中使用 azure key vault 解密和下载“加密的 azure blob”

从 Azure Functions 访问 Azure Key Vault 时访问被拒绝