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 稀疏數組解析