AWS 中一个安全组可以关联的资源有哪些?

What are all the resources that can be associated with a security group in AWS?

AWS 文档在试图描述整个系统时几乎毫无用处。是否有任何资源或所有资源的编译列表可以属于一个安全组和不同类型的安全组?

这是我目前的情况:

还有什么我想念的吗?我缺少任何非常好的文档资源吗?

了解 AWS 安全组的主要概念是,它确定虚拟网络上的资源允许的流量in/out

因此,想想什么可以启动“进入”虚拟网络:

  • Amazon EC2 实例

  • 启动 EC2 实例的服务:

    • AWS 弹性豆茎
    • 亚马逊弹性 MapReduce
  • 使用 EC2 实例的服务(不直接出现在 EC2 服务中):

    • Amazon RDS(关系数据库服务)
    • 亚马逊红移
    • 亚马逊 ElastiCache
    • 亚马逊云搜索
  • 弹性负载均衡

  • Lambda

资源不“属于”安全组。相反,一个或多个安全组与资源相关联。这通常是一个难以理解的概念,因为安全组具有与防火墙类似的能力,而防火墙通常会“包裹”许多设备。虚拟网络不是“属于”安全组或“被其包围”,而是简单地使用安全组中包含的定义来确定哪些流量允许 in/out 资源。

例如,假设两个 EC2 实例与“Web”安全组相关联,并且该安全组配置为允许端口 80 上的传入流量。虽然两个实例都与同一个安全组相关联,他们无法相互交流。这是因为它们不“属于”安全组,也不“在”安全组内。相反,安全组定义用于过滤实例的流量 in/out。当然,安全组可以配置为允许来自安全组本身的传入流量(自引用),这实际上意味着允许来自本身与安全组关联的任何资源的传入流量。 (看,我告诉过你这是一个很难掌握的概念!)

此外,安全组实际上并未与 VPC 中的 EC2 实例相关联。相反,安全组与附加到 EC2 实例的 Elastic Network Interface (ENI) 相关联。将 ENI 视为将实例链接到 VPC 子网的“网卡”。一个实例可以有多个 ENI,因此可以连接到多个子网。每个 ENI 都可以有自己的安全组关联。因此,实际使用的安全组取决于实例的流量 in/out,而不是实际与实例相关联。

只有两个“类型”的安全组:

  • EC2 Classic(传统网络配置)
  • EC2 VPC(现代专用网络配置)

任一类型的安全组都可以与任何其他资源相关联,只要它们处于相同的网络类型(经典或 VPC)中即可。

Lambda 函数也可以与安全组相关联。在撰写原始答案时的 2015 年,情况可能并非如此。

Fargate 任务也可以分配给安全组。

接口端点也可以与安全组相关联,这是一个很好的问题,目前在 AWS 文档中不容易找到。

AWS EFS(弹性文件系统)需要附加安全组。

From the AWS document:
To connect your Amazon EFS file system to your Amazon EC2 instance, you must create two security groups: one for your Amazon EC2 instance and another for your Amazon EFS mount target.

参考:https://docs.aws.amazon.com/efs/latest/ug/accessing-fs-create-security-groups.html