[AWS][安全][S3] IAM 角色授权 EC2 访问 S3

冷暖自知 提交于 2020-10-03 11:42:33

实验说明:

在先前的中,我们讲到使用 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][安全][S3] IAM 角色授权 EC2 访问 S3

选择受信任的实体类型为”AWS 产品”---EC2,
[AWS][安全][S3] IAM 角色授权 EC2 访问 S3
在 Attach 权限策略处,搜索 AmazonS3FullAccess 策略,然后勾选这条策略,点击”下一步: 标签”
[AWS][安全][S3] IAM 角色授权 EC2 访问 S3
添加标签界面可直接点击”下一步: 审核”,角色名称可以随便写,比如 EC2AccessS3,然后 点击 “创建角色”.
[AWS][安全][S3] IAM 角色授权 EC2 访问 S3




之后我们创建一个实例,AMI 选择 Amazon Linux2,实例类型选择 t2.micro,在配置实例详 细信息界面,IAM 角色选择刚刚创建的角色 EC2AccessS3,然后一直到完成。

[AWS][安全][S3] IAM 角色授权 EC2 访问 S3

备注: 如果账号内有现有的实例,也可以在实例上选择”操作”---“实例设置”----“附加/替换 IAM 角色”.

实例启动之后,使用 ssh 客户端连接到实例上(Windows 可使用 putty,Linux 或 Mac 使用 系统自带终端),如:ssh -i Key.pem ec2-user@ip
[AWS][安全][S3] IAM 角色授权 EC2 访问 S3

之后配置一下 AWS CLI 连到 AWS 的默认区域,
如连到北京区域: export AWS_DEFAULT_REGION=cn-north-1
连到宁夏区域使用:export AWS_DEFAULT_REGION=cn-northwest-1
然后执行 aws s3 ls 命令,就可以看到 EC2 实例能够列出所有的存储桶:


[AWS][安全][S3] IAM 角色授权 EC2 访问 S3

您也可以参考”实验一”使用 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:

[AWS][安全][S3] IAM 角色授权 EC2 访问 S3

Role 除了和 EC2 结合使用之外,还结合 Lambda,API Gateway, RDS, Redshift 等服务一起使 用,使这些服务有访问其他服务的权限与能力。

详细视频教程:https://edu.51cto.com/center/course/lesson/index?id=517262

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!