Лучший вариант для хранилища данных Google App Engine и внешней базы данных? - PullRequest
3 голосов
/ 09 апреля 2010

Мне нужно, чтобы приложение App Engine общалось и делилось данными с внешней базой данных,

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

хотя данные, которыми обмениваются, являются конфиденциальными данными, такими как данные для входа в систему, поэтому вывод их в файл xml не очень хорошая идея, возможно ли, чтобы приложение App Engine напрямую запрашивало базу данных? или есть безопасный вариант для использования XML-файлов?

о, и я использую python / django, и внешняя база данных будет размещена в другом домене

Ответы [ 2 ]

6 голосов
/ 09 апреля 2010

Google Apps ' Secure Data Connector (SDC) предназначен для такого рода задач - действительно, он работает даже тогда, когда «другая база данных» находится за брандмауэром (распространенный случай для корпоративных данных) и для других Служб Google (Документы, таблицы и т. д.), а также для App Engine.

Как документы обобщить вещи, поток:

  1. Службы Google пересылают авторизованные данные запросы от пользователей, которые находятся в домен Служб Google для Google серверы туннельных протоколов.

  2. Туннельные серверы проверяют, что Пользователь имеет право сделать запрос к указанному ресурсу. Туннельные серверы Google подключены по зашифрованному туннелю до SDC, который работает внутри компании сеть.

  3. Туннельный протокол позволяет SDC подключиться к туннельному серверу Google, аутентифицировать и шифровать данные который течет через Интернет.

  4. SDC использует правила ресурса для проверки если пользователь имеет право сделать запрос к указанному ресурсу.

  5. Дополнительный межсетевой экран может быть используется для обеспечения дополнительной сети безопасность.

  6. SDC выполняет сетевой запрос к указанный ресурс или услуги.

  7. Сервис проверяет подписанный запрос, проверяет учетные данные, и если пользователь авторизован, возвращает данные.

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

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

3 голосов
/ 09 апреля 2010

Вы можете рассмотреть возможность предоставления набора веб-служб во внешнем домене, где размещена ваша база данных, а затем использовать API Fetch API App Engine для связи с внешним доменом через HTTPS. .

...