安全组与角色的使用

Use of Security Groups vs Role

我创建了一个 AWS lambda 来访问 RDS postgresql 实例和 elasticcache 集群。为了访问 RDS 实例,我相信 RDS 和 Elasticache 都需要打开入站端口供 lambda 访问。我还看到了允许 lambda 访问 elasticache 和 RDS 的策略。这些策略应用于分配给 AWS lambda 的角色。这种场景下角色和安全组的作用是什么?

安全组更多是关于网络控制。您可以将它们视为控制流量的虚拟防火墙。

他们根据以下 criteria/filters

指定 inbound/outbound 到 allow/disallow 的流量
  1. 协议
  2. 端口
  3. origin/destination IP

IAM Roles更多的是用来判断身份在AWS中能做什么,不能做什么。基本上它是一组权限,授予对 AWS 中的操作和资源的访问权限。

示例:资源 X 的安全组表示在 HTTP 协议

上允许端口 1111 的入站流量

场景 1:具有访问资源 X 的附加角色的 Lambda 尝试通过 HTTP 协议在端口 2222 上与资源 X 通信,将失败。因为资源 X 的安全组只允许通过端口 1111 进行通信。

场景 2:您没有将任何角色附加到访问资源 X 的 Lambda。现在,如果它尝试通过 HTTP 协议在端口 1111 上与资源 X 通信,将会失败。因为尽管尝试在正确的端口和协议上访问资源 X,但它缺乏这样做的权限