检索 .NET 应用程序中的 AWS Secrets Manager 密钥 - AWS Secrets Manager

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

检索 .NET 应用程序中的 AWS Secrets Manager 密钥

在检索密钥时,您可以使用 Secrets Manager 基于 .NET 的缓存组件来缓存密钥,以备将来使用。检索已缓存密钥比从 Secrets Manager 中检索密钥的速度要快。由于调用 Secrets Manager API 会产生费用,因此使用缓存可以降低成本。有关检索密钥的所有方法,请参阅 检索密钥

缓存策略为“最近最少使用 (LRU)”,因此当缓存必须丢弃某个密钥时,它会丢弃最近使用最少的密钥。原定设置下,缓存会每小时刷新一次秘密。您可以配置在缓存中刷新密钥的频率,也可以挂钩到密钥检索中以添加更多功能。

一旦释放缓存引用,缓存便不会进行强制垃圾回收。缓存实施不包括缓存失效。缓存实现侧重于缓存本身,而不是侧重加强安全性或以安全性为重点。如果您需要额外的安全性(例如加密缓存中的项目),请使用提供的接口和抽象方法。

要使用该组件,您必须满足以下条件:

  • .NET Framework 4.6.2 或更高版本,或者 .NET Standard 2.0 或更高版本。请参阅 Microsoft .NET 网站上的下载 .NET

  • AWS SDK for .NET。请参阅AWS 软件开发工具包

要下载源代码,请参阅 GitHub 上的适用于 .NET 的缓存客户端

要使用缓存,请先对其进行实例化,然后使用 GetSecretStringGetSecretBinary 检索密钥。在连续检索时,缓存将返回密钥的已缓存副本。

获取缓存包
  • 请执行下列操作之一:

    • 在您的项目目录中运行下列 .NET CLI 命令。

      dotnet add package AWSSDK.SecretsManager.Caching --version 1.0.6
    • 将下列软件包引用添加到您的 .csproj 文件中。

      <ItemGroup> <PackageReference Include="AWSSDK.SecretsManager.Caching" Version="1.0.6" /> </ItemGroup>

所需权限:

  • secretsmanager:DescribeSecret

  • secretsmanager:GetSecretValue

有关更多信息,请参阅权限参考

例 检索密钥

下面的代码示例演示了检索名为 MySecret 的密钥的方法。

using Amazon.SecretsManager.Extensions.Caching; namespace LambdaExample { public class CachingExample { private const string MySecretName ="MySecret"; private SecretsManagerCache cache = new SecretsManagerCache(); public async Task<Response> FunctionHandlerAsync(string input, ILambdaContext context) { string MySecret = await cache.GetSecretString(MySecretName); // Use the secret, return success } } }
例 配置生存时间 (TTL) 缓存刷新持续时间

下列代码示例演示了检索名为 MySecret 的密钥并将 TTL 缓存刷新持续时间设置为 24 小时的方法。

using Amazon.SecretsManager.Extensions.Caching; namespace LambdaExample { public class CachingExample { private const string MySecretName = "MySecret"; private static SecretCacheConfiguration cacheConfiguration = new SecretCacheConfiguration { CacheItemTTL = 86400000 }; private SecretsManagerCache cache = new SecretsManagerCache(cacheConfiguration); public async Task<Response> FunctionHandlerAsync(string input, ILambdaContext context) { string mySecret = await cache.GetSecretString(MySecretName); // Use the secret, return success } } }