AWS Cognito - 如何创建备份?

15

我们目前正在将我们的Auth服务迁移到AWS Cognito。由于用户资料和数据的安全至关重要,我们需要备份主用户池。我们注意到有一项选项可以通过具有与池属性相等的标题的.csv文件导入用户,但没有自动生成.csv文件的选项。有谁知道自动生成这样的文件的解决方案吗?重点是为了保护用户资料,防止意外删除整个用户池(例如,假设星期五晚上疲惫的开发人员)。我个人尝试了通过手动完成所有工作(获取标头、用户、映射并创建csv)来实现解决方法,但这并不是非常可靠。

4个回答

12

我知道我来晚了,但是留下这个供未来搜索参考。

在使用Cognito时,我也遇到了同样的问题,因此制作了一个工具来备份并将其恢复到用户池中。

您可以在此处找到它:https://www.npmjs.com/package/cognito-backup-restore

这可以通过cli或使用imports(如果您想编写自己的封装器或脚本)来使用。请提出任何改进建议:https://github.com/rahulpsd18/cognito-backup-restore


这仍在开发中,因为我计划利用Cognito用户池导入作业而不是使用aws-sdk的adminCreateUser来创建用户, 以便在恢复时改进当前实现。但现在它运行良好。

跨区域Cognito复制也将被实现,一旦我完善恢复过程。


你好, 密码怎么办?你不能从Cognito获取用户密码,对吧? - sekula87
1
Cognito 会为您注册的密码存储一个盐和验证器,但不会以您输入的形式存储它。它也不会提供访问权限。因此,您无法从 Cognito 获取用户密码。最好的方法是要求用户使用重置密码功能来设置新密码。 - rahulpsd18
很棒的套餐。它是否恢复了id/sub属性,还是每个记录都会重新创建一个新的id? - Chrysanthemums

9
亚马逊发布了Cognito用户配置文件导出参考架构,用于从用户池中导出/导入用户。然而存在一些限制
  • 密码不会被备份,用户将需要重置
  • 不支持使用MFA的池
  • Cognito子属性将是新的,因此如果系统依赖于它们,则需要将其复制到自定义用户属性中
  • 联合身份验证用户对子属性也会造成挑战
  • 高级安全性:不导出用户历史记录
  • 不支持允许电话或电子邮件用户名选项的池
  • 不支持跟踪设备

4
我也创建了一个工具,它还支持备份和恢复用户组和关系:

https://github.com/mifi/cognito-backup

你可以像这样安装它:
npm i -g cognito-backup

然后像这样使用它:

cognito-backup backup-users eu-west-1_1_12345
cognito-backup backup-groups eu-west-1_1_12345
cognito-backup backup-all-users eu-west-1_1_12345

cognito-backup restore-groups eu-west-1_12345
cognito-backup restore-users eu-west-1_12345 Abcd.1234 --file eu-west-1_12345.json

请注意,由于AWS的限制,密码无法备份。

0

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接