缓存从 Secrets Manager 检索到的机密
Caching secrets retrieved from Secrets Manager
我想使用 AWS Secrets Manager 在 Web 应用程序中存储 RDS 的机密。 AWS 提供 AWSSDK.SecretsManager.Caching
库来提高性能并降低成本。我正在考虑这件事。在完美的世界里,秘密只有在我需要的时候才会存在于记忆中。另一方面,有了缓存,它们就永远存在。缓存 (AWSSDK.SecretsManager.Caching
) 中的数据是否加密?缓存实际上会降低安全性吗?是否手动实施
System.Security.SecureString
更好的解决方案?感谢您的任何反馈。
您可以向缓存添加自定义扩展,此扩展可以 encrypt/decrypt 内存中的数据。为此,您必须实现 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())
});
您可以阅读有关 AWS 的更多信息 blog。
我想使用 AWS Secrets Manager 在 Web 应用程序中存储 RDS 的机密。 AWS 提供 AWSSDK.SecretsManager.Caching
库来提高性能并降低成本。我正在考虑这件事。在完美的世界里,秘密只有在我需要的时候才会存在于记忆中。另一方面,有了缓存,它们就永远存在。缓存 (AWSSDK.SecretsManager.Caching
) 中的数据是否加密?缓存实际上会降低安全性吗?是否手动实施
System.Security.SecureString
更好的解决方案?感谢您的任何反馈。
您可以向缓存添加自定义扩展,此扩展可以 encrypt/decrypt 内存中的数据。为此,您必须实现 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())
});
您可以阅读有关 AWS 的更多信息 blog。