IAM是亞馬遜的身份認證系統,英文全稱是Identity and Access Management。主要管理的是用戶或者應用對AWS資源的訪問權限控制。
IAM主要有User, Group, Role, Policies, Identity Provider等概念, 下面對這幾個概念進行簡單地介紹
Concept
User
User(用戶),操作AWS資源的最直觀,也是最終的載體。
我們注冊AWS用的賬戶也叫根賬戶,具有AWS所有的訪問權限,AWS建議日常使用不要使用根賬戶來操作。而是單獨在IAM控制臺中創建User。
一般企業在自己的內部系統中都有自己的一套用戶系統,AWS提供了AssumeRole和Federation來將外部賬戶和AWS的資源結合。在企業內部賬戶登錄后,在登錄AWS使用AssumeRole或者Foderation認證通過后,AWS會給予一個臨時token,相應的創建一個臨時賬戶,可以操作許可的AWS資源。
User可以訪問IAM設置的別名地址登錄控制臺(格式為https://[別名].signin.aws.amazon.com/console),注意登錄的賬戶需要有控制臺訪問權限。
Group
Group(組),可以將用戶分組,也可以定義組策略(Policies)。
Role
Role(角色),可以綁定一系列的策略(Policies),常用來定義第三方登錄(比如上面提到的公司賬戶)賬戶的AWS操作權限,或者接入應用對AWS的操作權限。和組不同,Role并不能添加已有的用戶。
Policies
Policies(策略),定義對AWS操作權限的描述,AWS其實已經有了很多內建策略,如果我們并不需要那么細粒度的權限把控,其實并不需要我們自己定義。不過如果我們需要自己寫策略的話,其實AWS為我們準備了策略生成器,大部分工作是可以通過表單選擇完成。
Identity Provider
Identity Provider(身份提供商),如果需要外部提供商登錄,比如常見的比如Google, FaceBook這類的,就需要添加Identity Provider并配置相關選項,在兩者間建立互信機制。AWS支持OpenID和SAML聯合登錄。
配置AWS Cli
創建IAM用戶時會給予你一份證書,包含Access Key ID和Secret Access Key
當你AWS CLI安裝完成后,需要運行aws configure
配置CLI:
? ~ aws configure
AWS Access Key ID: # IAM的Access Key ID
AWS Secret Access Key: # IAM的Secret Access Key
Default region name: # 默認操作Region的名稱(具體參考http://docs.aws.amazon.com/zh_cn/general/latest/gr/rande.html)
Default output: # 輸出格式json/text/table
配置OK后就可以使用Cli操作許可的AWS資源。
關于IAM最佳實踐
- 隱藏根賬戶證書
根賬戶不應該擁有證書,因為根賬戶擁有AWS最大的權限,應當和保護信用卡信息一樣重視。 - 創建單獨的管理員IAM賬戶
因為IAM賬戶易于管理,容易改變其權限和整個收回賬戶,所以推薦使用IAM賬戶管理AWS,而不是使用AWS根賬戶。 - 使用組賦予權限
- 使用強密碼
- 使用多重驗證
- 對應用賦予單獨的IAM賬戶
- 最小權限
- 通過使用角色而非共享證書來委托訪問,其他AWS賬戶
- 定期交替輪換證書,證書需要時常更新
- 刪除不需要的證書
- 使用策略條件來增強安全性
- 監控 AWS 賬戶中的活動
具體有關最佳實踐的描述參見http://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/best-practices.html