擷取 .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。請參閱 AWS 開發套件

若要下載開放程式碼,請參閱 .NET 快取用戶端 (在 GitHub 上)。

若要使用快取,請首先讓其成為執行個體,然後使用 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 } } }