Obtenha um segredo do Secrets Manager usando .NET com armazenamento em cache no lado do cliente - AWS Secrets Manager

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Obtenha um segredo do Secrets Manager usando .NET com armazenamento em cache no lado do cliente

Ao recuperar um segredo, você pode usar o componente de cache baseado em .NET do Secrets Manager para armazená-lo em cache para uso futuro. Recuperar um segredo armazenado em cache é mais rápido do que recuperá-lo do Secrets Manager. Como há um custo para chamar APIs do Secrets Manager, usar um cache pode reduzir seus custos. Para ver todas as formas pelas quais você pode recuperar segredos, consulte Obter segredos.

A política de caches é a do menos usado recentemente (LRU). Assim, quando o cache precisar descartar um segredo, escolherá o segredo menos usado recentemente. Por padrão, o cache atualiza segredos a cada hora. É possível configurar com qual frequência o segredo será atualizado no cache e você poderá se conectar à recuperação do segredo para adicionar mais funcionalidades.

O cache não obriga a coleta de resíduos depois que as referências de cache são liberadas. A implementação do cache não inclui a invalidação do cache. A implementação do cache é centrada em torno do próprio cache, portanto, não é reforçada ou tem ênfase em segurança. Se você necessitar de mais segurança, como criptografia de itens no cache, use as interfaces e os métodos abstratos fornecidos.

Para usar o componente, é necessário ter o seguinte:

  • .NET Framework 4.6.2 ou superior, ou .NET Standard 2.0 ou superior. Consulte Download .NET (Baixe .NET) no site da Microsoft .NET.

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

Para baixar o código-fonte, consulte Caching client for .NET (Cliente armazenado em cache para .NET) no GitHub.

Para usar o cache, primeiro instancie-o e, em seguida, recupere o seu segredo usando GetSecretString ou GetSecretBinary. Em recuperações sucessivas, o cache retorna a cópia armazenada em cache do segredo.

Para obter o pacote de cache
  • Execute um destes procedimentos:

    • Execute o seguinte comando CLI do .NET em seu diretório de projeto.

      dotnet add package AWSSDK.SecretsManager.Caching --version 1.0.6
    • Adicione a seguinte referência de pacote ao seu arquivo .csproj.

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

Permissões obrigatórias:

  • secretsmanager:DescribeSecret

  • secretsmanager:GetSecretValue

Para ter mais informações, consulte Referência de permissões.

exemplo Recuperar segredos

O exemplo de código a seguir mostra um método que recupera um segredo nomeado como 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 } } }
exemplo Configuração da duração da atualização do cache de vida útil (TTL)

O exemplo de código a seguir mostra um método que recupera um segredo chamado MySecret e define a duração da atualização do cache de TTL para 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 } } }