AWS Cloud9 IAM用户登录配置及安全问题咨询
本问题已做编辑补充:我此前(a)先以root用户身份开始使用Cloud9,随后(b)为IAM用户授予控制台访问权限并切换至该用户操作,基于此我调整了提问内容,相关编辑说明见问题末尾。
*《AWS Cloud9个人用户设置》*文档表述存在歧义:文档指引我以root用户登录后提示“您现在可以开始使用AWS Cloud9”,但紧接着又提示请勿使用root用户,应使用IAM用户操作。因此我为Cloud9创建了新的IAM用户,却找不到使用该用户凭证登录的方式。
我为该新IAM用户绑定了以下4项权限策略:
- AWSCloud9EnvironmentMember
- AWSCloud9Administrator
- AWSCloud9User
- AWSCloud9SSM
选择这4项策略是因为,在可选的757项策略列表中,名称包含“Cloud9”的仅有这几个。
上述文档提到“打开AWS Cloud9控制台”,点击对应链接后跳转至AWS控制台常规登录页。若以root用户登录,会进入Cloud9主页,页面上有“创建环境”按钮,点击后弹出警告框:
检测到AWS根账户登录
我们不建议您使用AWS根账户创建或操作环境,请改用IAM用户,这是AWS安全最佳实践。
因此我退出账户,重新访问Cloud9控制台链接,这次选择“IAM用户”登录,页面提示输入账户ID,输入账户ID后,页面要求输入IAM用户名和密码。我输入了用户名,但该IAM用户未设置密码。我尝试将访问密钥ID、秘密访问密钥作为密码输入,AWS均返回“您的认证信息不正确”的提示。
我最初的疑问是要如何操作才能以该IAM用户身份访问Cloud9系统?之前查到的相关资料要么仅提及CLI/API调用方案,要么提示需要向管理员获取控制台密码,但我特意为该IAM用户关闭了控制台访问权限,因为创建该用户的目的就是仅用于访问Cloud9,不开放其余AWS服务权限,官方登录故障排查文档也未提及对应场景的解决方案。
编辑补充 问题1
等待答复期间,我重新以root用户登录Cloud9熟悉操作,按照Cloud9 Python教程指引安装Python SDK时执行了命令:
sudo python3.7 -m pip install boto3(已修正原文档“python36”的笔误)
执行后收到警告:
警告:通常不建议使用root权限运行pip install,可尝试改用
python3.7 -m pip install --user命令。
该建议命令未指定要安装的模块,逻辑不通;更严重的是,弹出警告后系统未提供中止命令的选项,直接完成了安装。我想确认该操作是否会给我的AWS账户带来安全隐患。
编辑补充 问题2
由于未得到答复,我猜测可能需要为IAM用户开启控制台访问权限以生成密码,因此修改了该用户配置开启了控制台访问,随后成功以该用户身份登录。登录后我尝试访问IAM、SES、Support等多个服务,均因权限不足无法访问,访问Cloud9时则拥有完整操作权限。随后我退出登录,重新以root用户身份登录删除了此前创建的Cloud9环境,再退出重新以IAM用户身份登录,创建了新的Cloud9环境。
我此前未给新用户开启控制台访问,是因为我之前为SES创建的2个IAM用户均未开启控制台访问,因此我默认IAM用户不需要开启该权限。如果Cloud9属于特殊场景——使用Cloud9的IAM用户必须开启控制台访问,而SES的IAM用户不需要,那么《Cloud9用户指南》应当明确说明这一点。
最终汇总问题
我最初提出的“无控制台访问权限如何登录”的问题,现调整为两个问题:
- 我通过为IAM用户授予控制台访问权限解决登录问题的操作是否正确?
- 此前以root用户创建并使用Cloud9环境是否存在安全风险?删除该root用户创建的环境后是否已经消除风险,还是存在需要进一步处理的遗留影响?
关于开启IAM用户控制台访问的操作
你的操作完全正确。
Cloud9本身就是托管在AWS Web控制台内的服务,所有通过浏览器访问Cloud9环境的操作,本质都是在访问AWS控制台,对应的IAM用户必须开启控制台访问权限、设置独立控制台密码才能登录,这和你之前用的SES这类可以直接通过访问密钥调用API/CLI使用的服务逻辑完全不同。
你给该IAM用户仅绑定Cloud9相关权限策略的操作也没问题,开启控制台访问只是给了用户登录控制台的入口,没有对应权限的服务(比如你提到的IAM、SES、Support)依然无法访问,不会出现权限越界的问题,完全符合最小权限的安全要求。
另外你觉得pip给出的建议命令没指定安装模块逻辑不通,其实只是警告信息做了省略,完整命令是在后面补上要装的boto3即可,不是命令本身有问题。
关于root用户操作的安全风险
首先说你用sudo执行pip安装boto3的操作,不会给AWS账户带来额外安全隐患。这个警告只是通用的Linux环境操作提示:用root权限安装pip包如果包本身带恶意代码,会拿到环境的最高权限,但你安装的是AWS官方的boto3 SDK,本身不存在恶意代码问题,不会有风险。
然后说root用户创建Cloud9环境的风险:风险点本质就是root账户本身的权限过大——Cloud9环境内默认继承创建环境的身份权限,root账户创建的环境,环境内所有操作默认都带AWS账户的完整最高权限,一旦环境被入侵或者误操作,可能影响整个账户下的所有资源。你已经删除了root创建的环境,并且用仅带Cloud9权限的IAM用户重新创建了环境,这部分风险就已经完全消除了,不存在遗留影响。
唯一建议做的收尾操作:检查root账户的访问密钥,确认没有为了在Cloud9里使用给root账户生成过访问密钥,如果有的话直接删除即可,日常操作完全不要用root账户生成访问密钥。
内容的提问来源于stack exchange,提问作者NewSites

