使用其服务帐户的PEM密钥部署GAE应用程序是否安全

时间:2015-12-30 21:12:06

标签: google-app-engine web-deployment sign pem

我部署了一个Google App Engine应用程序,该应用程序读取其服务帐户的Pem键以创建签名。现在我将密钥放在云存储上,但我不确定是不是。作为另一种选择,密钥可以嵌入应用程序代码中。 哪个更安全?还是其他任何选择?这些想法是错的吗?

编辑: 如果您可以单独上传单独的pem密钥文件,我该怎么办? 它是如何用你的yaml写的?

参考:您已经通过app上传了所有文件。 https://stackoverflow.com/a/12609865/1717563

2 个答案:

答案 0 :(得分:1)

您可以将PEM密钥部署为应用程序代码的一部分,但是您需要将其保留在任何静态目录之外。您不应该将其作为字符串包含在代码文件中,而是将其保存为单独的文件,然后将该密钥与应用程序一起上传。

在早期版本的GAE中,您还可以阻止团队中其他开发人员下载应用程序代码。不确定是否仍支持此选项。如果是,您应该考虑它,如果有其他开发人员可以访问您的应用程序。

此外,您可能希望从版本控制系统中排除PEM密钥(例如git)。我这样做是通过排除包含所有PEM密钥和其他秘密文件的目录。你可以在其他安全的地方备份。

或者,您可以按照建议将PEM密钥存储在GCS中,但它可能会为您的应用添加一点延迟,您需要注意权限设置正确(并且未来不会意外更改) )。我认为这种做法不太有利。

答案 1 :(得分:0)

您需要签名在哪里?

大多数情况下,您可以使用app_identity(没有PEM密钥)来授权请求​​或创建签名来签署访问Google服务(如GCS)的请求。更多here

以下是an example,其中介绍了如何使用app_identity和服务帐户将对象发布到GCS以对发布请求进行签名。