正在配置 AWS Secrets Manager - AWS 规范性指导

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

正在配置 AWS Secrets Manager

AWS Secrets Manager 帮助您保护访问应用程序、服务和 IT 资源所需的机密。该服务可以安全地存储、管理、加密和轮换数据库凭证、API密钥和其他机密,包括OAuth令牌,并提供与亚马逊关系数据库服务(亚马逊RDS)、Amazon Redshift和Amazon DocumentDB的原生集成。用户和应用程序通过调用 Secrets Manager 来检索机密APIs,这样就无需以明文形式对敏感信息进行硬编码。Secrets Manager 包括精细的访问控制权限,并提供了一个集中位置来审核本地和第三方环境中的 AWS Cloud密钥轮换。

将 Secrets Manager 与一起使用的先决条件。 NET框架应用程序

  • 活跃的 AWS 账户

  • 已安装@@ 微软 Visual Studio

  • AWS Command Line Interface (AWS CLI) 版本 2,已安装并配置为访问您的 AWS 账户 (参见说明

  • AWS Toolkit for Visual Studio,已配置(参见说明

  • 使用 Secrets Manager 控制台或 AWS CLI (参见说明)创建和检索的密钥

示例

要从 Secrets Manager 访问密钥,请访问ASP。 NET核心网 API (. NET6):

  1. 将以下 NuGet 软件包添加到ASP。 NET核心网API。

    AWSSDK.SecretsManager.Caching
  2. Program.cs文件中,进行以下更改。

    • 添加Amazon.SecretsManager命名空间 (1)。

      using Amazon.SecretsManager;
    • 注册服务 (2)。

      builder.Services.AddScoped<IAmazonSecretsManager>(x => new AmazonSecretsManagerClient(RegionEndpoint.EUWest2) );
    对用于访问 Secrets Manager 的 Program.cs 文件所做的更改
  3. 要从 Secrets Manager 中检索密钥,请对控制器类文件进行以下更改(例如ValuesController.cs)。

    • 添加构造函数 (1)。

      private readonly IAmazonSecretsManager _secretsManager; public SecretsController(IAmazonSecretsManager secretsManager) { _secretsManager = secretsManager; }
    • 实现GetSecret方法 (2)。

      string secretName = "arn:aws:secretsmanager:eu-west-2:111122223333:secret:dev/myapp/tenant-gSj6qd"; GetSecretValueRequest request = new GetSecretValueRequest(); request.SecretId = secretName; request.VersionStage = "AWSCURRENT"; Task<GetSecretValueResponse> response = _secretsManager.GetSecretValueAsync(request); return Ok(new { Secret = response.Result.SecretString });

      其中 111122223333 指的是账户 ID。

    对用于从 Secrets Manager 检索密钥的控制器类文件的更改
    注意

    secretName指密钥的名称或 Amazon 资源名称 (ARN)。创建密钥后,可以从 Secrets Manager 控制台中检索此值。您应该secretName动态调用或从环境变量调用。不要在生产环境中对该值进行硬编码。