我实际上没有设置来测试这个,但是如果我创建一个有超过 1 个节点的 elasticache redis 集群,安全组究竟应该是什么样子才能非常安全但又不会破坏集群本身?
假设我创建了一个安全组,允许从其自身和端口 6379 上的 kubernetes 节点进入,并允许所有从其自身和 kubernetes 出去。
例如这样:
resource "aws_security_group" "tools_elasticache_default" {
name = "tools-elasticache-default"
description = "Allow traffic from tools cluster to elasticache instance"
vpc_id = module.tools_cluster.vpc_id
ingress {
description = "Incomming redis traffic"
from_port = 6379
to_port = 6379
protocol = "tcp"
self = "true"
security_groups = [for x in module.tools_cluster.node_security_groups : x.id ]
}
egress {
description = "Outgoing redis traffic"
from_port = 0
to_port = 0
protocol = "-1"
self = "true"
security_groups = [for x in module.tools_cluster.node_security_groups : x.id ]
}
tags = merge(var.tags, {
"shared" = "true"
})
}
这会破坏我的 elasticache 集群吗?因为它是 ec2,安全组是基于每个实例的。由于我没有明确指定 redis 集群通信端口,如所述这里?
据我了解,集群应该被破坏,因为一个 redis 节点可以通过端口 3333 传出到另一个节点,但他的请求会因为另一个集群参与者缺少的入口规则而被丢弃。
或者 AWS 是否隐式管理这些规则并确保始终允许集群间通信的端口?
任何帮助都将不胜感激。谢谢!
答案1
或者 AWS 是否隐式管理这些规则并确保始终允许集群内通信的端口?
是的。