我正在努力使AWS lambda能够将HTTPS POST请求发送到AWS Elastic beantalk服务。弹性beantalk提供Web和Web服务,并且运行良好。lambda正在使用AWS elasticache进行一些计算(效果很好),然后决定是否将HTTPS POST发送到beantalk URL。
Lambda用编写node.js。POST尝试后大约2分钟,我收到以下超时消息:
[Error: connect ETIMEDOUT X.Y.Z.W:443] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'connect', address: 'X.Y.Z.W', port: 443
Run Code Online (Sandbox Code Playgroud)
我在弹性bean nginx访问日志中没有看到请求的指示。
因此,我的理解是安全组设置不正确。
我排除了使用弹性beantalk阻止此类连接的选项-lambda使用的URL具有外部域名,可以从任何浏览器使用该URL,并且可以正常工作。
因此,我得出的结论是,lambda安全性阻止了这种连接。因此-我完全打开了lambda安全组,可以从任何地方进行“所有流量”操作-我仍然遇到此问题。
有任何想法吗?
TLDR
我们在一个安全组中有很长的IP地址列表,很难管理.AWS使您感觉可以拥有嵌套组,但您不能.我对吗?
背景
配置和使用安全组时没有任何问题.这个问题更加微妙,这就是背景.
我们将安全组配置为将访问开发实例/服务列入白名单.由于我们的配置模式是白名单,我们必须始终不断添加新的IP地址,具体取决于团队成员的工作地点.没有静态IP地址的蹩脚ISP.
这不是问题.但想象一下IP地址日益混乱.
问题
有时我们希望删除此白名单(因为蹩脚的ISP)并确保IP地址是相关的,最新的并且仍然应该在白名单上.
我们发现自己不愿意这样做,因为目前有效"清理"白名单的唯一方法就是装箱并重新开始.
AWS似乎没有提供一种简洁的方法来标记安全组规则中的记录,或者允许嵌套安全组.
目前的工作
拥有许多(可能是数百个)单独的安全组,并确保它们始终附加到相关服务.
Pro:易于标记/识别IP地址(例如Bob的家庭IP),因此Bob可以删除旧IP地址并替换为新IP地址.
Con:每个安全组必须附加到相关实例,此列表可能会很长.
保留单独的IP /查找列表,并拥有一个安全组
Pro:意味着您只需要一个安全组.
骗局:必须保持两个列表是最新的,不太实际,你会得到不匹配.
某种自动化.构建定期检查安全组的服务,并将这些IP与一些基本的geo-ip/ISP信息一起存储在DynamoDB中.用作参考.
Pro:喜欢#2但是自动化.不是100%准确,因为geo-ip查找永远不会.
Con:必须编写和维护该实用程序,使其感觉应该已经存在.
希望解决方案
子/嵌套安全组.AWS配置界面实际上意味着您可以执行此操作 - 但它无法按预期工作.EG主安全组具有允许来自其他安全组的入站流量的规则 - 这些规则又将IP地址逻辑分组在一起.
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html
指定安全组作为规则的源时,这允许与源安全组关联的实例访问安全组中的实例.(请注意,这不会将源安全组中的规则添加到此安全组.)
我发现文档有点矛盾.从实验来看,它不起作用.
标记每条记录.这显然不存在,并且将成为AWS的功能请求.
我错过了什么吗?其他人如何管理大型安全组?
我无法使用public ip连接到同一安全组中的另一个ec2实例.如果我尝试使用公共DNS名称和私人IP连接,它是工作精细.到目前为止我做了什么:*创建了两个ec2公共实例.*将两个实例附加到安全组sg-12345*添加入站规则 - 所有流量,source = sg-12345 - SSH端口= 22,source = MY ip(这是从我的桌面登录到我的ec2实例)在此先感谢.
我了解egressAWS安全组上的属性控制出站流量,但是没有人知道-1协议的含义吗?
resource "aws_security_group" "elb" {
name = "example-elb”
ingress {
from_port = 80
to_port = 80
protocol = "tcp”
cidr_blocks = [" 0.0.0.0/ 0”]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = [" 0.0.0.0/ 0"] }
}
Run Code Online (Sandbox Code Playgroud) 默认的AWS安全组在Source字段中引用自身,这表明实例可以与其自身进行通信:
但是,通过SSH登录到实例并尝试通过DNS名称将其卷曲以解析为公共实例的IP会导致卷曲超时错误。
我想出的唯一解决方案是将实例的公共IP而不是sec组ID添加到安全组中,但是它不灵活-我不希望有任何高度关注的安全组。
为什么分配给实例的默认安全组不允许来自实例本身的所有流量?
我有一个负载均衡器和自动伸缩组。负载平衡器将流量发送到我的自动伸缩组。我有两个实例:实例7000(正在侦听端口7000,它是自动扩展组的一部分,并从负载均衡器获取其流量)和实例8545(正在侦听端口8545,只是一个单独的实例,即(不属于负载均衡器或Auto-Scaling组)。
我有一个负载平衡器安全组(“ LB-SG”)和实例8545(“ App-SG”)的安全组。我希望实例8545仅允许来自属于负载均衡器/自动扩展组的实例的流量。因此,我将“ LB-SG”作为端口8545上“ App-SG”的入站规则包括在内,但它不起作用。但是,如果我只是将端口8545上的实例7000的IP地址作为入站规则包含在“ LB-SG”中,则效果很好。但这不能解决我的问题,因为如果自动扩展组添加了更多实例或更改了IP地址,则它将无法正常工作。
编辑:为清楚起见改写
load-balancing amazon-ec2 amazon-web-services aws-security-group elastic-load-balancer
我有一个创建用于访问RDS postgresql实例和Elasticcache集群的AWS Lambda。为了访问RDS实例,我相信RDS和Elasticache都需要打开然后进入端口以供lambda访问。我还看到了允许lambda访问elasticache和RDS的策略。这些策略适用于分配给AWS lambda的角色。在这种情况下角色和安全组的目的是什么?
amazon-web-services amazon-rds amazon-iam aws-lambda aws-security-group
当该部分已满时,此代码会抛出“组描述为空”。
Resources:
FormulationSG:
Type: 'AWS::EC2::SecurityGroup'
Properties:
Tags:
- Key: 'Name'
Value: 'FormulationSG'
VpcId: 'vpc-yyy00yyy'
GroupDescription: 'Port Rules for Formulation and on Port 11.'
SecurityGroupIngress:
- IpProtocol: tcp
CidrIp: 192.168.0.0/8
FromPort: '11'
ToPort: '11'
- IpProtocol: tcp
FromPort: '91'
ToPort: '91'
SourceSecurityGroupName: 'sg-1234567'
Run Code Online (Sandbox Code Playgroud)
忽略所有已更改的数字,但我遇到的问题是,一旦我尝试获取现有安全组“sg-1234567”,它就会给我一条错误消息,指出组描述已在引号中时无效。
yaml amazon-web-services aws-cloudformation aws-security-group
据我所知,无状态防火墙更多地用于数据包过滤。为什么 AWS NACL 是无状态的?
NACL 强制为临时端口打开的端口范围太大。
除了安全组,还有其他方法可以在 AWS 上创建有状态防火墙吗?安全组感觉过于细化,可能会被错误地忽略。
例如,在AWS安全组中,我们指定了一个可以登录的IP地址,然后我们把/24或/32作为IPv6
这是指定cidr范围的唯一原因,还是我们可以做更多配置?
例如来自来源:32.232.232.11/24。为什么里面有24个?
amazon-ec2 ×3
aws-lambda ×2
amazon-iam ×1
amazon-rds ×1
amazon-vpc ×1
aws-nacl ×1
networking ×1
security ×1
yaml ×1