Переключение между учетными записями при размещении в экземпляре EC2

#amazon-web-services #amazon-ec2 #aws-sdk #aws-sdk-net

#amazon-web-services #amazon-ec2 #aws-sdk #aws-sdk-net

Вопрос:

В настоящее время у нас есть 2 учетные записи AWS, которые мы используем. Для большинства вещей мы хотим использовать учетную запись AWS, на которой размещено наше веб-приложение в экземпляре EC2, так что это работает нормально:

 services.AddDefaultAWSOptions(this.Configuration.GetAWSOptions());
services.AddAWSService<IAmazonSQS>();
services.AddAWSService<IAmazonSimpleSystemsManagement>();
 

Однако я хочу получить доступ к экземплярам EC2 в другой учетной записи AWS. Я настроил его для локальной работы с использованием учетных данных и следуя этому руководству (где упоминается об использовании нескольких служб): https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-config-netcore.html

 services.AddDefaultAWSOptions(this.Configuration.GetAWSOptions());
services.AddAWSService<IAmazonSQS>();
services.AddAWSService<IAmazonSimpleSystemsManagement>();

if (this.WebHostEnvironment.IsDevelopment())
{
   // This works fine locally, but I don't want to use credential file in production
    var other = this.Configuration.GetAWSOptions("other");
    services.AddAWSService<IAmazonEC2>(other);
}
else
{
    // How do I register other here without putting a credential file on my ec2 instance?
    services.AddAWSService<IAmazonEC2>();
}
 

Я не уверен, как зарегистрироваться IAmazonEC2 , чтобы использовать свою other учетную запись. Я не хочу помещать файл учетных данных в свой экземпляр, и именно так я заставляю его работать локально, но мне это кажется неправильным на производственных серверах.

Я настроил роль IAM, которая имеет доступ к моей other учетной записи, и передал ее моему экземпляру EC2. Но как мне перевести эту роль IAM в профиль для использования там, где я регистрируюсь IAmazonEC2 выше?

Любая помощь приветствуется. Спасибо

Комментарии:

1. Что вы подразумеваете под «доступом к экземплярам EC2 в другой учетной записи AWS»? Вы имеете в виду, что хотите иметь доступ к консоли управления Amazon EC2 для просмотра экземпляров в другой учетной записи, или вы имеете в виду, что хотите иметь возможность «входить» в эти другие экземпляры EC2 (например, через SSH или диспетчер сеансов)?

2. Я имею в виду, что я хочу использовать IAmazonEC2 сервис из SDK для запроса / управления экземплярами в моей other учетной записи (проверять их статус, запускать их и т. Д.).

Ответ №1:

На самом деле есть два способа сделать это…

Вариант 1. используйте роль IAM

Предположим, что экземпляр Amazon EC2 запущен в Account-A, и теперь он хочет запросить информацию об Account-B. Вы могли бы:

  • Создайте роль IAM в Account-B с политикой доверия, которая доверяет роли IAM, используемой экземпляром EC2 в Account-A
  • Ваш код, выполняемый на экземпляре EC2 в Account-A, может вызывать AssumeRole() (используя обычные учетные данные из Account-A). Это вернет набор временных учетных данных.
  • Используйте эти временные учетные данные для выполнения вызовов API для Account-B

Вариант 2: Использовать учетные данные из учетной записи-B

В качестве альтернативы, предоставьте вашей программе набор учетных данных пользователя IAM из учетной записи-B. Они могут храниться в хранилище параметров AWS Systems Manager — AWS Systems Manager или AWS Secrets Manager и извлекаться с помощью обычных учетных данных, назначенных экземпляру EC2 в Account-A.

Комментарии:

1. Спасибо. Я обязательно попробую! 🙂