首页 文章

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

提问于
浏览
11

我正在构建一个将在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 Cloud 服务或Google API,并且只允许具有适当Google应用标识符的应用访问这些机密 .

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

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

谢谢,克里斯

4 回答

  • 1

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

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

  • 2

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

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

  • 1

    所以,据我所知,答案是你不能 . 您正在寻找的是相当于KMS . 这项服务让我很酷,只需几行简单的代码就可以让你快速完成非常强大的加密 . Azure有一个名为KeyVault的类似服务 . 据我所知,它缺乏自动密钥生成和轮换,但除此之外,它几乎就是它 . 你在KeyVault上得到的东西并不完全相同,也没有像KMS那样 .

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

    • 创建一个VPC并使用其他地方的HSM . 您可以使用RackSpace,也可以只使用AWS KMS . 这听起来很疯狂,但是's actually a good idea and the extra management is worth it. In general the most secure solution separate the keys from the encrypted data, particularly at rest. That means that keys in one data center and encrypted data stored in another data center is the most secure solution. That sounds like hard stuff, but thankfully I'已经制作了一个开源项目,这让你很容易被称为KeyStor . 使用KeyStor,您可以获得一个数据中心,处理一天内设置的加密服务,没问题,您可以非常经济有效地使用AWS .

    • 设置您自己的cypto服务,跳过HSM集成,只需注意谁有权访问维护密钥的计算机 . 您也可以使用KeyStor执行此操作,如果KeyStor没有't quite do what you want, that'为什么它是开源的 . 获取代码并构建您需要构建的内容 .

  • 1

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

    Here来自Google的一些关于秘密管理的文档,以及here是一个使用Cloud KMS在应用层专门加密Google Cloud 存储数据的代码库 .

相关问题