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

Is it safe to deploy GAE application with PEM key of its service account

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

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

参考:您已经通过应用程序上传了所有文件。

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

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

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

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

哪里需要签名?

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

这里 an example 向您展示了如何 post 使用 app_identity 和服务帐户签署 post 请求的 GCS 对象。