Google App Engine上的私人npm / git依赖关系

我正在使用Google App Engine的新自定义运行时开发一些应用程序,并且需要提取代码以作为依赖关系进行提取。 这些依赖关系是从私有npm存储库或私人git存储库中添加的。

我如何设置我的GAE项目来使用这样的私有存储库,而不需要在存储库本身中检查敏感的细节? (Git和/或npm没有关系;宁愿git。)

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

考虑到传统的持久性磁盘硬件(与运行时链接的仅仅是特定的持久数据存储类) ,您可能会看到我要去的地方:访问您的GCS Bucket / Datastore / Cloud SQL(所有这些都是一种持久性数据存储)通过在您的项目的服务帐户中使用OAuth来保护,或者在最后一种情况下使用Cloud SQL unix套接字的数据中心级别的安全性,从而确保信用在存储时不会被任何人访问。

比较:在传统的例子中,包含creds的磁盘文件是受保护的,事实上没有其他计算机可以在没有操作系统的明确许可的情况下访问磁盘,这必须被故意configuration为接受这样的连接(然后你将实施某种授权/authenticationscheme以确保此连接的安全性)。

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

所以你可以:

  • 使用gsutil工具来放置一个包含creds的对象,并设置这个对象的ACL,使它只属于你的应用程序的服务帐户

  • 使用远程API来放置一个包含creds的Datastore实体

  • 通过本地运行的客户端连接到您的Cloud SQL实例并插入数据。 (注意这个选项,你没有使用本地客户端的OAuth,但希望有一个安全的隧道和数据库用户名和密码的身份validation因素。当托pipe虚拟机想要访问实例时,它发生在谷歌的networking,所以你可以放心的连接的安全性)。

…在这一点上, 您可以从托pipe虚拟机访问存储在任何地方的信用卡 。