Где находится наиболее защищенное место для хранения идентификатора Amazon AWS и секретного ключа? - PullRequest
3 голосов
/ 12 августа 2011

Я занимаюсь разработкой приложения с использованием ASP.NET.Интересно, где находится наиболее защищенное место для хранения идентификатора Amazon AWS и секретного ключа?

Я подумал о двух возможностях: в самом AmazonAPI.cs (классе) в качестве частного члена.Во-вторых, в качестве переменной appSettings в web.config?

я должен предоставить эти учетные данные с помощью вызова API, чтобы использовать AWS API для .NET.Я не использую веб-сервис для совершения звонка.Вызов осуществляется через файл класса .cs, который я специально создал для инкапсуляции вызовов API Amazon.

Не могли бы вы: Предоставить пример кода, который продемонстрирует, как это сделать (хорошопуть похож на тот, который найден здесь ) - может быть лучший способ, если использовать ASP.NET 4.0, но я не уверен.Опять же, я хочу зашифровать следующее в web.config:

<appSettings>
 <add key="AWSAccessKey" value="" />
 <add key="AWSSecretKey" value="" />
</appSettings>

Спасибо.

Кстати: есть также возможность использовать временные учетные данные пользователя IAM - знаете ли вы что-нибудь об этом?

Ответы [ 3 ]

6 голосов
/ 06 августа 2015

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

Использование ролей IAM для делегирования разрешений приложениям, работающим в Amazon EC2 http://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-ec2instance.html

Редактировать: текущие версии AWS SDKрекомендуем вам:

A) Использовать учетные данные роли EC2 (рекомендуется)

При развертывании кода в экземпляре EC2 код автоматически запускается в контекстероли.Таким образом, вы добавляете права доступа к роли IAM, назначаемой вашему экземпляру EC2.

B) Используйте файлы учетных данных

При использовании ролей в производстве вы можете использовать эту технику, покаразвивается локально / на вашей локальной машине.Этот подход позволяет вам использовать разные учетные записи.Просто добавьте дополнительные разделы профиля в свою конфигурацию по мере необходимости.

  1. Создайте файл учетных данных в c: \ aws_service_credentials, который называется учетными данными (без расширения)
  2. Добавьте следующее в свое приложение.конфиг<configuration> <appSettings> <add key="AWSProfileName" value="development"/> <add key="AWSProfilesLocation" value="C:\aws_service_credentials\credentials"/> </appSettings> </configuration>
  3. Добавьте файл учетных данных в нужную папку (например, C: \ aws_service_credentials \ credentials)[development] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

См. http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html, чтобы настроить свои учетные данные.

Убедитесь, что вы создаете файлы профиля в папке, к которой имеет доступ ваш процесс (например, разрешение Все напапка и файлы).Если вы запускаете ваше приложение как администратор, это, вероятно, не проблема, но если вы запускаете приложение как сервис или фоновое приложение.По умолчанию папка, созданная в C: \, не открыта для чтения всеми, поэтому добавьте разрешения, если вам их не хватает.

C) Добавление учетных данных в конфигурацию приложения напрямую (нерекомендуется)

Этот подход не рекомендуется, поскольку, если вы можете предоставить доступ к конфигурации вашего приложения и скомпрометировать ваши ключи.

<add key="AWSAccessKey" value="key"/>
<add key="AWSSecretKey" value="secret"/>
<add key="AWSRegion" value="eu-west-1" />
0 голосов
/ 12 августа 2011

Поскольку раздел web.config очень легко зашифровать / расшифровать, я бы выбрал следующее решение: http://msdn.microsoft.com/en-us/library/dtkwfdky.aspx

0 голосов
/ 12 августа 2011

если вы храните ключ в классе .cs, то, если вы его измените, вам придется перекомпилировать, а затем заново развернуть.Если вы храните в файле web.config, вы можете легко изменить ключ.Если вы размещаете в общедоступных репозиториях (github или bitbucket), вы не захотите хранить их в файле web.config, если он не зашифрован, поскольку люди увидят ваш ключ

, поэтому необходимо учитывать следующие факторы:

  1. возможность изменить ваш ключ
  2. возможность других людей изменить ваш ключ

нет правильного или неправильного ответа, но я бы предпочел web.config

Пол

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...