Заставить рабочий процесс IIS использовать учетные данные AWS вошедшего в систему пользователя

У меня есть приложение ASP.NET, работающее на IIS. Приложение обращается к диспетчеру AWS Secrets, и я разработчики, чтобы иметь возможность запускать его локально и использовать свой локальный вход в AWS.

Рабочий процесс IIS работает под IIS APPPOOL\MyApp.

Приложение пытается получить доступ к AWS Secrets Manager следующим образом:

var config = new AmazonSecretsManagerConfig { RegionEndpoint = RegionEndpoint.MyRegion };
var client = new AmazonSecretsManagerClient(config);

var request = new GetSecretValueRequest
{
    SecretId = "my-secret-id"
};

var response = Task.Run(async () => await client.GetSecretValueAsync(request)).Result;

Хотя я вошел в AWS, и это будет работать как консольное приложение, поскольку ASP.NET работает как IIS APPPOOL \ MyApp, который не вошел в систему, он не может получить к нему доступ.

Если я скопирую C:\Users\MyLogin.aws\credentials в C:\Users\MyApp.aws\credentials, тогда он будет работать, но, очевидно, это просто доказательство концепции, а не долгосрочное решение.

Если я попробую это:

var sharedFile = new SharedCredentialsFile("C:/Users/MyLogin/.aws/credentials");

if (!sharedFile.TryGetProfile("default", out var profile))
{
    throw new Exception("Cannot access shared credentials file");
}

if (!AWSCredentialsFactory.TryGetAWSCredentials(profile, sharedFile, out var credentials))
{
    throw new Exception("Cannot get credentials from shared file");
}

var config = new AmazonSecretsManagerConfig { RegionEndpoint = RegionEndpoint.MyRegion };
var client = new AmazonSecretsManagerClient(credentials, config);

var request = new GetSecretValueRequest
{
    SecretId = "my-secret-id"
};

var response = Task.Run(async () => await client.GetSecretValueAsync(request)).Result;

Но он не может получить доступ к папке, потому что у него нет разрешений, и я хотел бы избежать этого, так как я хочу, чтобы настройка была как можно более простой.

Или мне нужно настроить нового пользователя IAM, который будет использовать его с помощью ключа доступа / секретного ключа? Опять же, я хотел бы избежать этого, так как это потребует где-то хранить секретный ключ. Я бы очень хотел использовать логин пользователя

0 ответов

Другие вопросы по тегам