问题标签 [aws-private-link]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
716 浏览

amazon-web-services - VPC 终端节点 DNS 未响应

/index我有一个设置,其中包含一个 ECS Ec2Service 和一个运行任务的单个实例,该任务在页面被点击时向主题发送 SNS 消息。一切正常,如果我使用常规的“开放互联网”SNS 端点,我可以将消息发布到主题。但是,当我为 AWS SNS 服务创建 VPC 终端节点并从 VPC 终端节点详细信息选项卡中获取 DNS 名称并尝试发布 SNS 消息时,在使用该 DNS 名称配置 SNS 客户端时,操作因超时而失败如果端点不可到达。

我的 Ec2 和 VPC 端点都在同一个子网中(尝试私有然后是公共的),所以我不确定我错过了什么。

EDIT1:指出我需要Private DNS names enabled = false,所以我不能使用常规终端节点路由到 VPC 终端节点

0 投票
0 回答
30 浏览

amazon-web-services - AWS ElasticSearch(公共/VPC)<=> Logstash(VPC)

我试图了解在 EC2/ECS(在一般计算层)上的私有子网中运行的 AWS ElasticSearch 和 Logstash(或一般的 EC2)之间发生的定价/路由。

假设我有:

  1. 公共 ES 域
  2. 私有 ES 域(为简单起见,与计算层相同的子网)

如果我:

  1. 配置 Logstash(私有子网)将数据发送到公共 ES?这种通信会通过公共互联网进行吗?
    1. 如果是这样,我可以尝试通过某种 VPC 端点来规避它吗?
    2. 如果是这样,是否适用离开 VPC 的流量的标准定价?
  2. 配置 Logstash(私有子网)以将数据发送到在同一私有子网(或至少 AZ)中运行的私有 ES?我认为流量永远不会离开 VPC,因此会保持安全,对吧?
0 投票
1 回答
336 浏览

amazon-web-services - 为 Lambda 的接口 VPC 端点设置自定义策略时出现“未知错误”

我试图允许位于私有 VPC 中的 AWS Lambda 调用不在任何 VPC 中的另一个 Lambda。我故意避免使用 NAT 网关来支持接口 VPC 端点,因为它们使用起来有点便宜。但是,我在配置自定义策略时遇到了麻烦:

这是由 AWS 提供的策略生成器生成的,我复制并粘贴了它。当我尝试创建端点时,它被默认的所有访问权限覆盖。创建端点后我尝试更改此设置后,AWS 将我带到一个错误页面,显示“错误:发生未知错误”。

将不胜感激这方面的一些帮助。

0 投票
0 回答
57 浏览

amazon-web-services - AWS PrivateLink 终端节点 IP 地址可以更改吗?

当您设置AWS PrivateLink Endpoint时,您会获得一个要定位的主机名。例如com.amazonaws.vpce.us-east-2.vpce-svc-123xyz567,它解析为您在其中创建它的子网中的私有 IP,例如192.168.0.1. 这些会改变吗?看起来我们很可能被赋予了一个主机名,但它在实践中会发生吗?

例如,如果我在旧系统中有限制,它只能针对 IP 地址而不是主机名,那么我需要更新的可能性/频率有多大?

0 投票
1 回答
395 浏览

amazon-web-services - 阅读文档时出现的 AWS PrivateLink + CloudFormation 设置问题

我在做什么

我正在尝试这样做:

在私有子网中启动任务,并确保您在 VPC 中为您需要的服务配置了 AWS PrivateLink 终端节点(用于图像拉取身份验证的 ECR、用于图像层的 S3 和用于密钥的 AWS Secrets Manager)。

我对此的理解是 AWS 服务充当“VPC 端点服务”,我需要做的就是设置一个“接口 VPC 端点”以使我的服务成为“服务使用者”,如下所述:https://docs .aws.amazon.com/vpc/latest/privatelink/vpce-interface.html

我试图在 CloudFormation 中实现这一点,但我在阅读文档时遇到了一些问题。

我的问题

问题 1

文档解释了如何创建 Interface VPC Endpoints,这很棒。但它也说:“要为接口端点打开私有 DNS,对于启用 DNS 名称,请选中该复选框。” 和“此选项默认开启”

但在这里:https ://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-vpcendpoint.html#cfn-ec2-vpcendpoint-privatednsenabled

