2016-02-09 2 views
0

Я создаю приложение с Django. Приложение использует хранилище таблиц Azure для хранения необработанных данных. Я хочу, чтобы пользователи имели доступ к этим данным. Фактически конечная сторона пользователя будет непрерывно запрашивать данные из таблицы, поэтому я не могу позволить, чтобы сервер выполнял все эти вызовы, а затем отправлял данные пользователям. Вместо этого я хочу, чтобы пользователи запрашивали данные непосредственно у Azure.Azure Table Storage Rest вызов через javascript

Можно ли это сделать через javascript? Считаете ли вы, что что-то подобное является жизнеспособным решением? Кроме того, можете ли вы описать последствия для безопасности, связанные с этой процедурой?

обновление

Я found этот ответ, который был задан 2-х лет назад, и заявляет, что вы не можете совершать звонки с помощью JavaScript. Это все еще актуально?

ответ

2

Можно ли это сделать через javascript?

Абсолютно верно. Фактически, это основа продукта, который я построил. Хотя есть определенные вещи, которые вам нужно сделать в первую очередь.

Включение CORS

Поскольку JavaScript служил из вашего домена доступ к ресурсам с вашего счета для хранения, по умолчанию это будет отключен в браузере, как это запрос междоменное. Что вам нужно сделать, так это включить CORS в Table Service на вашей учетной записи хранилища, чтобы разрешить междоменные запросы. Обратите внимание, что это одноразовая операция, которую вам необходимо выполнить для комбинации учетных записей домена/хранилища. Чтобы узнать больше о Azure Storage и CORS, перейдите по этой ссылке: https://msdn.microsoft.com/en-us/library/azure/dn535601.aspx.

Использование Shared Access Signature

После CORS включена, следующая вещь, которую вы должны были бы сделать в вашем приложении, чтобы использовать Подпись Shared Access (SAS). SAS гарантирует, что вы не делите свой ключ учетной записи хранилища на JavaScript (видимый для всех пользователей) +, он предоставит пользователям, использующим ваше приложение, разрешения времени (чтение/запись/удаление на основе ваших требований). Чтобы узнать больше о SAS, см. Следующие ссылки: https://azure.microsoft.com/en-in/documentation/articles/storage-dotnet-shared-access-signature-part-1/ & http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-table-sas-shared-access-signature-queue-sas-and-update-to-blob-sas.aspx.

Потребляйте Таблица Сервис REST API

После того, как эти вещи сделаны, все, что вам нужно сделать, это потреблять Таблица Service REST API. Вы должны использовать AJAX для этой цели. Для операций API REST API таблицы обратитесь к этой ссылке: https://msdn.microsoft.com/en-us/library/azure/dd179423.aspx.

Также вы можете описать последствия для безопасности, связанные с этой процедурой ?

Насколько последствия для безопасности обеспокоены, пожалуйста, убедитесь, что:

  • Период времени, для которого является SAS действует как раз. Вы не хотите создавать SAS, который активен больше, чем требуется пользователю для выполнения операции.
  • Вы не выдаете разрешения в SAS, которые не требуются. Например, если все, что вы хотите, чтобы пользователь выполнял, это чтение сущностей из таблицы, а только разрешение на чтение. Не разрешайте разрешения на запись/удаление.
  • Если возможно, примените IP-ACL к вашему SAS, чтобы SAS использовался только с IP-адресов, определенных в SAS. Это будет препятствовать пользователям использовать SAS.
  • Заставить HTTPS, чтобы избежать атак типа «человек в середине».
+0

Есть ли способ включить CORS и установить правила без использования Visual Studio? – LetsPlayYahtzee

+0

Существуют доступные инструменты, с помощью которых вы можете установить правила CORS или использовать Azure SDK и написать код для установки правил CORS. Инструмент, который я создаю, обладает этой возможностью. Не стесняйтесь проверить это на http://www.cloudportam.com. Другим инструментом, который я могу порекомендовать, является Cerebrata Azure Management Studio (http://www.cerebrata.com). Если вы будете искать вокруг, я уверен, что вы найдете и другие инструменты. –

+0

Я должен был спросить, можно ли избежать использования C# и вместо этого использовать Python. При небольшом поиске я нашел несколько библиотек python, которые кажутся подходящими. Спасибо – LetsPlayYahtzee

Смежные вопросы