本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
正在配置 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):
-
将以下 NuGet 软件包添加到ASP。 NET核心网API。
AWSSDK.SecretsManager.Caching
-
在
Program.cs
文件中,进行以下更改。-
添加
Amazon.SecretsManager
命名空间 (1)。using Amazon.SecretsManager;
-
注册服务 (2)。
builder.Services.AddScoped<IAmazonSecretsManager>(x => new AmazonSecretsManagerClient(RegionEndpoint.EUWest2) );
-
-
要从 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。
注意
secretName
指密钥的名称或 Amazon 资源名称 (ARN)。创建密钥后,可以从 Secrets Manager 控制台中检索此值。您应该secretName
动态调用或从环境变量调用。不要在生产环境中对该值进行硬编码。 -