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 以获取机密值

使用 Azure Key Vault 轮换机密

Azure Key Vault 证书证书标识符、秘密标识符、密钥标识符之间的区别

如何在函数应用中引用 Azure Key Vault 中的密钥?