-- Aws Iam(identity,user,role,group,policy,resource,)架構圖和快速入門.
【官網】:Cloud Computing Services - Amazon Web Services (AWS)
應用場景
aws 云服務運維,devops過程中經常涉及各項服務,權限,角色的處理。 為了更好的使用各項云服務同時確保安全性,需要深入了解aws iam相關內容。
基礎資源
aws
使用須知
需要結合公司業務需求,安全需求,成本承受能力,運維能力等綜合確認相關的aws部署設置方案。
配置步驟
【aws iam核心關系圖】
【aws iam安全準則】
- users: create individual users
- permissions: Grant least priviledge
- groups: manage permissions with groups
- conditions: restrict priviledged access further with conditions
- auditing: enable cloudTrail to get logs of API calls
- password: configure a strong password policy
- rotate: rotate security credentials regularly.
- MFA: enable MFA (Multi-Factor Authentication) for priviledged users
- sharing: use IAM roles to share access
- roles: use IAM roles for EC2 instances
- root: reduce or remove use of root
【 aws iam重要術語】
[ARN]
ARN是Amazon Resource Names的縮寫,在AWS里,創建的任何資源有其全局唯一的ARN。ARN是一個很重要的概念,它是訪問控制可以到達的最小粒度。在使用AWS SDK時,我們也需要ARN來操作對應的資源。
[用戶(users)]
在AWS里,一個IAM user和unix下的一個用戶幾乎等價。你可以創建任意數量的用戶,為其分配登錄AWS management console所需要的密碼,以及使用AWS CLI(或其他使用AWS SDK的應用)所需要的密鑰。你可以賦予用戶管理員的權限,使其能夠任意操作AWS的所有服務,也可以依照Principle of least privilege,只授權合適的權限。
注: 這樣創建的用戶是沒有任何權限的,甚至無法登錄,可以進一步為用戶關聯群組,設置密碼和密鑰.
[群組(groups)]
等同于常見的unix group。將一個用戶添加到一個群組里,可以自動獲得這個群組所具有的權限。在一家小的創業公司里,其AWS賬號下可能會建立這些群組:
- Admins:擁有全部資源的訪問權限
- Devs:擁有大部分資源的訪問權限,但可能不具備一些關鍵性的權限,如創建用戶
- Ops:擁有部署的權限
- Stakeholders:擁有只讀權限,一般給manager查看信息之用
注: 默認創建的群組沒有任何權限,我們還需要為其添加policy.
[角色(roles)]
類似于用戶,但沒有任何訪問憑證(密碼或者密鑰),它一般被賦予某個資源(包括用戶),使其臨時具備某些權限。比如說一個EC2實例需要訪問DynamoDB,我們可以創建一個具有訪問DynamoDB權限的角色,允許其被EC2 Service代入(AssumeRule),然后創建EC2的instance-profile使用這個角色。這樣,這個EC2實例就可以訪問DynamoDB了。當然,這樣的權限控制也可以通過在EC2的文件系統里添加AWS配置文件設置某個用戶的密鑰(AccessKey)來獲得,但使用角色更安全更靈活。角色的密鑰是動態創建的,更新和失效都無須特別處理。想象一下如果你有成百上千個EC2實例,如果使用某個用戶的密鑰來訪問AWS SDK,那么,只要某臺機器的密鑰泄漏,這個用戶的密鑰就不得不手動更新,進而手動更新所有機器的密鑰。這是很多使用AWS多年的老手也會犯下的嚴重錯誤。
[權限(permissions)]
AWS下的權限都通過policy document描述,就是上面我們給出的那個例子。policy是IAM的核心內容.
[Identity/Principal]
從資源訪問的角度來看,使用 AWS 資源的其實不單單是具體的人,還可能是 Application。所以,AWS 里面的身份,分幾種:
- User
- Application
- Federated User
- Role
能在 AWS IAM 控制臺里創建的,只有 User 和 Role。而 User 在創建的時候,可以指定它的訪問類型。是憑借用戶名密碼在 Console 登錄,還是使用 Access Key ID 及 Secret 通過 API 來訪問,還是兩者皆可。
要特別注意的是,User 是直接操作 AWS 資源的用戶,而不是你自己開發并部署在 AWS 的系統里面的用戶。IAM 的 User 是有數量限制的,最多 5000 個。
如果你開發的系統需要操作 AWS 資源,比如說上傳文件到 S3,那你需要用的是 Federated User。通過 OpenID Connect(如 Google/Facebook)或者 SAML 2.0(如 Microsoft AD),你的系統用戶可以在登錄后換取代表某個 AWS Role 的臨時 token 來訪問 AWS 資源。
[Authentication]
訪問和使用 AWS 資源有兩種方式,一種是通過頁面登錄,也就是 Console。一種是通過 AWS API,也就是接口,包括 CLI, SDK 或 HTTPS 請求。
IAM User 在 Console 頁面登錄需要提供 AWS 帳號名,IAM User 名和密碼。AWS 帳號名是 AWS 云服務開通時,系統生成的一串數字,或者是你賦予的別名。它其實就是一個多租戶系統里面的租戶帳號。 AWS 還會為每個帳號提供一個獨特的登錄鏈接
而如果是使用 API 訪問 AWS,我們是需要用 IAM User 的 Access Key ID 及 Secret 來為這個 HTTP 請求生成簽名的
常見問題
快速入門
無
參考資料
- IAM 中的策略和權限
- Policy evaluation logic
- 一文讀懂 AWS IAM
- 管理用戶
- aws跨賬號權限委托
- 我希望在開始之前知道的AWS技巧
- AWS系列:深入了解IAM和訪問控制
?