2015-01-13 18 views
1

我正在使用Google App Engine的新自定义运行时开发一些应用程序,并且需求已经上升为提取作为依赖关系的代码。这些依赖项可以从私有npm存储库或私有git存储库添加。Google App Engine上的私有npm/git依赖关系

如何将GAE项目设置为使用此类私有存储库,而无需将敏感细节存入存储库本身? (Git和/或npm无所谓;宁愿git)

回答

1

传统的做法是在服务器上有一个带有creds的文件。当您的应用程序需要这些信用卡时,它会读取该文件并通过(假设)安全通道将它们发送给需要检查它们的人。如果你在纯粹的计算引擎上运行,拥有一个永久磁盘不是问题,但是你必须管理和旋转实例来自我平衡负载。

对传统的永久磁盘硬件连接到运行仅仅特定类持久性数据存储的思考,你可能会看到我要去哪里:访问您的GCS桶/数据存储/云SQL(所有其中一种持久性数据存储)通过在您的项目的服务帐户中使用OAuth或最后一种情况下Cloud SQL unix套接字的数据中心级安全性进行保护,从而确保除您以外的任何人都无法访问这些信誉同时被存储。

比较:在传统的例子中,包含信用卡的磁盘文件被保护的事实是没有其他计算机可以在没有操作系统的明确许可的情况下访问磁盘,这必须被故意配置为接受这样的连接(然后你会实施某种授权/认证方案来确保这个连接的安全性)。

OAuth2.0广泛用于谷歌云平台,它可以确保与实例的持久存储(无论您选择哪个)可以进行相同的连接,同时还提供强大的授权/认证方案。对于Cloud SQL,身份验证系统可以像您的用户名一样简单,并通过安全通道传递。这个问题仅仅是将您的机器的信用转移到运行时可以访问的地方。

所以,你可以:

...并且在这一点you can access the creds, wherever they're stored, from your managed VM

+0

在这一点上值得注意的是,如果这些服务使用OAuth来授予您的应用程序访问该数据的权限,那么这个过程会简单得多,并且完全可以避免存储您的信用的概念。这就是OAuth的重点:防止存储中的信用重复,将其保留在人们的头脑和双因素身份验证设备中,便笺旁边的计算机等。我想可以看到使用OAuth登录页面提供的服务由外部组织,但没有实施OAuth,使他们的数据范围,作为一种蹩脚的网络公民... –

+1

嘿,非常感谢所有这一切 - 非常感谢!不知道我更聪明,原谅我的无知。我的问题不在于在运行时查找证书,而是在编译时*。在App Engine上管理虚拟机的方式 - 除非我错了 - 是否在构建docker实例时安装依赖关系,这就是证书需要发挥作用的地方。我不想在项目中查看这些内容,因为它很敏感,而且我不知道如何设置它。也许你已经回答了这个问题,但我必须承认我有点失落 - 我的道歉! –

+0

你可以发布docker文件,shell脚本等实际运行这些软件包的安装的相关部分吗?看起来你可能有某种方式从这些存储选项中获取信用,或者在部署时需要将信源与你的源绑定,但是它们需要“gitignore”,这样你就不必担心你的库。第三种方法是在部署时使用源代码捆绑实际库文件 - 使用像maven,grunt,gradle等构建工具在部署操作之前下载并包含私有库。 –