Подписи общего доступа Azure для ограничения доступа

Мы только начинаем использовать Azure, и я пытаюсь решить некоторые проблемы с безопасностью.

Мы разрабатываем веб-приложение, которое в основном состоит из javascript. Мы хотим хранить javascript в хранилище BLOB-объектов / CDN. Но пока мы его не выпустим, нам нужен только наш офис. Я понимаю, что не могу создать правило брандмауэра для большого двоичного объекта Azure, поэтому ограничение доступа к нашему офисному IP-адресу отсутствует.

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

Я знаю, что это может показаться слабым, но я действительно понятия не имею, как MS делает вещи, исходящие из чисто * nix-мира. Все руководства содержат несколько строк кода, в которых рассказывается, как получить доступ к материалам с помощью SAS, но не много о настройке политик в первую очередь. Кроме того, будет ли этот подход работать с CDN?


person Bill Rosmus    schedule 03.06.2013    source источник


Ответы (2)


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

Вы можете создать SAS для любого большого двоичного объекта на любом языке. Вот, например, учебник по Java. На этом этапе вы можете встроить полученную ссылку на свою веб-страницу. Должен работать как обычный URL.

SAS не будет работать против CDN, поскольку CDN предназначен только для общедоступных BLOB-объектов.

person David Makogon    schedule 03.06.2013
comment
Этот учебник действительно помог, спасибо. Теперь я полагаю, что мне также нужно создать службу для приложения, требующего, чтобы актив, хранящийся в «хранилище BLOB-объектов», мог получить токен SAS. Поскольку это не обязательно в хранилище, я могу ограничить доступ к нему с помощью брандмауэра или использования учетных данных. Как обычно делается эта часть? Кроме того, знаете ли вы, есть ли способ сделать токен SAS без срока действия? Спасибо за помощь. - person Bill Rosmus; 04.06.2013
comment
Если ваше приложение source извлекает большой двоичный объект, ему не нужен SAS - оно просто подключается к хранилищу имя + ключ. Фактически, каждый отдельный языковой SDK, обертывающий REST API хранилища, принимает строку подключения, состоящую из пространства имен + ключа (и этот ключ является частным для вас - никогда не отдавайте его; вы всегда можете его повторно сгенерировать, но просто ... не отдам). А для SAS с неограниченным сроком действия просто укажите дату «до» примерно 1/1/2030 и надейтесь, что у вас нет ошибки Y2.3K. :) - person David Makogon; 04.06.2013
comment
Единственный случай, когда вам нужен SAS, - это когда вы предоставляете кому-то URI большого двоичного объекта, и этот большой двоичный объект является частным. Это отлично работает, если, скажем, вы храните PDF-файлы с ежемесячной выпиской в ​​хранилище BLOB-объектов. Пользователь просматривает свою страницу, хочет увидеть свою ежемесячную выписку. Вы можете либо загрузить blob-объект на свою виртуальную машину и передать его в браузер пользователя, либо ... просто сгенерировать SAS для PDF-файла, действительный, скажем, 10 минут, вставить URI в тег <a> и позволить пользователю щелкнуть, чтобы получить (и не использовать пропускную способность вашей виртуальной машины, вместо этого переходя прямо в службу хранения). - person David Makogon; 04.06.2013
comment
Да, дата в далеком будущем имеет смысл. Мое приложение не является источником получения большого двоичного объекта, который будет выполняться несколькими страницами веб-приложения. Им потребуется безопасный доступ к активам, пока проект не будет запущен, и они смогут сбросить токены. Я что-нибудь придумаю. Спасибо еще раз. - person Bill Rosmus; 04.06.2013

Как я понял со страницы «Обзор Windows CDN» в MSDN заключается в том, что с помощью Windows Azure CDN можно кэшировать только общедоступные большие двоичные объекты. Чтобы сделать большой двоичный объект общедоступным для анонимного доступа, вы должны обозначить его контейнер как общедоступный. Как только вы это сделаете, все большие двоичные объекты в этом контейнере станут доступны для анонимного доступа для чтения.

Если для общего доступа к контейнеру задан доступ для чтения, то любой аноним, использующий URL-адрес контейнера больших двоичных объектов, может читать все большие двоичные объекты в этом контейнере. Доступ READ не дает автоматически доступа WRITE, DELETE или LIST к контейнеру.

Если контейнер больших двоичных объектов является общедоступным, то создание общей подписи доступа или сохраненной политики доступа не предотвратит этот общий доступ. Если вы хотите контролировать доступ к контейнеру с помощью подписи общего доступа или сохраненной политики доступа, вы должны установить для общего доступа значение ВЫКЛ. Это обсуждается в разделе «Управление доступом к контейнерам больших двоичных объектов Windows Azure с помощью Java »И в других местах на MSDN.

person Mark Rovetta    schedule 03.06.2013