实施服务帐户密钥轮换的挑战

时间:2020-08-07 11:33:52

标签: node.js google-app-engine google-cloud-platform google-cloud-firestore google-cloud-functions

任何人都有关于如何为云功能AppEngine,GKE中使用的服务帐户凭据实施自动密钥轮换的建议。 GCP已将此添加为云原生服务的建议安全策略之一。我们可以找到API /客户端库来为现有服务帐户生成新的私钥。但是我们并没有真正了解如何在运行时更新部署在AppEngine中的应用程序上的新密钥,即云功能。

1 个答案:

答案 0 :(得分:3)

使用Google Cloud组件时,不必使用服务帐户密钥文件。这是一个不好的做法(即使在太多的教程中甚至在“ Google Cloud”教程中都以“标准”的形式出现!)。

服务帐户密钥文件是要管理的噩梦。这是一个文件。您可以复制它,可以通过电子邮件发送,甚至可以在源存储库中进行提交(也许是公共仓库!)。此外,您需要保持安全并定期旋转...

简化此操作的最佳方法是不使用它们,而是依靠Google Cloud组件身份。 当然,对于所有外部组件(例如CI / CD,本地应用程序(或其他云提供商)),服务帐户密钥文件是在Google Cloud上进行身份验证的最佳方法 >

在每种情况下,您都可以在代码中恢复default credential。 (here an example是简单凭证,没有客户端库,只有Google OAuth2库)

注意:对于某些操作,App Engine默认服务帐户无法使用(根据元数据服务器生成身份令牌或更改access_token的范围)。为此,我建议您impersonate service accounts,而不要使用服务帐户密钥文件