我想使用AWS Secrets Manager在web应用程序中存储RDS的密钥。亚马逊网络服务提供了AWSSDK.SecretsManager.Caching库来提高性能和降低成本。我正在重新考虑这件事。在完美的世界里,秘密只有在我需要的时候才会存在于记忆中。另一方面,有了缓存,它们就永远存在了。缓存(AWSSDK.SecretsManager.Caching)中的数据是否加密?在实践中,缓存是否降低了安全性?使用System.Security.SecureString手动实现是更好的解决方案吗?感谢您的反馈。
发布于 2021-08-05 08:23:48
您可以将自定义扩展添加到缓存中,此扩展可以加密/解密内存中的数据。为此,您必须实现ISecretCacheHook接口:
public class SecretCacheHook : ISecretCacheHook
{
private readonly IEncryptionProvider _encryptionProvider;
public SecretCacheHook(IEncryptionProvider encryptionProvider)
{
_encryptionProvider = encryptionProvider;
}
public object Get(object obj)
{
return _encryptionProvider.Decrypt(obj);
}
public object Put(object obj)
{
return _encryptionProvider.Encrypt(obj);
}
}并将对象传递给缓存配置:
var secretsManagerCache = new SecretsManagerCache(
new AmazonSecretsManagerClient(RegionEndpoint.GetBySystemName(region)),
new SecretCacheConfiguration
{
CacheHook = new SecretCacheHook(new EncryptionProvider())
});你可以在亚马逊网络服务blog上了解更多信息。
https://stackoverflow.com/questions/68652204
复制相似问题