S3存储桶策略(S3 Bucket Policies)
S3存儲桶策略(S3 Bucket Policies)
【 Domain 1的組織復(fù)雜性設(shè)計(jì)(Design for Organizational Complexity)】——-S3存儲桶策略(S3 Bucket Policies)
Hello大家好,歡迎回來,我們今天的課程內(nèi)容是S3存儲桶策略。
基于資源的策略和基于用戶策略
Amazon S3 提供的訪問策略選項(xiàng)大致可分為 基于資源的策略和用戶策略兩類。附加到資源 (如存儲桶和對象) 的訪問策略稱為基于資源的策略。例如,存儲桶策略和訪問控制列表 (ACL) 就是基于資源的策略。您也可以將訪問策略附加到您賬戶中的用戶。這些策略稱為用戶策略。您可以選擇使用基于資源的策略、用戶策略或這些策略的某種組合來管理您的 Amazon S3 資源權(quán)限。
我們今天課程的內(nèi)容是基于資源策略的存儲桶策略,那什么情況下需要使用存儲桶策略呢?
通常來講,在使用AWS時(shí),一個(gè)和權(quán)限、策略相關(guān)的服務(wù)是IAM,它被用于在AWS賬戶下分配用戶、組、角色使用資源的權(quán)限,您可以使用IAM為用戶分配訪問資源權(quán)限,然而,用戶策略是用來管理您賬戶中用戶的權(quán)限的。對于其他 AWS 賬戶或其他賬戶中用戶的跨賬戶權(quán)限,則必須使用存儲桶策略,而且,當(dāng)您想基于存儲桶來規(guī)劃訪問策略時(shí)就需要使用存儲桶策略,存儲桶策略是直接附加到存儲桶上的。
下面我將會做一個(gè)演示,幫助大家了解存儲桶策略的作用。
很多案例都在使用S3
現(xiàn)在大家看到的是AWS官方SAP-C01考試指南,在我們前面的課程出現(xiàn)過,這個(gè)PDF文件實(shí)際上是存儲在AWS 上的S3存儲桶中,我們可以使用curl命令驗(yàn)證下。我們復(fù)制一下URL,打開console,來驗(yàn)證下
curl -I https://d1.awsstatic.com/training-and-certification/docs-sa-pro/AWS_Certified_Solutions_Architect_Professional-Exam_Guide_EN_1.2.pdf看下返回的信息,server 是amazons3 ,也就是說,aws將考試指南pdf放到了s3存儲桶中,提供給所有人進(jìn)行訪問,任何人通過這個(gè)url,都可以訪問并下載考試指南PDF。
我們在演示一個(gè)網(wǎng)站的案例,就是這個(gè)網(wǎng)站,AWS官方提供的AWS月成本計(jì)算器,我在工作中經(jīng)常會使用這個(gè)網(wǎng)站,做一些AWS資源月使用成本的估算。
月成本計(jì)算器網(wǎng)站也是運(yùn)行在S3中,我們同樣使用curl命令來驗(yàn)證一下:
curl -I https://calculator.s3.amazonaws.com/index.html同樣可以看到這個(gè)網(wǎng)站也是托管在amazon s3上。
當(dāng)前很多組織都在使用S3來托管網(wǎng)站、網(wǎng)頁應(yīng)用以及音、視頻文件等等,因?yàn)樗渲闷饋矸浅5暮唵巍?/p>
配置對象允許所有人訪問
下面我將演示上傳一個(gè)文本文件到S3存儲桶,并提供給所有人訪問。
來到S3控制臺,我們開始創(chuàng)建一個(gè)S3存儲桶,名稱為iloveawscn,區(qū)域就是目前的亞太區(qū)域就可以,然后下一步,完成存儲桶的創(chuàng)建。
創(chuàng)建完成后,可以看到存儲桶的訪問屬性是“存儲桶和對象不是公有的”,也就是說存儲桶和對象沒有任何公有訪問權(quán)限。
我們現(xiàn)在進(jìn)入存儲桶,然后上傳一個(gè)txt文件,上傳一個(gè)test.txt文件,不做任何配置,直接上傳。
上傳完成后,我們選擇test.txt文件,在右側(cè)可以看到對象的url,可以使用這個(gè)url打開或者下載這個(gè)文件。
我們復(fù)制下這個(gè)url , https://iloveawscn.s3-ap-northeast-1.amazonaws.com/test.txt
然后進(jìn)入到console,curl一下這個(gè)url,看看是什么結(jié)果。不出所料,結(jié)果顯示是拒絕訪問的。因?yàn)楝F(xiàn)在存儲桶缺省配置是阻止全部公共訪問權(quán)限,所以當(dāng)我們通過curl命令訪問對象時(shí)就會被拒絕。
那如果您的應(yīng)用場景是和前面的考試指南文件PDF一樣,需要提供給所有用戶訪問或下載這個(gè)文件,最簡單的方法就是把這個(gè)txt文件設(shè)置為公開,但在將這個(gè)對象設(shè)置為公開前,要先將這個(gè)存儲桶的阻止公共訪問權(quán)限關(guān)閉。現(xiàn)在還操作下:
進(jìn)入這個(gè)存儲桶,選擇權(quán)限,然后編輯,將組織全部/公共訪問權(quán)限的復(fù)選框去掉,然后保存。
然后點(diǎn)擊test.txt文件,將其設(shè)置為公開。
好的,現(xiàn)在test.txt文件就成功設(shè)置為公開了,我們現(xiàn)在測試下,同樣使用curl命令,我們先復(fù)制下這個(gè)文件的url,然后回到console,執(zhí)行,可以看到我們已經(jīng)可以成功訪問這個(gè)txt文件,并獲取到了文件的內(nèi)容,說明我們這個(gè)txt文件已經(jīng)成功設(shè)置成了公開,提供給所有人訪問和下載。
開放允許特定IP段的存儲桶策略
然而,還有一些應(yīng)用場景,比如我現(xiàn)在只希望在我單位的網(wǎng)絡(luò)情況下訪問到存儲桶中的文件,除此之外的網(wǎng)絡(luò)禁止訪問,也就是說,只開放允許特定的IP段訪問存儲桶對象,不在指定的IP段都希望是禁止訪問的。要達(dá)成這個(gè)需求,就需要使用存儲桶策略對允許訪問的的IP以及相關(guān)配置項(xiàng)進(jìn)行配置。
那我們現(xiàn)在就來配置一下吧:
我們現(xiàn)在進(jìn)入到存儲桶策略配置項(xiàng),進(jìn)入這個(gè)存儲桶,選擇權(quán)限-存儲桶策略,現(xiàn)在策略是空的,沒有內(nèi)容。在存儲桶策略中,可以對這個(gè)特定的存儲桶進(jìn)行各類訪問控制配置。
那么接下來我們就要配置一個(gè)基于ip地址條件的存儲桶策略。我已將策略準(zhǔn)備好,現(xiàn)在將策略直接復(fù)制粘貼到這里。
我們看下這個(gè)策略的內(nèi)容,Principal是*,代表所有;action配置的是所有s3動(dòng)作,resource部分我們將這個(gè)存儲桶的arn復(fù)制到這里。然后是ipaddress,需要將允許訪問這個(gè)存儲桶的ip替換到這里,我快速查看下我目前的公網(wǎng)ip :114.248.231.140,然后替換掉策略中的ip。注意我這里現(xiàn)在配置了我目前公網(wǎng)地址,是一個(gè)單獨(dú)的ip地址,ip地址后面是/32,當(dāng)然也可以配置成網(wǎng)段。DENY對應(yīng)notipaddress,也就是只允許這個(gè)ip訪問這個(gè)S3存儲桶。
下面就是策略的內(nèi)容,大家可以復(fù)制修改后使用。
{"Version": "2012-10-17","Id": "S3PolicyId1","Statement": [{"Sid": "statement1","Effect": "Deny","Principal": "*","Action":["s3:*"] ,"Resource": "arn:aws:s3:::examplebucket/*","Condition" : {"NotIpAddress" : {"aws:SourceIp": "192.168.143.188/32" } } } ] }目前存儲桶策略就配置完了,策略已經(jīng)生效,后面在當(dāng)有向這個(gè)存儲桶對象發(fā)出訪問請求時(shí), 存儲桶策略將驗(yàn)證訪問的ip是否為策略中配置的這個(gè)ip,如果是,將會允許對于這個(gè)s3存儲桶的所有動(dòng)作,如果不是這個(gè)ip,將拒絕訪問這個(gè)存儲桶。
我們測試下實(shí)際情況是不是這樣的:
同樣,復(fù)制下test.txt的url,進(jìn)入到console,curl一下看返回結(jié)果,可以看到,可以成功返回文件內(nèi)容,因?yàn)榇鎯ν安呗灾心壳芭渲玫膇p就是我現(xiàn)在的上網(wǎng)ip,所以我現(xiàn)在是可以訪問test.txt的。
那接下來,我們將存儲桶策略中的ip地址隨便修改下,將它修改為和我現(xiàn)在的上網(wǎng)ip地址不同即可,然后,理論上當(dāng)我在訪問這個(gè)存儲桶文件時(shí)就會由剛剛的允許訪問變成禁止訪問,這樣才能說明剛加的限制ip訪問的存儲桶策略是生效的,那我們現(xiàn)在就測試下吧:
進(jìn)入到我們創(chuàng)建的存儲桶,然后選擇存儲桶策略,將里面的ip隨便改一個(gè),然后保存。
然后我們進(jìn)入到console,再次執(zhí)行下curl這個(gè)txt文件的url,發(fā)現(xiàn)已經(jīng)是禁止訪問了。說明我們的存儲桶策略已經(jīng)生效了,只有策略中指定的ip才可以訪問存儲桶中的對象。
好的,以上我們演示了一個(gè)存儲桶策略的簡單用例,希望能夠通過這個(gè)簡單的演示,能夠讓大家對于存儲桶策略有個(gè)初步的認(rèn)識,實(shí)際上,還有很多不同的存儲桶策略,用來幫助我們達(dá)成的需求,我們之后的課程將進(jìn)行討論。
我們今天的課程就到這里,感謝大家的觀看,我們下一課程再見。
希望此系列教程能為您通過 AWS解決方案架構(gòu)師認(rèn)證 Professional 認(rèn)證考試帶來幫助,如您有任何疑問,請聯(lián)系我們:
關(guān)注公眾號:AWS愛好者(iloveaws) 文 | 沉默惡魔(禁止轉(zhuǎn)載,轉(zhuǎn)載請先經(jīng)過作者同意) 網(wǎng)站:www.iloveaws.cn總結(jié)
以上是生活随笔為你收集整理的S3存储桶策略(S3 Bucket Policies)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云服务器上部署仿牛客网项目
- 下一篇: html 单元格拆分及合并,表格合并和拆