要将我的 ec2 实例连接到 S3 或 RDS,我通常需要为 ec2 实例提供具有适当权限的角色,对吗?
如果我的 ec2 实例在一个安全组中,而 s3/RD3 在另一个安全组中,那么仅仅向 ec2 授予 S3/RDS 角色和权限就足够了吗?
尝试了解何时应使用角色与安全组来允许各种 AWS 资源相互通信。
- IAM 角色用于限制 AWS 用户/账户/角色对 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 实例中的数据时(,请使用安全组。