我需要让App Engine应用与外部数据库通信并与之共享数据
我可以提出的最佳选择是将外部数据库数据输出到xml文件,然后在我的应用引擎应用中处理它并将其存储在数据存储区中,
虽然共享的数据是敏感数据,例如登录详细信息,因此将其输出到xml文件并不是一个好主意,应用引擎应用程序是否可以直接查询数据库?或者是否有使用xml文件的安全选项?
哦,即时通讯使用python / django,外部数据库将托管在另一个域
答案 0 :(得分:6)
Google Apps'Secure Data Connector(SDC)专为此类任务而设计 - 事实上,它甚至可以在“其他数据库”生活在防火墙(企业数据的常见情况)之后,以及其他任务中运行Google Apps(文档,电子表格,...)以及App Engine。
正如the docs总结的那样,流程是:
Google Apps转发授权数据 来自内部用户的请求 谷歌的Google Apps域名 隧道协议服务器。
隧道服务器验证a 用户有权制作 请求指定的资源。 Google隧道服务器已连接 通过加密隧道到SDC,其中 在公司内部运行 网络
隧道协议允许SDC 连接到Google隧道服务器, 验证并加密数据 流过互联网。
SDC使用资源规则进行验证 如果用户被授权制作一个 请求指定的资源。
可选的Intranet防火墙可以 用于提供额外的网络 安全
SDC执行网络请求 指定的资源或服务。
该服务验证已签名 请求,检查凭据,和 如果用户被授权,则返回 数据。
如果你不必担心防火墙,并且没有任何安全担忧,你可以通过直接使用urlfetch
来简化事情(正如Daniel的回答所暗示的那样)(没有隧道,没有验证,没有加密,没有过滤,...) - 但您担心“共享的数据是敏感数据,如登录详细信息”表明情况并非如此。
这不是XML与其他格式的问题 - 问题在于敏感数据不应该通过不受保护的渠道“清晰”传播,也不能让所有人都可以使用,并且通常有更好的专业基础设施处理加密,过滤和授权问题,正如SDC所做的那样,而不是必须在您自己的应用程序或专用基础架构中间件中编写所有这些(并使其完全安全和锁定)。出于这些目的,SDC可能非常有用,即使您只需要其一小部分功能。
答案 1 :(得分:3)
您可能需要考虑在托管数据库的外部域上公开一组Web服务,然后使用App Engine的URL Fetch API通过HTTPS与您的外部域进行通信。