簡單來講,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);