乐趣区

AWS实战 – EC2权限控制的简单总结

介绍
简单总结 EC2 的文档发现,对 AWS EC2 的权限进行控制,包含三层意思:第一是对使用 EC2 及 EC2 相关的 AWS 服务的权限控制,比如创建、运行 EC2 或者使用 EC2 相关的 AMI,创建 VPC 等相关操作的权限控制;第二是 EC2 实例中运行的应用程序访问 AWS 资源的权限控制,比如授予 EC2 中的应用程序相应权限以访问 S3 资源;第三是 EC2 中的操作系统的不同用户对 EC2 的访问控制。

1. 对 EC2 及相关服务的权限控制
这部分与之前的文章 AWS 实战 – 利用 IAM 对 S3 做访问控制中提到的对 S3 的访问控制原理是一样的,都是通过设定不同权限的 IAM 用户来达到权限控制的效果。不同之处有两点:

S3 除了可以使用基于用户的 IAM 策略,还可以使用基于资源的 ACL 和储存桶策略,而 EC2 则没有基于资源的策略,只能使用 IAM 用户策略;

EC2 的权限控制更复杂,涉及到的资源更多;例如如果要授予某用户启动 EC2 实例的权限,还需要授予其使用 AMI 的权限,创建 VPC 的权限,创建密钥对的权限等等,完整的权限策略 json 如下,可以看到涉及到的 resource 较多:

{
“Version”: “2012-10-17”,
“Statement”: [{
“Effect”: “Allow”,
“Action”: “ec2:RunInstances”,
“Resource”: [
“arn:aws:ec2:region::image/*”,
“arn:aws:ec2:region:account:instance/*”,
“arn:aws:ec2:region:account:volume/*”,
“arn:aws:ec2:region:account:key-pair/*”,
“arn:aws:ec2:region:account:security-group/*”,
“arn:aws:ec2:region:account:subnet/*”,
“arn:aws:ec2:region:account:network-interface/*”
]
}
]
}

正是由于 EC2 权限涉及较多资源,在 AWS 官方文档中,列举了十几种不同情况下的权限 CASE,详情参考使用 AWS CLI 或 AWS SDK 的策略示例和用于 Amazon EC2 控制台的策略示例。

2. 对 EC2 中的应用程序的权限控制
如果 EC2 中的应用程序需要访问 AWS 资源,我们当然可以将相关的用户凭证储存在 EC2 中供应用程序使用,但如果需要修改、调整用户凭证,可能需要对每一个实例、应用程序都做处理。更推荐的做法是将 IAM 角色附加给 EC2 实例,EC2 中的应用程序从 EC2 元数据获取该角色的临时安全凭证,从而取得角色对应的权限。
例如,一名开发人员在 EC2 实例上运行一个应用程序,该应用程序要求访问名为 photos 的 S3 存储桶。管理员创建 Get-pics 服务角色并将该角色附加到 EC2 实例。在该实例上运行应用程序时,应用程序可以使用该角色的临时凭证访问 photos。管理员不必向开发人员授予访问照片存储桶的权限,开发人员完全不必共享或管理证书。具体步骤可参考使用 IAM 角色向在 Amazon EC2 实例上运行的应用程序授予权限。

3. 在 Linux 实例上管理用户
一般来说,每个 linux EC2 实例的默认用户都是 ec2-user,如果有需要也可以增加,这部分与普通的 linux 系统增加用户没有区别,也与 AWS 的 IAM 用户没有任何关联,只是这里的用户只能通过密钥的方式连接 ec2,不能使用密码,详情参考在 Linux 实例上管理用户账户。

退出移动版