假设服务A需要服务B的密钥K:
这是最好的方法还是有其他可以考虑的方法?
我可以在这里看到几种方法:
>
用单独的旋转方案分裂成两个秘密,并一次旋转一个秘密,类似于上面。这增加了额外的秘密处理的开销,这些秘密的值相同(除了它们之间要旋转一段时间之外)
在解密失败时,让解密强制刷新秘密:
还有什么选择?这似乎是一个标准的用例,但我仍然在努力寻找最好的方法。
编辑--------------
根据Joeb的回答,我到目前为止提出的算法是这样的:假设最初秘密的当前值为K1,待定值为null。
这应该适用于单独的秘密和用于加密和解密的对称秘密。
不幸的是,我不知道如何使用内置的循环机制,因为它需要几个步骤,中间有延迟。一个想法是发明一些自定义步骤,让setsecret
步骤创建一个CloudWatch cron事件,该事件将在T秒后再次调用该函数,并用swappending
和removepending
步骤调用该函数。如果SecretsManager能够自动支持这一点,那就太棒了,例如支持函数返回一个值,指示下一个步骤应该在T秒后调用。
对于您的凭据问题,只要服务B支持两个活动凭据,您就不必在应用程序中同时保留当前和以前的凭据。为此,您必须确保凭证在准备好之前不会被标记为AWSCURRENT。然后应用程序总是获取并使用AWSCURRENT凭据。要在循环λ中实现这一点,您可以采取以下步骤:
这些步骤与secrets manager创建多用户RDS循环λ时所采取的步骤相同。一定要使用awsulting标签,因为secrets manager特别对待这一点。如果服务B不支持两个活动凭据或多个用户共享数据,则可能无法做到这一点。请参见秘密管理器的轮换文档。
请注意,密钥可以由A和B缓存。如果要长期存储加密数据,则必须确保在加密数据不再存在或使用当前密钥重新加密之前不删除密钥。还可以通过传递不同的ARN,使用多个秘密(而不是版本)。
另一种选择是使用KMS进行加密。服务A将发送加密的KMS数据密钥而不是密钥标识符以及加密的有效负载。B可以通过调用KMS来解密加密的KMS数据密钥,然后使用该数据密钥来解密有效载荷。
在Azure Portal>Key vaults>Secrets,我有json值的秘密(不是我创建的)。类似于: null 谢谢
我使用bouncy-castle来实现SMIME(公钥加密)。要向多个收件人发送加密电子邮件,我选择了此方法
我找到了几种解决方案,在这些方案中,我可以使用RSA提供程序用公钥加密消息,并用私有密钥解密消息。 但我想要的是用私钥加密,用公钥解密。 我想将公钥存储在我的应用程序中,并用私钥在我的dev机器上加密一个许可证,将其发送到应用程序,并让信息用公钥解密。
我试图学习并在java中实现JWE来解决问题。我试图理解内容加密密钥是如何使用特定算法生成的(比如RSA-PKCS1\u 1.5)。 我知道如何使用密钥生成器生成一对密钥,然后使用公钥进行加密,使用私钥进行解密。此外,我知道如何通过给出声明来创建简单的JWT令牌,以及如何对其进行签名。我试着遵循以下步骤: 消息加密过程如下: 生成随机内容加密密钥(CEK)。CEK的长度必须至少等于所需加密密钥的长
我计划在key vault上保留密钥,但我不清楚密钥和秘密的版本控制,我有一些关于Azure key vault上的key/Secret的版本控制的问题。 如何创建现有密钥的新版本? 是否可以解密用不同版本的相同密钥加密的数据? 是否可以为某个版本的密钥设置过期日期?
正在尝试使用证书通过AD身份验证检索KeyVault机密。 创建KeyVault所引用的文档 代码失败 var result=等待上下文。AcquireTokenAsync(资源、断言专家) 包含:"密钥集不存在" 有时“指定的提供程序类型无效”发生错误,不确定问题出在哪里。