RDS 保密快照的 CDK 构造
定期取用RDS数据库的快照,进行消毒,并与所选账户共享.
使用此软件实现您的开发和/或QA数据库创建自动化,而不是强迫它们使用一个数据库 去年创建的 被随机的善行所保持 开发者和QA 喜欢真实的数据和这个 允许您创建非生产数据库,并使用已消毒的生产数据。 使用消毒步骤删除密码, 取消信用卡号码,取消PII等.
见 构造枢纽 用于所有支持语言的安装指令和API.
概览
此工程提供一个 CDK 架构, 设置一个步骤函数和一个执行此函数的定时器 。 这个 函数将创建给定数据库的静态快照并共享配置的账户。 这些账户可以 然后从这些快照中创建新的数据库.
步骤函数可以通过以下方式创建快照:
- 获取给定数据库的快照 :
- 查找给定数据库的最新快照
- 创建并等待新的快照
- 提供 KMS 密钥后重新加密快照
- 从快照创建临时数据库
- 等待数据库准备好
- 将临时数据库中的主密码重置为随机密码
- 等待密码设置
- 使用 Fargate 任务连接到临时数据库并运行已配置的 SQL 语句来消毒数据
- 绘制临时数据库的快照
- 可选择与其他账户共享快照( 如果您有开发者/ QA 的单独账户)
- 删除临时数据库和快照
使用量
- 确认您正在使用 CDK v2
- 安装适当的软件包
- 蟒
pip install cloudsnorkel.cdk-rds-sanitized-snapshots - 类型脚本或 Java 脚本
npm i @cloudsnorkel/cdk-rds-sanitized-snapshots - 爪哇语
<dependency> <groupId>com.cloudsnorkel</groupId> <artifactId>cdk.rds.sanitized-snapshots</artifactId> </dependency> - 走开
go get github.com/CloudSnorkel/cdk-rds-sanitized-snapshots-go/cloudsnorkelcdkrdssanitizedsnapshots - . NET 网络
dotnet add package CloudSnorkel.Cdk.Rds.SanitizedSnapshots
- 蟒
- 使用
RdsSanitizedSnapshotter在代码中构造( 以默认参数开头是好的)
代码样本
let vpc: ec2.Vpc;
let databaseInstance: rds.DatabaseInstance;
new RdsSanitizedSnapshotter(this, 'Snapshotter', {
vpc: vpc,
databaseInstance: databaseInstance,
script: 'USE mydb; UPDATE users SET ssn = \'0000000000\'',
})
加密
新的快照将用原始数据库所用的同样密钥加密. 如果原始数据库不是 加密,快照也不会被加密. 要添加另一个改变密钥的步骤,请使用 KMS 密钥参数.
见 AWS 文档 说明 允许其他账户访问密钥.
解决问题
- 请检查access-date=中的日期值 (帮助) 状态机器状态检查步函数. 点击失败的步骤并检查输入, 输出 和例外.
测试
npm run bundle && npm run integ:default:deploy