Obtenga un valor secreto de Secrets Manager usando.NET con almacenamiento en caché del lado del cliente - AWS Secrets Manager

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Obtenga un valor secreto de Secrets Manager usando.NET con almacenamiento en caché del lado del cliente

Cuando recupera un secreto, puede utilizar el componente de almacenamiento en caché basado en .NET de Secrets Manager para utilizarlo más adelante. Recuperar un secreto almacenado en la memoria caché es más rápido que recuperarlo desde Secrets Manager. Dado que la llamada a las API de Secrets Manager conlleva un costo, el uso de una caché puede reducirlo. Para conocer todas las formas en las que puede recuperar secretos, consulte Obtén secretos.

La política de la caché consiste en el algoritmo menos usado recientemente (LRU), por lo que, cada vez que la caché tiene que descartar un secreto, lo hace con el de uso menos reciente. De forma predeterminada, la caché actualiza secretos cada hora. Puede configurar la frecuencia con la que se actualiza el secreto en la memoria caché, y también conectarse a la recuperación del secreto para agregar más funcionalidad.

La memoria caché no fuerza la recopilación de elementos no utilizados una vez liberadas las referencias de la memoria caché. La implementación de la memoria caché no incluye la invalidación de la memoria caché. La implementación de la memoria caché se centra en la memoria caché en sí misma y no está reforzada ni centrada en la seguridad. Si necesita más seguridad, como cifrar elementos en la memoria caché, utilice las interfaces y los métodos abstractos que se proporcionan.

Para utilizar el componente, debe disponer de lo siguiente:

  • .NET Framework 4.6.2 o una versión posterior, o .NET Standard 2.0 o una versión posterior. Consulte Download .NET (Descargar .NET) en el sitio web de Microsoft .NET.

  • El AWS SDK para .NET. Consulte AWS SDKs.

Para descargar el código fuente, consulte Cliente de almacenamiento en caché para .NET on GitHub.

Para utilizar la caché, primero hay que crear una instancia y, a continuación, recuperar el secreto mediante GetSecretString o GetSecretBinary. En las recuperaciones posteriores, la caché devuelve la copia almacenada del secreto.

Para obtener el paquete de almacenamiento en caché
  • Realice una de las siguientes acciones siguientes:

    • Ejecute el siguiente comando de la CLI de .NET en el directorio del proyecto.

      dotnet add package AWSSDK.SecretsManager.Caching --version 1.0.6
    • Agregue la siguiente referencia de paquete al archivo .csproj.

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

Permisos necesarios:

  • secretsmanager:DescribeSecret

  • secretsmanager:GetSecretValue

Para obtener más información, consulte Referencia de permisos.

ejemplo Recuperación de un secreto

En el siguiente ejemplo de código se muestra un método que recupera un secreto denominado. 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 } } }
ejemplo Configurar la duración de la actualización de la memoria caché del tiempo de vida (TTL)

El siguiente ejemplo de código muestra un método que recupera un secreto denominado MySecrety establece la duración de la actualización de la caché TTL en 24 horas.

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 } } }