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



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

编辑:如果你可以单独上传一个单独的pem密钥文件,我该怎么做?你的名字是怎么写的?

参考:你已经通过应用程序上传了所有文件。https://stackoverflow.com/a/12609865/1717563

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

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

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

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

您需要在哪里签名?

大多数时候,您可以使用app_identity(无需PEM密钥)来授权请求,或创建签名来签署访问GCS等谷歌服务的请求。点击此处了解更多

下面是一个示例,向您展示如何使用app_identity和服务帐户将对象发布到GCS以签署发布请求。

最新更新