AWS Secrets Manager中的Azure密钥库参考等效项是什么



Azure密钥库和Azure函数之间有一个简单的集成,可以自动获取最新版本的机密并将其加载为环境变量:

@Microsoft.KeyVault(VaultName=myvault;SecretName=mysecret)

此条目需要添加到应用程序设置中。Azure还将在24小时内刷新缓存的密钥。

AWS对于.NET中的Secrets Manager客户端是否具有类似的集成和缓存功能?

否,不幸的是,AWS Secrets Manager没有密钥库引用的等效项,即从Secrets Manager加载机密,使其作为Lambda环境变量可用。这适用于所有Lambda函数运行时,而不仅仅是.NET.


您必须使用Secrets Manager SDK,最好从应用程序设置中读取机密名称,然后在启动时加载机密值。

或者,如果您需要同类替换,您可以在构建管道期间调用以获取机密值&修改应用程序设置以包含机密值。

这需要在缓存方面做出妥协,除非您创建一个特定的计划管道,该管道每24小时运行一次,以获取最新的机密值并更新环境的应用程序设置。

然而,对于前一个首选选项,您可以利用官方的AWSSDK.SecretsManager.CachingNuget包进行秘密缓存。

默认情况下,(可配置(缓存项刷新时间/TTL设置为1小时。

对于您的用例,创建SecretCacheConfiguration类的实例&将CacheItemTTL属性设置为86400000(以毫秒为单位的24小时(。然后,创建您的SecretsManagerCache,传入您的机密管理器客户端&您的缓存配置。

这将以24小时的自动刷新间隔配置缓存,从而产生类似的行为。


对于Lambda函数,请记住,缓存将在冷启动调用时被清除,最好创建一个在Lambda容器的生命周期内保持活动的SecretsManagerCache的单例实例。

如果你加载的机密超过3-5个,我建议你查看这个AWS规定指导模式引用的层代码,或者查看Square的Lambda secrets预取层的Github存储库。

两者都是缓存机密值的Lambda层,这可能会减少Lambda的总体持续时间。在他们的博客文章中,方形细节的持续时间减少了20-25%,其中包含了更详细的信息。一如既往,YMMV。

两者之间的主要区别在于,AWS层将机密存储在内存中,而不是本地存储在/tmp目录中;在功能上,两者几乎相同。


查看以下官方链接以获取更深入的信息:

  1. AWS Secrets Manager用户指南:在.NET应用程序中检索AWS Secretes Manager机密
  2. AWS安全博客:如何在.NET中使用AWS Secrets Manager客户端缓存

最新更新