在 .NET 中配置后如何访问 AWS 机密?
How do I access an AWS secret once configured in .NET?
我一直在尝试寻找一种使用 ASP .NET Core 2.1 并从 AWS 中的 Secret Manager 检索机密的方法。
我找到了一个很棒的博客 post,它似乎 compile/run 没有错误,但我终究无法弄清楚如何访问这些秘密。
如有任何帮助,我们将不胜感激!
https://andrewlock.net/secure-secrets-storage-for-asp-net-core-with-aws-secrets-manager-part-1/
我的代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
// Secrets
using Amazon;
// Secrets
namespace EJ2FileManagerService
{
public class Program
{
// Secrets
// Secrets
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Run();
}
public static IWebHost CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddSecretsManager( region: RegionEndpoint.USEast2, configurator: ops =>
{
ops.KeyGenerator = (secret, name) => name.Replace("__", ":");
}
);
Console.WriteLine("Hello World!");
})
.UseStartup<Startup>()
.Build();
}
}
长话短说 -- 我的 .NET 代码中需要来自 AWS 的秘密。因此,如果我想通过控制台将秘密写入 Console.WriteLine 语句,我该怎么做?
好的 - 所以你的问题是如何阅读一个秘密。让我们尝试不同的教程:
示例 1:使用 SecretsManager(很像您原来的教程所做的):
https://nimblegecko.com/how-to-use-aws-secret-manager-secrets-in-dotnet-core-application/
var client = new AmazonSecretsManagerClient(accessKeyId, secretAccessKey, RegionEndpoint.APSoutheast2);
var request = new GetSecretValueRequest
{
// this gets your secret name, 'web-api/passwords/database' in our case
SecretId = secretName
};
GetSecretValueResponse response = null;
try
{
response = client.GetSecretValueAsync(request).Result;
}
...
示例2:使用SecretClient:
var keyVaultUrl = "https://<your-key-vault-name>.vault.azure.net/";
var credential = new DefaultAzureCredential();
var client = new SecretClient(vaultUri: new Uri(keyVaultUrl), credential);
KeyVaultSecret secret = client.GetSecret("<your-secret-name>");
Console.WriteLine($"{secret.Name}: {secret.Value}");
官方文档在这里:
AWS SDK for .NET Documentation
如果仍然感到困惑,请查看 AWS SDK 开发人员指南and/or AWS 文档页面链接到的一些博客。
'希望对您有所帮助!
我一直在尝试寻找一种使用 ASP .NET Core 2.1 并从 AWS 中的 Secret Manager 检索机密的方法。
我找到了一个很棒的博客 post,它似乎 compile/run 没有错误,但我终究无法弄清楚如何访问这些秘密。
如有任何帮助,我们将不胜感激!
https://andrewlock.net/secure-secrets-storage-for-asp-net-core-with-aws-secrets-manager-part-1/
我的代码:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
// Secrets
using Amazon;
// Secrets
namespace EJ2FileManagerService
{
public class Program
{
// Secrets
// Secrets
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Run();
}
public static IWebHost CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.AddSecretsManager( region: RegionEndpoint.USEast2, configurator: ops =>
{
ops.KeyGenerator = (secret, name) => name.Replace("__", ":");
}
);
Console.WriteLine("Hello World!");
})
.UseStartup<Startup>()
.Build();
}
}
长话短说 -- 我的 .NET 代码中需要来自 AWS 的秘密。因此,如果我想通过控制台将秘密写入 Console.WriteLine 语句,我该怎么做?
好的 - 所以你的问题是如何阅读一个秘密。让我们尝试不同的教程:
示例 1:使用 SecretsManager(很像您原来的教程所做的):
https://nimblegecko.com/how-to-use-aws-secret-manager-secrets-in-dotnet-core-application/
var client = new AmazonSecretsManagerClient(accessKeyId, secretAccessKey, RegionEndpoint.APSoutheast2); var request = new GetSecretValueRequest { // this gets your secret name, 'web-api/passwords/database' in our case SecretId = secretName }; GetSecretValueResponse response = null; try { response = client.GetSecretValueAsync(request).Result; } ...
示例2:使用SecretClient:
var keyVaultUrl = "https://<your-key-vault-name>.vault.azure.net/"; var credential = new DefaultAzureCredential(); var client = new SecretClient(vaultUri: new Uri(keyVaultUrl), credential); KeyVaultSecret secret = client.GetSecret("<your-secret-name>"); Console.WriteLine($"{secret.Name}: {secret.Value}");
官方文档在这里:
AWS SDK for .NET Documentation
如果仍然感到困惑,请查看 AWS SDK 开发人员指南and/or AWS 文档页面链接到的一些博客。
'希望对您有所帮助!