當前位置:
首頁 > 知識 > aws ec2的iam role深度解析

aws ec2的iam role深度解析

Aws ec2 iam role

訪問aws的各種service api的時候,都要先進行身份認證,有下面幾種情況。

1.通過aws console web界面訪問

用戶名,口令,MFA(可選)

2.aws cli

需要在~/.aws目錄下的credentials文件裡面配置

aws_access_key_id

aws_secret_access_key

3.develop sdk

環境變數,配置文件,~/.aws目錄下的credentials文件中配置均可

可以看出來,除了console以外,其它情況下,都需要提供credential。

上面提到的credential是通過iam user登陸到aws console界面後創建的。credential的許可權同iam user的許可權是一樣的。設想一下,如果root用戶的credential信息被人利用,那麼他可以做任何事情。所以,aws建議

不要生成root用戶的credential,也就是aws_access_key_id和aws_secret_access_key,而是

創建其他的iam user,通過iam user獲取credential,然後再分給其它人,程序或者工具使用。

雖然是使用iam user的credential,但是如果被人盜用,同樣會產生很嚴重的後果。所以,對於

運行在ec2上的application來說,如果把credential配置在ec2的某個地方(環境變數,配置文件),

仍然存在很大的安全隱患,而且,如果以後credential發生變更,也會增加維護的成本。

所以,基於以上安全和維護的原因,aws ec2為application提供了一種類似於託管的方式,application

需要訪問web service api的時候,由sdk內部實現直接向ec2 instance獲取動態的臨時credential,然後再用取得的credential發起https認證請求。這樣一來,application就不需要理會credential的事情了。當然,

前提是需要配置好ec2的IAM role。

IAM role的創建:

Signin aws console -〉My Security Credentials -〉 Roles -〉Create new role -〉Select(Amazon EC2 role type) -〉Attach Policy -〉Next Step -〉Input Role name -〉Create role

通過console創建完IAM role的時候,會自動創建一個同名的instance profile,然後ec2 instance配置

iam role的時候,實際選擇的是這個instance profile。在Attach Policy的時候,需要根據application實際需要訪問哪些aws的service和resource進行相應的選取。

Attach IAM role:

1〉可以在創建ec2 instance的時候,指定instance profile

2〉對於執行中的ec2 instance,也可以attach指定的instance profile

可以通過ec2 meta-data來查看security-credentials信息:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/role_name

{

"Code" : "Success",

"LastUpdated" : "2012-04-26T16:39:16Z",

"Type" : "AWS-HMAC",

"AccessKeyId" : "xxxx",

"SecretAccessKey" : "yyyy",

"Token" : "token",

"Expiration" : "2017-05-17T15:09:54Z"

}

application 使用aws sdk的話,sdk內部會自動為我們做這件事情,然後利用credentials對https request

進行簽名。其實,ec2內部是通過role name調用sts(AWS Security Token Service)來獲取credentials信息的。這種動態獲取的credentials是有生存周期的,過期自動失效,ec2 instance會在過期之前自動獲取新的credentials,sdk不需要關注過期的問題,ec2 instance會把有效的credentials保存在meta-data中,sdk只需要從meta-data中獲取即可。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

小程序解析html標籤wxPrase插件
OpenStack(企業私有雲)萬里長征第三步——調試成功
Javascript中的類型轉換
第46篇 多線程如何排隊執行
有關ArrayList常用方法的源碼解析

TAG:達人科技 |

您可能感興趣

osg例子解析-osgsimpleshaders
Photoshop詳細解析CameraRaw插件使用
網關 Spring-Cloud-Gateway 源碼解析——路由之RouteDefinitionLocator一覽
fileless malware技術解析及檢測
druid-spring-boot-starter源碼解析
AtomicInteger 源碼解析
Ansible 深度解析
Bayesian Personalized Ranking 演算法解析及Python實現
新一代 Apple Watch Series 4 將提升解析度
使用 Python的urlliib.parse 庫解析 URL
技術解析系列PouchContainer Goroutine Leak 檢測實踐
android 訪問webservice(解析一行代碼實現)
深度解析政府監聽工具FinFisher:Windows
Tomaso Poggio解析下個「AlphaGo」線索,再談「深度學習鍊金術」
精讀解析 《When Sophie Gets Angry》
長文解析:Gardenscapes的成功和Playrix的轉型分析
Istio技術與實踐02:源碼解析之Istio on Kubernetes 統一服務發現
藉助Jackson的JsonTypeInfo註解實現多態類的解析
Moto E5 Play Android Go手機發布:真上古解析度
SparseArray 稀疏數組解析