问题描述
路由表(在私有子网中)不会因为将 VPCE 添加为 aws 机密管理器的目的地而改变。也尝试过新的 SG(不使用默认 SG)。 有什么想法吗?
解决方法
基于评论。
Secrets Manager (SM) 使用 VPC interface endpoints。与 S3 和 DynamoDB 的 VPC gateway endpoints 相比,这是新一代端点。新一代不修改路由表 (RT)。相比之下,网关端点确实会修改创建这些端点时指定的 RT。
为了与接口端点无缝协作,VPC 必须为端点启用 enableDnsHostnames
和 enableDnsSupport
启用,以及 private DNS。另外,通常需要调整端点的安全组,允许443端口连接。
最近我删除了所有最初允许我的私有子网连接到互联网的 NAT 网关(包括 Secrets Manager)。我认为 NAT 网关是一个安全漏洞、昂贵的基础设施,并且私有实例不需要联系 AWS Secrets Manager。我错了。我的 ECS 任务失败,并指出无法访问 Secrets Manager 资源。
调试
我建议使用 AWS VPC Reachability Analyzer 来调试这些网络问题,它对我有帮助。
- 在私有子网中启动 EC2 实例
- 将您的私有子网安全组分配给 EC2 实例
- Create a VPC Endpoint 用于您的私有子网
- 使用 VPC 可达性分析器“创建和分析路径”
-
源类型:实例
- 选择您启动的新 EC2 实例
-
目标类型:VPC 端点
- 选择您创建的 VPC 终端节点
-
目的港
- HTTPS 设置为 443
-
协议
- 设置为 TCP
-
源类型:实例
- 对您的基础架构进行更改,然后重新运行分析器以测试访问,直至成功。
这将使您能够验证您在私有子网中启动的 EC2 实例是否可以联系 VPC 终端节点(例如 Secrets Manager)。
清单
既然您有了快速验证可达性的方法,以下是您可能需要采取的一些步骤,以确保您的私有子网可以联系诸如 Secrets Manager 之类的 AWS 服务。请参阅 AWS 文档,因为我的信息可能已过时。
- 确保 AWS::EC2::VPC
- EnableDnsSupport: true
- EnableDnsHostnames: true
- 创建一个 AWS::EC2::VPCEndpoint(不是免费的,请参阅 pricing)
- PrivateDnsEnabled: true
-
服务名称:
- 将此用作模板
com.amazonaws.${AWS::Region}.secretsmanager
并为 AWS 区域使用适当的值
- 将此用作模板
-
SecurityGroupIds:
- The security group attached to the VPC endpoint must allow incoming connections on port 443 from the private subnet of the VPC
- 这将 VPC 终端节点与用于允许从私有子网到 AWS API 的传入流量的安全组相关联
-
子网 ID:
- 私有子网
- VpcEndpointType:接口
- VpcId:放置 VPC 端点的 VPC