它说:“默认值:假”。它是哪一个?

问题2

我需要启用 3 个服务名称。所以...我需要重复3次吗?我的 YAML 重复 AWS::EC2::VPCEndpoint 3 次如下。这真的正确吗?它似乎太长/冗长。

问题 3

对于安全组,选择要与端点网络接口关联的安全组。

我是否使用通过 NetworkConfiguration / AwsvpcConfiguration / SecurityGroups 附加到我的 ECS 服务的 ECSSecurityGroupDownloadRedisContainer 安全组?如果是,我是否需要同时关联 ECSSecurityGroupDownloadRedisContainer(允许 443 上的流量)和 ECSSecurityGroupRedis(允许 6379 上的流量)?我认为这个答案是肯定的 + 只有 ECSSecurityGroupDownloadRedisContainer 但我真的不知道。

问题 4

下载容器后,我可以以某种方式禁用对端口 443 上的 ECS 的访问吗?我只需要访问 6379 for Redis;其他任何事情对我来说似乎都是安全责任。

背景:我为什么要这样做

我正在尝试创建 ECS 集群 + 服务 + 任务,但出现错误:

(CannotPullContainerError: inspect image has been retried 5 time(s): failed to resolve ref "docker.io/library/redis:latest": failed to do request: Head https://registry-1.docker.io/v2/library/redis/manifests/latest: dial tcp 34.231.251.252:443: i/o timeout)

研究已将我指向这篇文章:Aws ecs fargate ResourceInitializationError: unable to pull secrets or registry auth

从今年 3 月开始,AWS 员工 nathan peck 给出了这个权威答案:https ://stackoverflow.com/a/66802973

他们提出了以下三个解决方案之一:

  • 将任务启动到具有公共 IP 地址的公共子网中,以便它们可以使用 Internet 网关与 ECR 和其他支持服务进行通信
  • 在具有配置为通过公有子网中的 NAT 网关路由出站流量的 VPC 路由表的私有子网中启动任务。这样,NAT 网关可以代表任务打开到 ECR 的连接。
  • 在私有子网中启动任务,并确保您在 VPC 中为您需要的服务配置了 AWS PrivateLink 终端节点(用于图像拉取身份验证的 ECR、用于图像层的 S3 和用于密钥的 AWS Secrets Manager)。

如您所知,redis 运行在 6379 端口,而不是 443 端口。我对这些解决方案的想法:

  • 选项1非常危险!我永远不应该被迫将我的数据库实例暴露给公共互联网。所以就这样了。
  • 选项 2 是我开始实施的,然后我意识到这涉及在我的子网 + 路由表 + 等中公开和允许端口 443 上的流量。当我只打算使用端口 443 时,这似乎是不必要的安全风险@ 容器启动。
  • 选项 3 似乎是正确的做法。

于是,我的旅程。

0 投票
0 回答
27 浏览

mongodb - Lambda 未通过 privatelink 连接到 Mongodb

我已经通过 terraform 部署了带有 lambdas、mongodb 集群、aws vpc 和 privatelink 端点的设置,但我的连接字符串不起作用。我从 mongo 收到超时错误。

我的连接字符串是:“mongodb+srv://:@XXXXXXXXXXXX-pl-0.XXXXX.mongodb.net/?retryWrites=true&w=majority”

我想知道这是否与安全有关,也许我允许的端口是错误的,有人可以建议他们应该是什么吗?

关于为什么这不是连接的任何想法?

0 投票
0 回答
61 浏览

docker - Kafka 通过 AWS privatelink 广告监听器

我在 AWS 中有两个 VPC:

VPC-A 中有一个 ec2 实例。
VPC-B 中有一个 ec2 实例,通过 docker-compose 运行 kafka 和 zookeeper

VPC 通过 AWS Privatelink 连接(端点 --> 端点服务 --> nlb(在 VPC-B 中) --> kafka)我已经给出了privatelink 端点 DNS 名称:broker.confluent-playground

我可以从 VPC A 远程登录到端口 9092 和 2181 到 VPC-B 中的 Kafka 和 Zookeeper。没问题

我的问题是,虽然 VPC 之间存在网络连接,但我似乎遇到了 kafka 侦听器配置问题。当我将 advertised.listeners 设置为broker.confluent-playground:9092时,我的制作人似乎无法连接,并且在运行kafkacat -b broker.confluent-playground -L时,我只列出了 40 个主题中的 7 个。(它们看起来像是内部系统主题,例如“_confluent_balancer_partition_samples”)。

以下是 docker-compose 文件的摘录:

现在,如果我将广告监听器更改为持有 kafka 的 ec2 的私有 IP,即:
FROM

那么 VPC-A 中的 kafkacat 就可以正确看到全部 40 个主题了!我仍然无法制作(因为我假设我已经在不同的网络中获得了广告的私有 IP 地址)。

我似乎在某个地方弄乱了这些侦听器配置,我很困惑如何通过更改广告侦听器来获得具有一个设置的主题子集,然后使用另一个设置获得所有主题。

另一个有趣的事情
我的 kafkacat 使用broker.confluent-playground广告侦听器扫描返回这个

[ec2-user@ip-10-1-0-90 ~]$ sudo docker run --rm --network=host edenhill/kafkacat:1.5.0 kafkacat -b broker.confluent-playground:9092 -L

当我使用私有 IP 地址(我无法从 VPC-A 访问)作为广告侦听器时,我会得到包含所有主题的 /bootstrap:

0 投票
1 回答
29 浏览

amazon-web-services - 将 NLB 指向经典负载均衡器

我的 kubernetes 有一个 Classic Load Balancer,但现在我想使用 AWS PrivateLink,所以我需要使用 Network Load Balancer。

有没有办法将网络负载均衡器指向经典负载均衡器?

0 投票
2 回答
1095 浏览

amazon-ec2 - EC2 实例无法通过 s3 网关端点访问 amazon-linux 存储库(例如 amazon-linux-extras 安装 docker)

我有 s3 端点悲伤。当我的实例初始化时,它们无法安装 docker。细节:

我的 ASG 实例位于带有 pub 和私有子网的 VPC 中。适当的路由和 EIP/NAT 都被缝合了。私有子网中的实例有出站 0.0.0.0/0 路由到各自公有子网中的 NAT。公共子网的 NACL 允许 Internet 流量进出,私有子网周围的 NACL 允许来自公共子网的流量进出、出入 Internet 的流量(以及来自 s3 cidr 的流量进出)。我希望它完全锁定。

  • 我在我的 VPC 中启用了 DNS 和主机名
  • 我了解 NACL 是无状态的,并且已为临时端口范围上的 s3 amazon IP cidr 块启用了 IN 和 OUTBOUND 规则(是的,我还启用了 pub 和私有子网之间的流量)
  • 是的,我已经在我的私有路由表中检查了为我的 s3 端点配置的路由
  • 是的,我确定这是 s3 端点导致我悲伤,而不是另一个错误 -> 当我删除它并打开我的 NACL 时,我可以 yum 更新并安装 docker(如预期的那样)我不是在寻找需要打开我的建议的建议NACL,我正在使用 VPC 网关端点,因为我想将事物锁定在私有子网中。我提到这一点是因为类似的讨论似乎在说“我在所有端口上打开了 0.0.0.0/0,现在 x 可以工作”
  • 我应该烤一个安装了 docker 的 AMI 吗?如果我不能解决这个问题,我会这样做。我真的很想建立我的网络,所以一切都很好地锁定了,感觉使用端点应该很简单。在很大程度上,这是一个网络练习,所以我宁愿不这样做,因为它避免了解决和理解问题。
  • 我知道我的其他 VPC 端点运行良好 -> 自动缩放服务接口端点正在执行(我可以看到它根据策略缩减实例),SSM 接口端点允许我使用会话管理器,并且 ECR 端点正在运行结合 s3 网关端点(需要 s3 网关端点,因为图像层在 s3 中)-> 我知道这是可行的,因为如果我打开 NACLS 并删除我的 s3 端点并安装 docker,然后再次锁定所有内容,带回我的 s3 gatewayendpoint 我可以成功提取我的 ECR 图像。所以 s3 网关端点可以很好地访问 ecr 映像层,但不能访问 amazon-linux-extra 存储库。
  • 附加到实例的 SG 不是问题(实例具有默认出站规则)
  • 我已经尝试向我的 s3 端点添加越来越慷慨的策略,正如我在这个 7 岁的线程中看到的那样,并认为这必须解决问题(是的,我正确地替换了我的区域)
  • 我强烈认为解决方案在于该线程中讨论的 s3 网关策略,但是我越来越绝望的策略几乎没有运气。

Amazon EC2 实例无法更新或使用 yum

另一个 s3 与分辨率的斗争:

https://blog.saieva.com/2020/08/17/aws-s3-endpoint-gateway-access-for-linux-2-amis-resolving-http-403-forbidden-error/

我努力了:

(如您所见,非常绝望)第一个规则是 ECR 接口端点从 s3 拉图像层所必需的,所有其他规则都是尝试到达 amazon-linux-extras 存储库。

以下是我通过使用 SSM 端点连接会话管理器重新创建的初始化时发生的行为:

https://aws.amazon.com/premiumsupport/knowledge-center/connect-s3-vpc-endpoint/

我不能 yum 安装或更新

加载的插件:extras_suggestions、langpacks、priorities、update-motd 无法检索镜像列表https://amazonlinux-2-repos-ap-southeast-2.s3.ap-southeast-2.amazonaws.com/2/core/latest/ x86_64/mirror.list错误为 14:HTTPS 错误 403 - 禁止

配置的存储库之一失败(未知),并且 yum 没有足够的缓存数据来继续。在这一点上,yum 能做的唯一安全的事情就是失败。有几种方法可以“解决”这个问题:

无法为 repo 找到有效的 baseurl:amzn2-core/2/x86_64

并且不能:

目录https://amazonlinux-2-repos-ap-southeast-2.s3.ap-southeast-2.amazonaws.com/2/extras-catalog-x86_64-v2.json , https://amazonlinux-2- repos-ap-southeast-2.s3.ap-southeast-2.amazonaws.com/2/extras-catalog-x86_64.json 回溯(最后一次调用):文件“/usr/lib/python2.7/site-packages/amazon_linux_extras/software_catalog.py”,第 131 行,在 fetch_new_catalog 请求 = urlopen(url) 文件“/usr/lib64/python2. 7/urllib2.py",第 154 行,在 urlopen 返回 opener.open(url,数据,超时) 文件 "/usr/lib64/python2.7/urllib2.py",第 435 行,打开响应 = meth(req,响应)文件“/usr/lib64/python2.7/urllib2.py”,第 548 行,在 http_response 'http',请求,响应,代码,味精,hdrs)文件“/usr/lib64/python2.7/urllib2. py”,第 473 行,错误返回 self._call_chain(*args) 文件“/usr/lib64/python2.7/urllib2.py”,第 407 行,在 _call_chain 结果 = func(*args) 文件“/usr/lib64 /python2.7/urllib2.py”,第 556 行,在 http_error_default 中引发 HTTPError(req.get_full_url(), code, msg, hdrs,fp)HTTPError:HTTP错误403:禁止

我错过了什么陷阱?我很困在这里。我熟悉基本的 VPC 网络、NACL 和 VPC 端点(我至少使用过的那些),我已经完成了故障排除(尽管我已经按照概述进行了所有设置)。

我觉得 s3 政策是这里的问题或镜像列表。非常感谢您阅读所有内容!想法?

0 投票
1 回答
175 浏览

amazon-web-services - 为什么 AWS 建议避免使用公共/互联网网关而支持 AWS PrivateLink 和 VPC 终端节点?

VPC 终端节点支持虚拟私有云 (VPC) 和支持的服务之间的连接,而无需您使用 Internet 网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。因此,您的 VPC 不会暴露在公共互联网上

AWS PrivateLink 是一种高度可用、可扩展的技术,使您能够将您的 VPC 私下连接到受支持的 AWS 服务、由其他 AWS 账户托管的服务(VPC 终端节点服务)以及受支持的 AWS Marketplace 合作伙伴服务。您无需使用 Internet 网关、NAT 设备、公共 IP 地址、AWS Direct Connect 连接或 AWS Site-to-Site VPN 连接来与服务进行通信。因此,您的VPC 不会暴露在公共互联网上

如果我所有的传入(到 AWS)/传出(从 AWS)连接都使用 https,那么使用公共互联网有什么不安全的地方?这还能解密吗?

我对网络/安全不是很了解,这就是我问的原因。