? ? ? ? IAM策略是一個(gè)可以聲明一個(gè)或多個(gè)權(quán)限的文檔灌闺。AWS提供很多自帶的IAM策略,允許用戶快速應(yīng)用堕义〔卵客戶自己也可以按照自己的需求生成新的IAM策略,IAM策略生成后倦卖,用戶可以將它們應(yīng)用到IAM用戶洒擦,IAM用戶組或者是IAM角色中,可以向同一個(gè)IAM用戶應(yīng)用多個(gè)IAM策略怕膛,在生成IAM策略時(shí)熟嫩,應(yīng)注意的是特別的拒絕會(huì)覆蓋特別聲明的允許。
? ? ? ? IAM策略寫(xiě)法:
{
"Version": "2012-10-17",
"Statement": [
????{
????????"Effect": "Allow",
????????"Action": "s3:ListAllMyBuckets",
????????"Resource": "arn:aws:s3:::*"
????},
????{
????????"Effect": "Allow",
????????"Action":[ "s3:ListBucket", "s3:GetBucketLocation" ],
????????"Resource":"arn:aws:s3:::EXAMPLE-BUCKET-NAME”
????????}
????]
}
? ? ? ? 首先有版本褐捻,版本號(hào)就是年月日掸茅,然后聲明中包括三個(gè)部分椅邓,效果,動(dòng)作和資源昧狮。效果有兩種景馁,Allow或是Deny,即允許或拒絕逗鸣,動(dòng)作就是針對(duì)哪些資源可以進(jìn)行的某種操作合住,資源就是操作的對(duì)象。上面的IAM策略例文中有一個(gè)版本號(hào)撒璧,兩個(gè)聲明透葛。第一個(gè)聲明中,規(guī)定了針對(duì)所有的S3存儲(chǔ)桶(arn:aws:s3:::*中最后的*代表所有的存儲(chǔ)桶沪悲,也可以指明某個(gè)存儲(chǔ)桶)获洲,允許用戶對(duì)桶列出所有我的存儲(chǔ)桶。第二個(gè)聲明中殿如,規(guī)定了針對(duì)S3中的某個(gè)(EXAMPLE-BUCKET-NAME)存儲(chǔ)桶贡珊,允許用戶對(duì)該桶列出桶內(nèi)的數(shù)據(jù)對(duì)象,以及存儲(chǔ)桶的所在位置涉馁。
? ? ? ? 從上面的例子中可以看到门岔,一個(gè)IAM策略中可以有多個(gè)聲明,而每個(gè)聲明可以針對(duì)不同的AWS服務(wù)烤送,比如一個(gè)是S3寒随,另一個(gè)可以是EC2。而在IAM用戶應(yīng)用的IAM策略中帮坚,如果有兩個(gè)策略妻往,或者是一個(gè)策略中的兩個(gè)聲明,針對(duì)同一個(gè)資源執(zhí)行了兩個(gè)相反的動(dòng)作试和,即一個(gè)聲明允許針對(duì)某資源執(zhí)行某操作讯泣,而另一個(gè)聲明拒絕針對(duì)某資源執(zhí)行某種操作,這時(shí)候拒絕的聲明會(huì)覆蓋掉允許的聲明阅悍。
? ? ? ? IAM角色和IAM用戶很相似好渠,都可以決定哪些人可以在AWS中進(jìn)行哪些操作,在生成IAM角色的時(shí)候和IAM用戶也很相似节视,將某些IAM策略賦予給IAM角色即可拳锚。當(dāng)啟動(dòng)一個(gè)EC2實(shí)例,然后通過(guò)EC2實(shí)例來(lái)訪問(wèn)S3存儲(chǔ)桶的時(shí)候寻行,有兩種方法:第一霍掺,可以在EC2實(shí)例上進(jìn)行IAM用戶認(rèn)證,假定有一個(gè)IAM用戶擁有對(duì)S3存儲(chǔ)桶的訪問(wèn)權(quán)限,在EC2上輸入IAM用戶的密鑰之后抗楔,AWS系統(tǒng)會(huì)認(rèn)為現(xiàn)在這個(gè)EC2是以IAM用戶的身份來(lái)訪問(wèn)S3存儲(chǔ)桶的棋凳。但是AWS非常不推薦這種做法,因?yàn)閷AM用戶的密鑰信息輸入到EC2實(shí)例上是非常不安全的做法连躏,其次IAM用戶的私有密鑰需要周期性的更新剩岳,而更新方法只能是手動(dòng)。第二入热,可以為這個(gè)EC2實(shí)例綁定一個(gè)IAM角色拍棕,假定這個(gè)IAM角色擁有對(duì)S3存儲(chǔ)桶的訪問(wèn)權(quán)限,在啟動(dòng)EC2實(shí)例的時(shí)候勺良,或者是啟動(dòng)EC2實(shí)例之后绰播,都可以對(duì)其綁定角色。IAM角色生成之后尚困,用戶是看不見(jiàn)密鑰的相關(guān)信息的蠢箩,但是在AWS系統(tǒng)中它是擁有相關(guān)信息的,并且當(dāng)利用IAM角色的時(shí)候事甜,AWS系統(tǒng)默認(rèn)是會(huì)自動(dòng)更新IAM角色的密鑰來(lái)保證系統(tǒng)的安全性谬泌。
? ? ? ? 實(shí)例配置文件。實(shí)例配置文件是IAM角色的容器逻谦,當(dāng)通過(guò)AWS的管理控制臺(tái)生成IAM角色的時(shí)候掌实,AWS系統(tǒng)會(huì)自動(dòng)為這個(gè)角色生成一個(gè)同樣名稱(chēng)的實(shí)例配置文件,當(dāng)為EC2實(shí)例綁定IAM角色的時(shí)候邦马,其實(shí)顯示的IAM角色列表是IAM角色的實(shí)例配置文件的列表贱鼻。而當(dāng)利用CLI等AWS開(kāi)發(fā)包生成IAM角色的時(shí)候,必須另外生成該IAM角色的實(shí)例配置文件滋将。