0

我在 AWS 云上使用 AWS Amplify 作为无服务器技术构建了一个基于 SAAS 的应用程序。我正在使用至少 2-3 个第三方服务,例如 WordPress、JWplayer,并通过它们的 API 进行通信,以对它们执行任何操作,并且我需要 API 凭据。因为,这是一个多租户应用程序,因此对于每个用户,我都有单独的第三方用户帐户,就像我的应用程序的用户 A 有 WordPress 和 JWPlayer 的帐户,而用户 B 在这些第三方应用程序上有不同的帐户。因此,用户 A 和 B 对其第三方具有不同的 API 凭证。我想在我的应用程序级别安全地保存和检索每个用户的 API 凭据。我探索了 SSM 参数存储,以便将凭据作为对象进行存储和检索:

{
    "UserA@gmail.com" : 
                     {
                           "wordpress_api_key": "abcd",
                           "wordpress_api_value": "1234",
                           "JW_api_key": "qwer",
                           "JW_api_value": "5422",
                      }
}

我正在考虑将包含每个单独用户的不同 API 凭据的对象作为上述对象放入 SSM 参数存储中,并通过我的 Lambda 中的唯一电子邮件 ID 进一步检索,并使用 SSM 库对前端做出反应。

或者有没有更好的方法来做到这一点?就像以加密形式存储在 DynamoDB 中并从中检索然后解密?

4

1 回答 1

1

我会坚持使用 Parameter Store,因为它提供了开箱即用的透明加密支持,并与 KMS 很好地集成。

至于存储方案,有几种不同的存储方式。您可以创建一个 Parameter Store 条目树,并将每个键或值单独存储为SecureString参数,例如:

/myapp/user-key/wordpress/key
/myapp/user-key/wordpress/value
/myapp/user-key/JWAPI/key
/myapp/user-key/JWAPI/value

我个人更喜欢上述选项,因为它很灵活,可以让您分别访问每个凭证。您还可以将非凭据存储为String条目,这样它们就不会经过加密。但是每个帐户有 10k 个参数的限制,所以如果您希望处理大量用户,您可能会超过限制。

另一种选择是将整个用户“个人资料”存储为一个条目,正如您在问题中提到的那样。此选项不太灵活,因为您始终必须检索/保存整个对象,即使仅更改了其中的一部分。虽然此选项允许您在达到 10k 限制之前存储更多用户配置文件,但每个用户配置文件的大小必须小于 4KB,因为这是每个条目的 AWS 限制。

于 2021-06-01T01:52:15.220 回答