-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
添加对AWS Secrets Manager支持及支持Redis SSL连接 #2212
base: master
Are you sure you want to change the base?
Conversation
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## master #2212 +/- ##
==========================================
- Coverage 75.14% 75.10% -0.04%
==========================================
Files 105 105
Lines 15167 15185 +18
==========================================
+ Hits 11397 11405 +8
- Misses 3770 3780 +10
☔ View full report in Codecov by Sentry. |
这个功能是挺好的, 当前因为合规各种 kms 工具都要上, 你这边如果能提供一些泛用型的 kms 就更好了, 就比如说有其他人也想接入某种 kms, 不仅是 aws 的, 应该如何配置实现? |
建议你先把 redis ssl 支持先提交了, kms 这部分可以下个 pr 讨论. |
有没有可能 kms 之类的配置写在django 配置,或内置配置表内,一个archery 配置一个,然后数据库中只需勾选是否为 kms 管理用户密码即可。 我理解kms应该是archery有一个access key,然后archery可以正常获取很多db的账号密码了。 |
AWS 里的Secrets Manager可以理解为一个保存密钥的一个存储。每一项密钥对应着一个secretid, 可以通过secretid获取密钥的信息。密钥是一个字典,可以包含用户名,密码,URL等。访问secrets manager可以通过AKSK进行访问。但如果在AWS VPC内部访问,一般情况下不会直接分配AKSK,而是使用给予对应EC2 Role或者给相应Pod IRSA从而获取相应的访问权限。我提交的PR对应的就是第二种情况不会显式分配AKSK,避免泄漏。 对应于你提到的适配所有云的情况。每一个instance需要确定使用的是哪个云的服务及对应的secrets id, 如果有多个云Account,或者跨云的情况下,确实是需要指定相应的AKSK,这块目前与Archery instance下的aliyun cloud config有点类似,需要指定instance使用的对应的AKSK。 |
明白了,那可能是设计一个表用来存供应商信息,比如kms 表,内部填写供应商类型,access key 和secret(也可以不填自动获取) 然后设置一对多的外键关联到实例。 代码实现上,可以参考查询引擎实现一个AwsKms 的class ,后续其他的kms 可以类比实现。 你可以参考这样实现一下。 |
支持从AWS Secrets Manager服务中获取username及password. 以支持RDB数据库的密码自动轮换机制。
sql_instance表中添加awsSecretId字段以保存aws secret id. 如果有填写username及password以从AWS获取中为准。
添加对Redis SSL连接支持。
sql_instance表中添加is_ssl字段,表明是否使用ssl进行连接。目前只支持redis