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