我刚刚与EC2取得联系,并了解了IAM角色的概念。这个问题是为了澄清我对限制层面概念的怀疑。
假设我有一个带有IAM角色Role A
的EC2
实例,它拥有一个策略AmazonS3ReadOnlyAccess
,如果我错了,请纠正我,但这意味着该特定实例只允许执行S3只读操作。
现在说我用Programmatic access
和AmazonS3FullAccess
策略创建了一个User
。
如果这个用户SSH进入EC2实例,他能把文件写到s3
吗?
我仍然无法自己尝试,因为我没有linux机器,并且仍在考虑如何使用putty
连接到Ec2
假设我有一个EC2实例,它附加了IAM角色角色A拥有一个策略AmazonS3ReadOnlyAccess,如果我错了,请纠正我,但是这意味着这个特定的实例只允许执行S3只读活动
是
现在说我创建了一个具有编程访问权限的用户AmazonS3FullAccess政策。如果这个用户SSH进入EC2实例,可以他把文件写到s3?
IAM用户不能使用IAM用户凭据通过SSH连接到EC2实例。在配置EC2实例后,您需要使用常规的操作系统用户构造,以SSH到服务器(AWS创建的默认用户密钥)。
此外,如果用户SSH到EC2实例并通过AWS CLI、REST API或SDK使用EC2用户的程序访问凭据(不必是EC2实例,也可以是您的内部部署服务器),则如果IAM用户具有S3写入策略,则CLI命令或API调用或使用SDK的代码能够将文件写入S3。
所以总结一下
- 如果您正在运行EC2实例,请使用IAM角色执行CLI命令、Code with SDK或REST API调用以访问AWS资源
- 如果您在本地或AWS之外使用服务器,请使用IAM用户的程序访问密钥进行同样的操作
IAM角色如何与EC2 内部合作的见解
- 当您将IAM角色附加到EC2实例时,AWS会定期使用该EC2实例的临时访问凭据更新EC2实例(这是一种良好的安全做法)
- 这些凭据可通过使用EC2实例内的SDK的CLI、REST API和代码的元数据URL访问
注意:使用角色时,它非常安全,因为它使用临时访问凭据,而IAM用户程序访问使用长期访问凭据。