Хранилище ключей Azure будет лучшим выбором для хранения любой конфиденциальной / секретной информации, например учетных данных, которую будет использовать ваше веб-приложение, размещенное в Azure.
Вот пример с кодом, а также шаги по настройке, которые вы можете выполнить, чтобы сделать это из основного веб-приложения .NET. ( Образец документации )
В этом примере также демонстрируется еще одна лучшая практика использования идентификатора управляемой службы для вашего веб-приложения для доступа к хранилищу ключей. Это автоматически позаботится об управлении вокруг ротации клавиш и других проблем. Если по какой-либо причине в вашем веб-приложении уже есть зарегистрированный идентификатор Azure AD, вы можете использовать его и для доступа к хранилищу ключей.
Код доступен здесь:
https://github.com/Azure-Samples/key-vault-dotnet-core-quickstart.git
Не для того, чтобы дать вам ссылку, просто ответ, вот только шаги высокого уровня. Подробности смотрите в репозитории github и документации.
Вы создаете хранилище ключей с помощью портала Azure или с помощью команды, подобной
az keyvault create --name "<YourKeyVaultName>" --resource-group "<YourResourceGroupName>" --location "East US"
Вы создаете секреты в этом хранилище для имени пользователя и секретного ключа, которые будут использоваться для доступа к AWS S3. Снова портал или команда Azure CLI.
az keyvault secret set --vault-name "<YourKeyVaultName>" --name "AWS-ACCESS-KEY-ID" --value "MySecretValue1"
az keyvault secret set --vault-name "<YourKeyVaultName>" --name "AWS-SECRET-KEY" --value "MySecretValue2"
Включение управляемого удостоверения для вашего веб-приложения
az webapp identity assign --name "keyvaultdotnetcorequickstart" --resource-group "<YourResourceGroupName>"
Назначение разрешений на чтение секретов из хранилища ключей для вашего веб-приложения
az keyvault set-policy --name '<YourKeyVaultName>' --object-id <PrincipalId> --secret-permissions get list
Просмотрите код хранилища ключей в репо. Важная часть из Program.cs, приведенная ниже
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx, builder) =>
{
var keyVaultEndpoint = GetKeyVaultEndpoint();
if (!string.IsNullOrEmpty(keyVaultEndpoint))
{
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));
builder.AddAzureKeyVault(
keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
}
}
).UseStartup<Startup>()
.Build();
private static string GetKeyVaultEndpoint() => "https://<YourKeyVaultName>.vault.azure.net";