简单来讲,IAM
角色是一组权限的集合,IAM
用户或者AWS
服务能够临时性代入这个角色,得到角色所拥有的权限;AWS
官方定义以下:html
IAM
角色相似于用户,由于它是一个AWS
实体,该实体具备肯定其在AWS
中可执行和不可执行的操做的权限策略。可是,角色旨在让须要它的任何人代入,而不是惟一地与某我的员关联。此外,角色没有关联的标准长期凭证(密码或访问密钥)。相反,若是用户担任某个角色,则会动态建立临时安全凭证并为用户提供该凭证。
在AWS实战 - 利用IAM对S3作访问控制中,咱们的实战案例里有一个存储桶derek-public2
,除了Harp-Admin
,其他IAM
用户都只有只读权限,如今咱们来创建一个拥有写入该存储桶权限的角色,以便在某些特殊状况下,普通IAM
用户能够临时代入这个角色来修改存储桶。json
Harp-Admin
登陆IAM
控制台,点击角色,建立角色;AWS
帐户,在帐户ID
中输入本AWS
帐号的ID
;ID
通常在受权其余AWS
帐户代入此角色的时候使用,须要MFA
验证看状况选择;edit_public2
:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::derek-public2" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:GetObjectAcl", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::derek-public2/*" ] } ] }
edit_public2
,须要注意的是,一个IAM
用户切换角色后,它只会拥有角色赋予的权限,不会拥有IAM
用户原先自带的权限,所以为了正常访问S3
,咱们再勾选s3_common_policy
;tag
,再下一步,角色名称填写为Public2_Manager
,点击建立,角色建立完成;IAM
用户能够正常访问IAM
控制面板,咱们直接给以前建立的s3_common_group
组添加一条AWS
托管策略IAMReadOnlyAccess
;IAM
用户赋予切换角色的权限,咱们须要再建立一条策略,附加给s3_common_group
,策略json
以下:{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::712538533226:role/Public2_Manager" } }
user1
登陆,进入S3
,在derek-public2
中建立文件夹,提示失败;ID
,角色输入Public2_Manager
,而后点击切换角色;derek-public2
存储桶下,已经能够正常创建文件夹了;cli
的方式切换角色,详见切换到IAM角色(AWS CLI);