我们使用AWS秘密管理器来存储公钥/私钥,以加密服务之间的解密消息,并希望旋转秘密。
aws-分泌管理器-缓存-python看起来很适合缓存我们的秘密,但是它有一个刷新间隔,默认为一个小时。
旧秘密缓存的1-60分钟会发生什么,并且不会再解密消息?我们可以发现这个秘密已经失效了。一旦我们检测到这一点,我们是否有办法强制该值刷新?处理这件事的打算是什么?
发布于 2022-07-21 23:05:12
尽管aws推荐用于从秘密管理器缓存秘密的解决方案,而文档建议它支持秘密轮换,但aws-秘管理器缓存-python库似乎不支持密钥旋转所需的逐出。这个单元测试表示,他们正在测试刷新秘密:
def test_get_secret_string_refresh(self):
secret = 'mysecret'
response = {}
versions = {
'01234567890123456789012345678901': ['AWSCURRENT']
}
version_response = {'SecretString': secret}
cache = SecretCache(
config=SecretCacheConfig(secret_refresh_interval=1),
client=self.get_client(response,
versions,
version_response))
for _ in range(10):
self.assertEqual(secret, cache.get_secret_string('test'))但是,代码设置了一个初始秘密,创建了一个新的配置,该配置的刷新间隔很小,甚至没有使用,并且测试了该秘密设置为最初设置的10倍。它根本不是在测试刷新,看起来代码还不够成熟。
发布于 2022-07-14 04:42:09
在没有应用程序关闭时间的情况下旋转机密需要能够同时运行至少两个可用的秘密(当前和下一个或当前和以前取决于时间点)。如果您将其用于加密,则消息必须包含指向要使用的秘密版本的未加密指针。然后,接收方可以发现用于消息的加密密钥。
不过,加密的一个更好的选择是使用KMS (这是Secrets使用的)。在此方案中,您可以调用KMS GenerateDataKey来获取加密密钥的明文和加密版本。使用明文密钥加密有效负载,并在消息中发送加密密钥和加密有效载荷。然后,接收者调用KMS对加密的数据密钥进行解密,然后使用该密钥解密有效负载。这样,您就不必管理关键版本。您还可以在KMS中使用对称或非对称密钥。
https://stackoverflow.com/questions/72647680
复制相似问题