实验说明:
在先前的中,我们讲到使用 AWS CLI 对 S3 中的对象进行操作,在配置 AWS CLI 的 时候,我们创建了 IAM Access Key 和 Secret Key,这种 Key 属于 Long Term Key,也就意味 着如果您不 rotate Key,那么 key 将长期有效,如果 Key 不慎丢失,就需要在 AWS IAM 界 面删除这个 key 或者停用 key。当我们将服务部署在 AWS EC2 的时候,还有另外一个可选 方案,即使用 EC2 Role(角色)的方式,使 EC2 具有访问 AWS 资源的权限,这样就不需要在 EC2 实例上或我们的应用代码中指定 IAM Key,可进一步加强服务的安全性。
实验概要:
本次实验中,我们将对 EC2 绑定一个 IAM 角色,在不配置 EC2 Access Key 和 Secret Key 的 情况下,使 EC2 具有通过 AWS CLI 操作 S3 存储桶的能力。
实验步骤:
打开 IAM 界面,然后点击”角色”----“创建角色”
选择受信任的实体类型为”AWS 产品”---EC2,
在 Attach 权限策略处,搜索 AmazonS3FullAccess 策略,然后勾选这条策略,点击”下一步: 标签”
添加标签界面可直接点击”下一步: 审核”,角色名称可以随便写,比如 EC2AccessS3,然后 点击 “创建角色”.
之后我们创建一个实例,AMI 选择 Amazon Linux2,实例类型选择 t2.micro,在配置实例详 细信息界面,IAM 角色选择刚刚创建的角色 EC2AccessS3,然后一直到完成。
备注: 如果账号内有现有的实例,也可以在实例上选择”操作”---“实例设置”----“附加/替换 IAM 角色”.
实例启动之后,使用 ssh 客户端连接到实例上(Windows 可使用 putty,Linux 或 Mac 使用 系统自带终端),如:ssh -i Key.pem ec2-user@ip
之后配置一下 AWS CLI 连到 AWS 的默认区域,
如连到北京区域: export AWS_DEFAULT_REGION=cn-north-1
连到宁夏区域使用:export AWS_DEFAULT_REGION=cn-northwest-1
然后执行 aws s3 ls 命令,就可以看到 EC2 实例能够列出所有的存储桶:
您也可以参考”实验一”使用 aws s3 cp 命令上传或下载 S3 文件.
在当前实验中,我们并未在 EC2 上配置 IAM 用户的访问密钥,EC2 之所以能访问到 S3, 是因为 EC2 实例绑定了 Role,Role 赋予了 S3FullAccess 的权限,因而 AWS CLI 可直接操作 S3 对象。如果您想进一步看到 Role 产生的临时密钥,您可以在 EC2 上执行(其中 EC2AccessS3 为 Role 的名字):
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/EC2AccessS3 在返回的结果中,我们可以看到 Role 产生的临时的 Access Key, Secret Key 以及 Token:
Role 除了和 EC2 结合使用之外,还结合 Lambda,API Gateway, RDS, Redshift 等服务一起使 用,使这些服务有访问其他服务的权限与能力。
详细视频教程:https://edu.51cto.com/center/course/lesson/index?id=517262
来源:oschina
链接:https://my.oschina.net/u/4318872/blog/4316831