我应该使用 Secrets Manager 来存储客户的 API 密钥吗?

如何解决我应该使用 Secrets Manager 来存储客户的 API 密钥吗?

我正在实施一项服务,该服务要求我使用客户的 API 密钥调用他们的 API。我的客户会在他们的帐户中向我提供他们的 API 密钥。

当我调用客户的 API 时,我必须在调用之前检索他们的 API 密钥。由于这些是我客户的 API 密钥并且我希望它们被安全保存,我正在考虑将它们全部保存在 AWS Secrets Manager 中。我有大约 5,000 个用户(仍在增长),我计划将他们的所有密钥存储到 Secrets Manager 中的一个秘密中。我的应用程序每个月对我的客户 API 进行大约数百万次调用,它需要以高频率和并发性检索密钥。

但是,我不确定这是否是 Secrets Manager 的用例,因为在我看来,他们的文档只是为应用程序保留机密信息,而不是为客户(如数据库)保留机密信息。同时,将加密的密钥存储在数据库中并必须使用 KMS 密钥对其进行解密,这听起来可能会导致大致相同的成本。

Secrets Manager 是否适用于存储客户敏感信息(例如 API 密钥)的用例?如果没有,我应该考虑什么?

解决方法

单个秘密中的 50k api 密钥会变得非常笨拙。假设一个 40 字节的令牌,您正在查看 2mb 的数据 - SSM 的最大数据长度为 4096 字节,除非我弄错了。

对我来说,使用 KMS 生成密钥并在将客户 API 密钥写入 DynamoDB 表(或什至 RDS,如果您愿意)之前使用该密钥加密它们会更有意义当您需要使用客户 API 密钥时,从 dynamoDB 中获取它,用 KMS 密钥解密它,然后使用它。

如果您想要自动密钥轮换,可以使用 SSM 来加密您用来加密客户端 API 令牌的密钥。您的令牌解密密钥将保持可用,而包装 SSM 条目将使用策略设置的密钥轮换重新加密。

最后,正如上面 Software Engineer 所建议的,有 Vault。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?