跨AWS账户连接Redshift Serverless的实现方法
跨AWS账户访问无公网Redshift Serverless的实现方案
针对你的场景,Redshift Serverless支持跨账户访问,核心是打通VPC网络并配置对应权限,具体操作如下:
一、打通跨账户VPC网络
因为你的Redshift Serverless工作组没有公网访问能力,必须通过VPC内网连通,有两种常用方式:
1. VPC对等连接
- 可在账户A的VPC发起对账户B VPC的对等连接请求,或由账户B发起后让账户A接受。
- 给双方VPC的路由表添加路由条目,将对方VPC的CIDR段指向对等连接资源。
- 配置安全组:账户A中Redshift Serverless工作组关联的安全组,需允许账户B客户端所在子网/安全组访问5439端口(Redshift默认端口);同时账户B的客户端安全组要允许出站到该端口。
2. AWS Transit Gateway(适合多VPC/多账户场景)
- 在任意账户创建Transit Gateway,通过RAM共享给另一个账户。
- 将账户A和账户B的目标VPC分别关联到这个Transit Gateway。
- 配置Transit Gateway的路由表,确保两个VPC的CIDR段路由互通。
- 安全组规则配置同上。
二、配置跨账户访问权限
需要在账户A中授权账户B的IAM实体(用户/角色)能访问Redshift Serverless资源:
- 创建或修改IAM角色的信任策略,允许账户B的主体进行访问,示例策略:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::[账户B-ID]:user/[你的用户名]"}, "Action": ["redshift-serverless:GetCredentials", "redshift-serverless:Connect"], "Resource": "arn:aws:redshift-serverless:[区域]:[账户A-ID]:namespace/[你的命名空间名称]" } ] } - 也可以在账户B中,给用于连接的IAM实体添加
redshift-serverless:GetCredentials权限,允许其调用账户A的Redshift Serverless服务。
三、发起连接
方式1:SQL客户端(如psql、DataGrip)
- 用账户B的IAM身份调用
GetCredentialsAPI(或AWS CLI命令)获取临时连接凭证:aws redshift-serverless get-credentials --namespace-name [命名空间名称] --db-user [数据库用户名] --profile [账户B的CLI配置文件] - 使用返回的临时用户名、密码,加上Redshift Serverless工作组的内网端点地址、5439端口、目标数据库名称,在SQL客户端中完成连接。
方式2:Redshift Query Editor v2
- 在账户B的Query Editor v2中,添加账户A的Redshift Serverless资源,通过跨账户角色授权后,即可直接在编辑器中访问数据。
关键注意事项
- 确保两个账户的VPC CIDR段不冲突,否则VPC对等或Transit Gateway路由会失效。
- 所有连接必须走VPC内网,不要尝试公网访问路径。
- 安全组规则遵循最小权限原则,只允许必要的源访问Redshift端口。
内容的提问来源于stack exchange,提问作者Shkolar
相关产品推荐
相关产品推荐

