Сохранение секретного ключа в секрете с помощью Amazon Web Services

StackOverflow https://stackoverflow.com/questions/2240216

Вопрос

Я экспериментирую с использованием веб-сервисов Amazon в своем личном проекте.Я взял их AWS SDK для .NET и использую его, но я немного запутался.

  1. Доступ к веб-сервису (в данном случае SimpleDB, хотя я не думаю, что это действительно важно для вопроса) авторизуется через пару частного/открытого ключей.

  2. Для API AWS SDK для .NET, используемого для создания клиентского объекта, требуется закрытый ключ:

    AWSClientFactory.CreateAmazonSimpleDBClient(publicKey, privateKey);
    
  3. Это клиентское приложение, поэтому код будет полностью выполняться на клиенте.

  4. Предполагаю, что клиенту потребуется доступ к моему личному ключу, чтобы получить доступ к SimpleDB.Но Amazon неоднократно и настойчиво заявляет, что мой закрытый ключ не должен выходить из-под моего контроля.

Для меня это не имеет смысла, поэтому я думаю, что, должно быть, что-то упускаю.

Является ли клиентское приложение неправильной моделью для веб-сервисов Amazon в целом для использования их AWS SDK для .NET, или я упускаю что-то, что делает клиентское приложение совершенно разумным?Есть ли хороший способ обойти это, не создавая собственную прокси-службу, которая будет аутентифицировать клиентов и пересылать их запросы в SimpleDB?

Это было полезно?

Решение

Вам не нужно внедрять прокси-сервер, который будет работать с удаленной службой (AWS).Просто реализуйте простой, небольшой, аутентифицированный сервис, который возвращает клиенту URL-адрес и заголовки, которые можно использовать при обращении к AWS. Ваш аутентифицированный веб-сервис сохраняет секрет AWS и предоставляет клиенту только подписанный URL-адрес запроса и заголовки, который затем выполняет фактический рабочий вызов, используя эту возвращенную информацию.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top