AWS 安全组和 IAM 角色

AWS Security Group and IAM Role

要将我的 ec2-instance 连接到 S3 或 RDS,我通常需要为 ec2 instance 赋予一个具有适当权限的角色,对吗?

如果我的 ec2-instance 在一个安全组中,s3/RD3 在另一个安全组中,难道只给 ec2 一个 S3/RDS 角色和权限就足够了吗?

试图了解何时应该使用角色与安全组来允许各种 AWS 资源相互通信。

  • IAM 角色用于限制 AWS user/account/role 访问 AWS API。
  • 安全组用于限制对 VPC 中存在的资源的网络访问。

请注意 EC2 和 RDS(以及 Redshift 和 Elasticache...)是如何存在于您的 VPC 中的服务器,并且您通过与这些服务器建立直接网络连接来与这些资源进行交互。因此,您可以使用安全组保护对这些内容的网络访问。

请注意,您如何无法了解您的 S3(或 DynamoDB、SQS 或 SNS...)资源所在的服务器,这些资源不在您的 VPC 中 运行,并且您与这些资源进行交互资源仅通过 AWS API。因此,您通过 AWS Identity and Access Management (IAM) 保护 AWS API 对这些内容的访问。

角色和安全组有两个不同的用途。

角色

角色用于授予 EC2 实例执行某些 AWS API 调用的权限。

它不参与网络安全。

安全组

安全组在网络安全中发挥作用,但在访问 API 的 EC2 权限中没有作用。

结论

当您需要授予实例权限以执行 API 功能时,例如访问 S3 或控制 RDS 实例(不查询数据),请使用 EC2 角色。

当您需要授予实例访问网络资源的权限时,例如在 RDS 实例中查询数据时,请使用安全组。