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


介绍

简单总结EC2的文档发现,对AWS EC2的权限进行控制,包含三层意思:第一是对使用EC2EC2相关的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实例上运行一个应用程序,该应用程序要求访问名为photosS3存储桶。管理员创建Get-pics服务角色并将该角色附加到EC2实例。在该实例上运行应用程序时,应用程序可以使用该角色的临时凭证访问photos。管理员不必向开发人员授予访问照片存储桶的权限,开发人员完全不必共享或管理证书。具体步骤可参考使用IAM角色向在Amazon EC2实例上运行的应用程序授予权限


3.在Linux实例上管理用户

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