Google app engine 使用服务帐户的PEM密钥部署GAE应用程序安全吗

Google app engine 使用服务帐户的PEM密钥部署GAE应用程序安全吗,google-app-engine,web-deployment,sign,pem,Google App Engine,Web Deployment,Sign,Pem,我部署了一个GoogleAppEngine应用程序,它读取其服务帐户的Pem密钥来创建签名。现在我把钥匙放在了云存储上,但我不确定它是不是真的。作为另一种选择,密钥可以嵌入到应用程序代码中。 哪个更安全?还有其他选择吗?这些想法错了吗 编辑: 如果您可以单独上传一个单独的pem密钥文件,我该怎么做? 它是如何用你的yaml写的 参考:您已通过应用程序上载所有文件。 您可以将PEM密钥作为应用程序代码的一部分进行部署,但需要将其保留在任何静态目录之外。不过,您不应该将其作为字符串包含在代码文件中,

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

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

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

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

在早期版本的GAE中,您还可以阻止团队中的其他开发人员下载应用程序代码。不确定是否仍支持此选项。如果是的话,你应该考虑一下,如果有其他开发者可以访问你的应用程序。p> 此外,您可能希望从版本控制系统(例如git)中排除PEM密钥。我通过排除包含所有PEM密钥和其他机密文件的目录来实现这一点。你可以在其他安全的地方找一个后备


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

您需要在哪里签名

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


下面是一个演示如何使用app_身份和服务帐户将对象发布到GCS,以签署发布请求。

感谢您的精彩评论。我编辑了一个不清楚的问题。我已经澄清了我的答案。您不能单独上载密钥文件,只能与应用程序代码一起上载。我现在将其用于signedurl。