簡單總結EC2
的文檔發現,對AWS EC2
的權限進行控制,包含三層意思:第一是對使用EC2
及EC2
相關的AWS
服務的權限控制,好比建立、運行EC2
或者使用EC2
相關的AMI
,建立VPC
等相關操做的權限控制;第二是EC2
實例中運行的應用程序訪問AWS
資源的權限控制,好比授予EC2
中的應用程序相應權限以訪問S3
資源;第三是EC2
中的操做系統的不一樣用戶對EC2
的訪問控制。html
EC2
及相關服務的權限控制這部分與以前的文章AWS實戰 - 利用IAM對S3作訪問控制中提到的對S3
的訪問控制原理是同樣的,都是經過設定不一樣權限的IAM
用戶來達到權限控制的效果。不一樣之處有兩點:linux
S3
除了可使用基於用戶的IAM
策略,還可使用基於資源的ACL
和儲存桶策略,而EC2
則沒有基於資源的策略,只能使用IAM
用戶策略;EC2
的權限控制更復雜,涉及到的資源更多;例如若是要授予某用戶啓動EC2
實例的權限,還須要授予其使用AMI
的權限,建立VPC
的權限,建立密鑰對的權限等等,完整的權限策略json
以下,能夠看到涉及到的resource
較多:{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:region::image/*", "arn:aws:ec2:region:account:instance/*", "arn:aws:ec2:region:account:volume/*", "arn:aws:ec2:region:account:key-pair/*", "arn:aws:ec2:region:account:security-group/*", "arn:aws:ec2:region:account:subnet/*", "arn:aws:ec2:region:account:network-interface/*" ] } ] }
正是因爲EC2
權限涉及較多資源,在AWS
官方文檔中,列舉了十幾種不一樣狀況下的權限CASE
,詳情參考使用AWS CLI或AWS SDK的策略示例和用於Amazon EC2控制檯的策略示例。json
EC2
中的應用程序的權限控制若是EC2
中的應用程序須要訪問AWS
資源,咱們固然能夠將相關的用戶憑證儲存在EC2
中供應用程序使用,但若是須要修改、調整用戶憑證,可能須要對每個實例、應用程序都作處理。更推薦的作法是將IAM
角色附加給EC2
實例,EC2
中的應用程序從EC2
元數據獲取該角色的臨時安全憑證,從而取得角色對應的權限。segmentfault
例如,一名開發人員在EC2
實例上運行一個應用程序,該應用程序要求訪問名爲photos
的S3
存儲桶。管理員建立Get-pics
服務角色並將該角色附加到EC2
實例。在該實例上運行應用程序時,應用程序可使用該角色的臨時憑證訪問photos
。管理員沒必要向開發人員授予訪問照片存儲桶的權限,開發人員徹底沒必要共享或管理證書。具體步驟可參考使用IAM角色向在Amazon EC2實例上運行的應用程序授予權限。安全
Linux
實例上管理用戶通常來講,每一個linux EC2
實例的默認用戶都是ec2-user
,若是有須要也能夠增長,這部分與普通的linux
系統增長用戶沒有區別,也與AWS
的IAM
用戶沒有任何關聯,只是這裏的用戶只能經過密鑰的方式鏈接ec2
,不能使用密碼,詳情參考在Linux實例上管理用戶帳戶。ide