Azure Key Vault 中的密钥和机密有啥区别?
Posted
技术标签:
【中文标题】Azure Key Vault 中的密钥和机密有啥区别?【英文标题】:What is difference between Keys and Secrets in Azure Key Vault?Azure Key Vault 中的密钥和机密有什么区别? 【发布时间】:2016-11-11 15:13:45 【问题描述】:很高兴知道
它们是什么, 它们是做什么用的 为什么一个人更喜欢一个而不是另一个。【问题讨论】:
【参考方案1】:一个非常简单的答案:
键
表示为 JWK(JSON Web 密钥)的加密密钥
示例:存储包含一对公钥和私钥的 .pfx 证书文件
秘密
KV 接受任何值并将其存储为二进制文件(有最大大小限制)
示例:密码或 API 密钥
进一步阅读
About Keys and Secrets【讨论】:
在实际中,什么时候应该使用?例如,我想为我的应用程序存储一些秘密的唯一数据。我应该使用什么以及如何使用? @DSA 如果您的数据在支持的大小限制内,则使用机密来存储它们。 "Azure Key Vault 中的秘密是八位字节序列,每个最大大小为 25k 字节。" docs.microsoft.com/en-us/rest/api/keyvault/…【参考方案2】:Key Vault 密钥:
Azure Key Vault 中的密钥是“加密密钥”,用于加密信息而不将私钥释放给使用者(用户\服务)。它就像一个黑匣子,使用RSA algotithm 加密和解密内容。
RSA 算法,涉及公钥和私钥。公钥可以为所有人所知;它用于加密消息。使用公钥加密的消息只能使用私钥解密。
场景:
假设您必须存储客户 CreditCard,将其保存在数据库中的安全方法是在软件设计和 业务需求很清楚你应该加密它, 大多数人没有意识到或不打扰的是你如何保护你的 大多数情况下,加密密钥作为软件的一部分存储 配置,如果攻击者或员工有权访问密钥,则 信息不再安全。
使用密钥库密钥,您可以将信用卡信息发送到 KeyVault,它会加密信息并将加密后的值返回给调用者。 在高性能场景下,您可以从 KeyVault 获取公钥,使用它来加密来自应用程序端的信息,并存储在已经加密的 DB 中,而无需将数据发送到 KV。 取回真实数据的唯一方法是将加密数据发送到 KV,KV 将返回解密的 CreditCard。
Key Vault 机密
Azure Key Vault 中的秘密是八位字节序列,每个最大大小为 25kb。它被描述为八位字节,因为它不关心所存储的数据类型,唯一的限制是 25kb 的大小。发送数据后,数据会被加密并存储,如果您有权限,您可以随时检索它。它用于存储应用程序设置、令牌以及是否需要数据库连接字符串、密码等信息。
Key Vault Secrets 的好处是您可以使用预定义的轮换值来定义 Expiration/NotBefore 值。因此,您可以注册将在指定时间段轮换的临时值,而读者可以访问具有 Get 权限的 Key Vault,他们将只能读取当前的值,而未来的值已经定义且不可见获取操作。
【讨论】:
【参考方案3】:Azure Key Vault (KV) 可以存储 3 种类型的项目:(1) 机密、(2) 密钥和 (3) 证书 (certs)。
秘密 - 提供秘密的安全存储,例如数据库连接字符串、帐户密钥或 PFX 的密码(私钥文件)。身份验证应用程序可以检索秘密以在其操作中使用。更多关于AZ KV Secrets
(加密)密钥 - 表示为 JWK(JSON Web 密钥)的密钥。支持多种密钥类型和算法,并支持将硬件安全模块 (HSM) 用于高价值密钥。更多关于AZ KV Keys
证书 - 是一种托管 X.509 证书,它建立在密钥和机密之上,并添加了自动续订功能/自动翻转。更多关于AZ KV Certificate
【讨论】:
以上是关于Azure Key Vault 中的密钥和机密有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
自动重新生成反映在 Azure Key Vault Secret 中的密钥
无法使用 azure JavaScript 函数和 Key Vault 机密检索 cosmosDB 数据
使用 Azure Key Vault 进行 Terraform 以获取机密值