【问题标题】:Grant access to third party lambda function to write into my Redshift授予对第三方 lambda 函数的访问权限以写入我的 Redshift
【发布时间】:2020-01-22 05:17:47
【问题描述】:
我有这家第三方公司开发了一个解决方案,该解决方案目前正在使用 lambda 函数 X p.e. 在其帐户托管的 Redshift 中写入一些数据,我现在需要的是授予对该 lambda 函数 X 的访问权限以写入拥有的 redshift通过我的帐户。
我们怎样才能解决这个问题?
根据我之前的搜索,我认为涉及 IAM 角色,但我不确定。
提前致谢
【问题讨论】:
标签:
amazon-web-services
amazon-redshift
【解决方案1】:
最简单的方法是生成第三方可以使用的数据库用户登录:
- 使用CREATE USER 命令创建一个新的数据库用户,并指定密码
- 使用GRANT 和REVOKE 为新用户分配最低级别的必要权限(例如,只能更新特定表,不能查询任何其他表)
- 向第三方提供用户名和密码以在其 Lambda 函数中使用
- 在 Redshift 集群上配置 Security Group 以允许访问在第三方运行其 Lambda 函数的区域中使用的 range of Lambda addresses — 这并不完美,因为它仍然离开安全组对广泛的攻击开放,但总比公开访问要好
但是,从安全角度来看,允许任何外部方直接访问您的数据库并不是一个好主意。可能会以这种方式泄露机密或个人身份信息。比上述更安全的架构是第三方将他们的数据发送到您的系统进行处理,而不是直接访问您的数据库。
一些例子:
- 第三方可以将文件上传到您的 Amazon S3 存储桶,然后触发您自己账户中的 Lambda 函数将数据加载到 Redshift,或
- 数据可以发送到 Amazon Kinesis 流(有利于连续数据加载)或 Amazon SQS,然后您自己账户中的 Lambda 函数可以加载该数据进入 Redshift,或
- 使用 API Gateway 创建一个接口,第三方可以通过该接口发送他们的数据,然后触发您自己账户中的 Lambda 函数将该数据加载到 Redshift 中