我使用Google App Engine的新自定义运行时来开发一些应用程序,并且需要提升代码以作为依赖项提取。这些依赖项可以从私有npm存储库或私有git存储库添加。
如何设置我的GAE项目以使用此类私有存储库,而无需将敏感详细信息检入存储库本身? (Git和/或npm并不重要;更喜欢git。)
答案 0 :(得分:1)
执行此操作的传统方法是在服务器上设置包含信用卡的文件。当您的应用需要信用时,它会读取文件并通过(假设)安全通道将其发送给需要检查它们的人。如果您在纯计算引擎上运行,那么拥有永久磁盘不是问题,但是您必须管理并启动实例以自行负载平衡。
考虑传统的持久性磁盘硬件 - 链接到运行时只是一个特定类的持久性数据存储,您可能会看到我要去的地方:访问您的GCS Bucket / Datastore /通过在项目的服务帐户中使用OAuth或在最后一种情况下使用Cloud SQL unix套接字的数据中心级安全性来保护Cloud SQL(所有这些都是一种持久性数据存储),确保无法访问信用卡除了你在存储之外的任何人。
比较:在传统示例中,包含信用卡的磁盘文件受到以下事实的保护:没有其他计算机可以在没有操作系统明确许可的情况下访问磁盘,操作系统必须故意配置为接受此类连接(然后你将实现某种授权/认证方案,以确保这种连接的安全性)。
OAuth2.0广泛用于Google云平台,可确保与实例的持久存储(无论您选择哪个)相同的连接,同时还提供强大的授权/身份验证方案。对于Cloud SQL,auth系统可以像您的用户名一样简单,并通过安全隧道传递。这个问题只是将信用从您的机器转移到运行时可以访问的地方。
所以,你可以:
Use the the gsutil tool放置一个包含creds的对象并设置此对象的ACL,使其专属于您应用的服务帐户
Use the remote API放置包含信用卡的数据存储区实体
Connect to your Cloud SQL instance through a locally-running client并插入数据。 (请注意,此选项表示您没有使用本地客户端的OAuth,而是hopefully a secure tunnel以及db用户名和密码的身份验证因素。当托管VM想要访问该实例时,它会在Google的网络中进行,这样可以确保该连接的安全性。)
......此时you can access the creds, wherever they're stored, from your managed VM。