Node.js Google App Engine上的私有npm/git依赖项

Node.js Google App Engine上的私有npm/git依赖项,node.js,git,google-app-engine,npm,Node.js,Git,Google App Engine,Npm,我正在使用GoogleAppEngine新的自定义运行时来开发一些应用程序,现在需要提取代码作为依赖项。这些依赖项可以从专用npm存储库或专用git存储库添加 我如何设置我的GAE项目来使用这样的私有存储库,而不将敏感细节检入存储库本身?(Git和/或npm不重要;更喜欢Git。)传统的方法是在服务器上有一个带有creds的文件。当你的应用程序需要creds时,它会读取文件并通过(假设)安全通道将其发送给需要检查的人。如果您运行的是纯计算引擎,那么拥有一个持久磁盘不是问题,但是您必须自己管理和启

我正在使用GoogleAppEngine新的自定义运行时来开发一些应用程序,现在需要提取代码作为依赖项。这些依赖项可以从专用npm存储库或专用git存储库添加


我如何设置我的GAE项目来使用这样的私有存储库,而不将敏感细节检入存储库本身?(Git和/或npm不重要;更喜欢Git。)

传统的方法是在服务器上有一个带有creds的文件。当你的应用程序需要creds时,它会读取文件并通过(假设)安全通道将其发送给需要检查的人。如果您运行的是纯计算引擎,那么拥有一个持久磁盘不是问题,但是您必须自己管理和启动实例以实现负载平衡

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

比较:在传统示例中,包含cred的磁盘文件受到保护,因为没有操作系统的明确许可,其他计算机无法访问该磁盘,而操作系统必须经过精心配置才能接受这种连接(然后您将实施某种授权/身份验证方案,以确保此连接的安全性)

OAuth2.0在google云平台中广泛使用,它确保与实例的持久存储(无论您选择哪个)的连接相同可以在已经提供了强大的授权/身份验证方案的情况下进行。在云SQL的情况下,身份验证系统可以像您的用户名一样简单,并通过一个安全隧道进行传递。问题只是将凭据从您的计算机传输到运行时可以访问的位置

因此,您可以:

  • 放置包含凭据的对象并设置此对象的ACL,使其仅属于应用程序的服务帐户

  • 放置包含cred的数据存储实体

  • 并插入数据。(请注意,对于此选项,您不是从本地客户端使用OAuth,而是使用db用户名和密码的身份验证因子。当托管VM想要访问该实例时,它发生在google的网络中,因此您可以确保该连接的安全性)


…在这一点上。

值得注意的是,如果这些服务使用OAuth让您授予应用程序范围内的数据访问权限,那么过程会简单得多,并且完全可以避免存储您的cred的概念。这就是OAuth的全部要点:防止存储中的cred重复,让人们记住它还有2因素身份验证设备,电脑旁的便笺等等。我想人们可能会看到使用外部组织提供的OAuth登录页面的服务,但没有实现OAuth,以使其数据范围可以作为跛脚的网络公民访问…嘿,非常感谢所有这些-非常感谢!但我不确定我是否更聪明,请原谅我的错误无知。我的问题不在于在运行时查找凭据,而是在构建时查找凭据。在App Engine上设置托管VM的方式——除非我弄错了——是在构建docker实例时安装依赖项,因此这就是凭据需要发挥作用的地方。我不想用proje签入这些ct,因为它很敏感,我不知道如何设置它。也许你已经回答了这个问题,但我不得不承认我有点迷路了-我的道歉!你能发布docker文件、shell脚本等的相关部分吗?它们实际上运行这些包的安装?看起来你要么有办法从o或者在部署时您需要将cred与源代码捆绑在一起,但
gitignore
这样您就不必担心存储库。第三个选项是在部署时将实际的libs与源代码捆绑在一起-使用maven、grunt、gradle等构建工具下载并包含私有libs j请在部署操作之前单击ust。