应用程序如何安全地存储Google Cloud Datoreore中的机密信息?

时间:2015-02-23 17:16:49

标签: security google-app-engine oauth google-cloud-platform google-cloud-datastore

我正在构建一个将在Google App Engine(GAE)上运行的应用程序。它将需要访问用户在其他系统(例如用户的Nest恒温器,Yahoo邮件)中存储的数据。在GAE上运行的应用程序将允许用户为其他系统提供凭据。该应用程序会将这些凭据存储在Google Cloud(数据存储区)中,以供以后代表用户在Google Compute Engine上运行的应用程序使用。该应用程序还允许OAuth允许用户允许应用程序代表用户访问外部系统。该应用程序需要在Google Cloud中存储用户凭据(用户名和密码)或OAuth访问令牌。

应用程序需要在存储密码之前加密密码,并且能够解密数据以将其发送到外部系统。也就是说,系统需要使用对称加密,因此需要安全地管理密钥。

应用程序如何安全地将这些机密存储在Google Cloud Datastore(数据存储区)中?我想我正在寻找像Google CloudHSM for Google这样的东西。也就是说,我想用种子和密钥id存储每个秘密,并使用密钥id从密钥管理系统获取密钥。此实现还允许进行密钥轮换和其他标准安全实践。

我认为我正在寻找提供机密管理的Google云服务或Google API,并且只允许具有适当Google应用标识符的应用访问这些机密。

Google Cloud或Google API中是否有可以管理机密的服务?我应该考虑另一种架构吗?

顺便说一句,该应用程序使用Google Identity Toolkit(GitKit)来验证和授权用户使用GAE托管的应用程序。该应用程序允许用户使用联合身份或用户名和密码通过GitKit创建帐户。

谢谢, 克里斯

5 个答案:

答案 0 :(得分:2)

与此同时,Google还添加了密钥管理服务:https://cloud.google.com/kms/

你可以,例如在将数据存储到数据库之前使用它来加密数据。或者,使用KMS加密AES密钥以加密您的数据,并可能在某处保留AES密钥的备份,以防您无法访问KMS。

答案 1 :(得分:1)

App Identity Service可能正是您所寻找的https://cloud.google.com/appengine/docs/java/appidentity/#Java_Asserting_identity_to_other_systems

它允许您使用特定于应用程序的私钥对内容进行签名,并提供轮换证书以验证签名内容。

答案 2 :(得分:1)

据我所知,答案是你不能。你要找的是等同于KMS。这项服务让你创建和管理密钥,并做一堆你自己的加密。它非常酷,只需几行简单的代码就可以让您快速完成非常强大的加密。 Azure有一个名为KeyVault的类似服务。据我所知,它缺乏自动密钥生成和轮换,但除此之外它还不错。在此回复时,Google没有相应的服务。他们有一个内部KMS,用于加密操作,你可以提供自己的密钥,但这就是它。与KeyVault不太一样,没有像KMS那样。

那说有希望。你可以做以下两件事之一:

  1. 创建一个VPC并使用其他地方的HSM。您可以使用RackSpace,也可以只使用AWS KMS。这听起来很疯狂,但实际上这是一个好主意,额外的管理是值得的。通常,最安全的解决方案将密钥与加密数据分开,特别是在休息时。这意味着一个数据中心的密钥和存储在另一个数据中心的加密数据是最安全的解决方案。这听起来很难,但幸好我已经制作了一个开源项目,让你很容易被称为KeyStor。使用KeyStor,您可以获得一个数据中心,处理一天内设置的加密服务,没问题,并且您可以非常经济有效地使用AWS。
  2. 设置您自己的cypto服务,跳过HSM集成,只需要注意谁有权访问维护密钥的计算机。您也可以使用KeyStor执行此操作,如果KeyStor没有完全按照您的要求执行此操作,那么这就是开源的原因。获取代码并构建您需要构建的内容。

答案 3 :(得分:1)

您可以将密钥存储在存储中(例如,在您选择的数据存储区,Google云端存储区或其他存储系统中),并使用Google的Cloud KMS中的密钥对其进行加密。

Here来自Google的一些关于秘密管理的文档,here是一个使用Cloud KMS在应用层专门加密Google云端存储数据的代码库。< / p>

答案 4 :(得分:0)

有关提供用于安全存储机密的API的Google Cloud托管服务,请参见Google Cloud Secret Manager了解详情。

Secret Manager是用于API密钥,密码,证书和其他敏感数据的安全,便捷的存储系统。 Secret Manager提供了一个集中的地方和单一的真理来源,可以跨Google Cloud管理,访问和审计秘密。