我有一个安全组分配给RDS实例,它允许来自我们的EC2实例的端口5432stream量。
但是,此安全组已为所有IP的所有stream量启用了所有出站stream量。
这是安全风险吗? 什么应该是理想的出站安全规则? 在我看来,RDS安全组的出站stream量应限制为端口5432到我们的EC2实例,对吗?
这是安全风险吗?
理论上,是的。 实际上,几乎肯定没有重大的风险,但是任何被允许的事情都是“风险”。
什么应该是理想的出站安全规则?
什么都不应该被允许,因为你的数据库不需要发起连接。 解释如下。
在我看来,RDS安全组的出站stream量应限制为端口5432到我们的EC2实例,对吗?
几乎正确,但技术上不正确(或含糊不清)。
实例没有使用端口5432。 这是目的地港口。 实例端的源端口通常随每个连接而改变。
安全组是有状态的,它们的规则只需要允许启动连接。 响应stream量自动允许,无需configuration。
“安全组是有状态的 – 对允许的入站stream量的响应被允许stream出,无论出站规则如何,反之亦然。”
http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html#VPCSecurityGroups
到数据库的入站连接的目标端口是5432.单入站规则因此允许build立这些连接并返回回复stream量。
数据库安全组中的出站“允许”规则现在实际上并没有做任何事情。
数据库不会启动连接,所以不需要允许任何出站。 即使在RDS内进行复制的情况下,这一点也是如此。 RDS机器显然必须以这样的configuration相互连接,但事实certificate,他们有自己的“隐藏”networking,可以build立这些连接,并且不依赖于您的安全组设置。