本文旨在給剛準備上手/稀里糊涂上手AWS的小伙伴們非常簡單地普及一下AWS 的IAM文章伴郁,希望大家能在項目中逐漸深入地理解這些概念泪喊,AWS文章應該會做成一個系列。
IAM是什么缨该?
AWS Identity and Access Management (IAM), 這是AWS的一個服務似嗤,幫助用戶安全地對AWS資源進行控制,這么說可能有點難懂,讓我們來看下AWS下的四個概念吧
用戶(User):代表訪問AWS的終端用戶
可使用密碼來訪問AWS管理平臺
可使用Access Key ID和Secret Access Key并通過API, CLI或SDK的形式來訪問AWS服務
默認用戶沒有任何權(quán)限泉褐,我們需要用策略賦予每個用戶所需要的最小權(quán)限
組(Group):擁有相同權(quán)限的用戶組合
擁有相同權(quán)限的用戶可以歸入一個組赐写,方便權(quán)限的統(tǒng)一管理和控制
一個組可以擁有多個用戶,一個用戶可以屬于多個組
-
角色(Role):角色可以分配給AWS服務兴枯,讓AWS服務有訪問其他AWS資源的權(quán)限
角色不包含任何用戶名/密碼
角色比用戶更加安全可靠血淌,因為沒有泄露用戶名/密碼或者Access Key的可能性
舉個例子,我們可以賦予EC2實例一個角色财剖,讓其有訪問S3的讀寫權(quán)限
策略(Policy):定義具體訪問權(quán)限的文檔
策略具體定義了能訪問哪些AWS資源悠夯,并且能執(zhí)行哪些操作(比如List, Read, Write等)
策略的文檔可以JSON的格式展現(xiàn)
根用戶(Root User)
根用戶:在我們創(chuàng)建賬戶第一次登陸的時候,其實登陸的是根用戶躺坟,而AWS并不推薦使用根用戶來執(zhí)行日常任務,而應當使用被賦予了AdministratorAccess的用戶來管理日常任務(包括之后的為 AWS 賬戶設置其他組沦补、用戶),使得這些用戶成為管理員咪橙。
通過為訪問賬戶的人員創(chuàng)建單獨的 IAM 用戶夕膀,可以向每個 IAM 用戶提供一組獨特的安全憑證。我們還可向每個 IAM 用戶授予不同的權(quán)限美侦。如有必要产舞,我們可以隨時更改或撤銷 IAM 用戶的權(quán)限。(如果公布了根用戶憑證菠剩,則很難將其撤銷易猫,且不可能限制它們的權(quán)限。)
用戶(User)
在我們還提到了Access Key ID和Secret Access Key,這兩個其實是當我們操作cli或者編寫代碼的時候使用的,在我們創(chuàng)建成功用戶的時候便會給我們包含User name 具壮、Password 准颓、Access key ID哈蝇、 Secret access key的 .csv文件
創(chuàng)建完成后,可以看到用戶可以被加到不同的組里了攘已,這是在創(chuàng)建用戶的時候便可以設置的(這里我們沒有截圖出來這個步驟炮赦,大家可以自行去試一下)
在針對組的操作之前,我們還可以對用戶附加單獨的策略样勃,如下圖所示吠勘,直接附加的策略是我們單獨給這個hao.gu2的用戶加的,而從組內(nèi)附加的策略峡眶,我們可以去組內(nèi)管理看幼。
組(Group)
在組中,我們可以設置這個組內(nèi)所有成員的AWS資源權(quán)限幌陕,比如下圖,我們可以大概從名字看出來汽煮,prod這個組擁有RDS搏熄、EC2全部的訪問權(quán)限,只有DynamoDB的read權(quán)限暇赤。
通過這種方式心例,我們就不用再每次創(chuàng)建一個新用戶的時候,耗時耗力地去給他添加策略了鞋囊,只需要把他加到現(xiàn)有的組中止后,就可以完成這個用戶基本的權(quán)限控制,當這個用戶還需要額外的權(quán)限時溜腐,我們也可以單獨地附加給他译株。
策略(Policy)
那么這個策略是什么呢?AWS已經(jīng)給我們準備了各種各樣的通用策略挺益,下圖是AWS已有的s3策略歉糜,一般情況下這些策略都是對所有的s3起效果,那么如果我們只想讓用戶訪問一個特定的s3資源呢該怎么做呢望众?
AWS提供給我們可視化的編輯器來編輯我們的策略匪补,如下圖,我們可以選擇相對應的服務,烂翰,然后選擇我們賦予所需的權(quán)限操作夯缺,還可以指定這些操作哪個特定的S3,這些選項最后都會轉(zhuǎn)成Json格式保存起來甘耿。用戶只會獲得所有分配
關于Policy的邏輯可以設計的非常多樣化踊兜,但是仍然可以總結(jié)成一句話,只有具備顯式的 Allow棵里,并且沒有顯式的 Deny润文,才有權(quán)限姐呐。
舉個例子:
如果同樣的資源既有Deny,又有Allow典蝌,那么最終會是Deny.
如果有一個資源沒有被Allow曙砂,那么就會被Deny
角色(Role)
終于輪到介紹角色了:
這是一個很容易與”用戶”混淆的的概念,IAM 角色非常類似于用戶骏掀,它具有確定其在 AWS 中可執(zhí)行和不可執(zhí)行的操作的權(quán)限策略鸠澈。但是,角色沒有任何關聯(lián)的憑證(密碼或訪問密鑰)截驮。角色旨在讓需要它的任何人代入笑陈,而不是唯一地與某個人員關聯(lián)。IAM 用戶可擔任角色來暫時獲得針對特定任務的不同權(quán)限葵袭。
看起來似乎“用戶”也能很好的完成這些任務涵妥,那么為什么還需要”角色”這個概念呢?
我們來看一看”角色”這一概念的應用場景:
-
AWS服務角色(例如:EC2坡锡,Lambda蓬网,Redshift等)
我們的用戶的策略是針對用戶的賬號而言的,我們可以限制登錄這個賬號的人能去做什么鹉勒,不能做什么帆锋,那么怎么控制某個AWS的服務他的功能呢?
這個時候”角色”就出場了禽额,比如我們可以創(chuàng)建一個EC2的角色锯厢,并賦予他一些Policy,使其只能訪問S3(如果沒有賦予角色脯倒,默認是不能訪問其他的AWS資源的)实辑,這樣我們就能做到控制AWS服務的功能,
在上面這個例子中明顯是不適合用戶的場景盔憨,EC2只是我們的服務徙菠,他不應當有用戶這個概念,但是我們需要做的事情又跟”用戶”很像郁岩,都是去控制他所能做的事婿奔,那么就有了角色這個概念。
-
實施最小權(quán)限原則
這指的是僅限特定任務需要時问慎,才能使用提升的權(quán)限萍摊。借助角色,我們可以幫助防止對敏感環(huán)境進行意外更改如叼,
舉個栗子:
假如有這么一個EC2實例冰木,上面跑著公司最核心的業(yè)務代碼,我們可以創(chuàng)建具有停止權(quán)限的角色,而不是直接向用戶授予終止實例的權(quán)限踊沸。
當我們想終止這個EC2時歇终,我們需要切換角色,才能執(zhí)行終止操作逼龟。
-
跨賬戶訪問:從其他AWS賬戶向用戶授予權(quán)限评凝,無論我們是否控制這些賬戶。
我們可以向 IAM 用戶授予權(quán)限腺律,以便切換至我們自己活著我們擁有的其他 AWS 賬戶中定義的角色奕短。
這個場景非常常見,比如某個組織通過多個AWS賬號將開發(fā)環(huán)境和生產(chǎn)環(huán)境隔離匀钧,開發(fā)賬戶中的用戶有時可能需要訪問生產(chǎn)賬戶中的資源翎碑。
當然我們可以在兩個賬戶中工作的用戶創(chuàng)建單獨的身份 (和密碼),但是這種情況下我們還需要管理多個賬戶的憑證之斯,帶來一些困擾日杈。
這個時候就可以通過角色來方便地管理這一點啦。
舉個例子:
- 在Prod賬號(123123123123)中創(chuàng)建一個UpdateAPP的角色使其能對Prod賬號下的S3讀取和寫入佑刷,并且定義信任策略达椰,將Dev賬號指定為Principal。
- 在Dev賬號(456456456456)中授予用戶切換為角色的權(quán)限项乒。這樣我們就可以在Dev賬號中切換成Prod賬號的角色,來操作Prod賬號下的AWS資源了梁沧。
如下圖所示檀何,先在Prod賬號(123123123123)中創(chuàng)建一個給Dev賬號(456456456456)用的角色,并且賦予該角色訪問S3的權(quán)限廷支,最后到Dev賬號(456456456456)中賦予用戶切換角色的權(quán)限(此處省略)频鉴,然后切換角色,輸入Prod賬號(123123123123)和角色名即可切換了,通過這種方式恋拍,我們不用登出自己的賬號便可訪問其他賬號下的資源垛孔。
好啦,以上就是IAM最主要的四個概念的簡單介紹施敢,希望大家不要像我一樣過了SAA結(jié)果這些概念還是稀里糊涂周荐,考試就只顧著刷題去了。略過了不少子概念是因為想把這篇文章變得簡單易理解僵娃,而不是像用戶手冊一樣概作,而用戶手冊AWS已經(jīng)有了。如下鏈接
https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/access_policies_managed-vs-inline.html
TODO:
AWS Cli整合IAM
AWS Organization
-
-