S3存儲桶策略(S3 Bucket Policies)

關注公衆號:AWS愛好者(iloveaws)
文 | 沉默惡魔(禁止轉載,轉載請先經過作者同意)
網站:www.iloveaws.cn

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。

[image:3248E512-F776-45E8-B8FC-7C2C94F780F7-26094-0000F01F16AA72C8/08-S3存儲桶策略(S3 Bucket Policies).003.jpeg]

我們在演示一個網站的案例,就是這個網站,AWS官方提供的AWS月成本計算器,我在工作中經常會使用這個網站,做一些AWS資源月使用成本的估算。

月成本計算器網站也是運行在S3中,我們同樣使用curl命令來驗證一下:

curl -I  https://calculator.s3.amazonaws.com/index.html

同樣可以看到這個網站也是託管在amazon s3上。

當前很多組織都在使用S3來託管網站、網頁應用以及音、視頻文件等等,因爲它配置起來非常的簡單。

[image:810E3A50-B92D-40F8-AA86-842D39E6E340-26094-0000F0230F067BFA/08-S3存儲桶策略(S3 Bucket Policies).004.jpeg]

配置對象允許所有人訪問

下面我將演示上傳一個文本文件到S3存儲桶,並提供給所有人訪問。

來到S3控制檯,我們開始創建一個S3存儲桶,名稱爲iloveawscn,區域就是目前的亞太區域就可以,然後下一步,完成存儲桶的創建。

創建完成後,可以看到存儲桶的訪問屬性是“存儲桶和對象不是公有的”,也就是說存儲桶和對象沒有任何公有訪問權限。

我們現在進入存儲桶,然後上傳一個txt文件,上傳一個test.txt文件,不做任何配置,直接上傳。

[image:B4878AD4-6C0A-4B29-A1CE-8967DFB13E97-26094-0000F026514D41CB/08-S3存儲桶策略(S3 Bucket Policies).005.jpeg]

上傳完成後,我們選擇test.txt文件,在右側可以看到對象的url,可以使用這個url打開或者下載這個文件。
我們複製下這個url , https://iloveawscn.s3-ap-northeast-1.amazonaws.com/test.txt

然後進入到console,curl一下這個url,看看是什麼結果。不出所料,結果顯示是拒絕訪問的。因爲現在存儲桶缺省配置是阻止全部公共訪問權限,所以當我們通過curl命令訪問對象時就會被拒絕。

[image:EE976C2F-A5BB-462D-B39E-353944889982-26094-0000F02C63BBE06F/08-S3存儲桶策略(S3 Bucket Policies).006.jpeg]

那如果您的應用場景是和前面的考試指南文件PDF一樣,需要提供給所有用戶訪問或下載這個文件,最簡單的方法就是把這個txt文件設置爲公開,但在將這個對象設置爲公開前,要先將這個存儲桶的阻止公共訪問權限關閉。現在還操作下:

進入這個存儲桶,選擇權限,然後編輯,將組織全部/公共訪問權限的複選框去掉,然後保存。

然後點擊test.txt文件,將其設置爲公開。

好的,現在test.txt文件就成功設置爲公開了,我們現在測試下,同樣使用curl命令,我們先複製下這個文件的url,然後回到console,執行,可以看到我們已經可以成功訪問這個txt文件,並獲取到了文件的內容,說明我們這個txt文件已經成功設置成了公開,提供給所有人訪問和下載。

開放允許特定IP段的存儲桶策略

然而,還有一些應用場景,比如我現在只希望在我單位的網絡情況下訪問到存儲桶中的文件,除此之外的網絡禁止訪問,也就是說,只開放允許特定的IP段訪問存儲桶對象,不在指定的IP段都希望是禁止訪問的。要達成這個需求,就需要使用存儲桶策略對允許訪問的的IP以及相關配置項進行配置。

那我們現在就來配置一下吧:

[image:9E65BE9F-3F62-4995-AC9E-7E59A4E61165-26094-0000F02FFF93C7B3/08-S3存儲桶策略(S3 Bucket Policies).007.jpeg]

我們現在進入到存儲桶策略配置項,進入這個存儲桶,選擇權限-存儲桶策略,現在策略是空的,沒有內容。在存儲桶策略中,可以對這個特定的存儲桶進行各類訪問控制配置。

那麼接下來我們就要配置一個基於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,將拒絕訪問這個存儲桶。

我們測試下實際情況是不是這樣的:

[image:40A2DA93-D881-4B90-AC97-21ADD7A0D627-26094-0000F03372F55D39/08-S3存儲桶策略(S3 Bucket Policies).008.jpeg]

同樣,複製下test.txt的url,進入到console,curl一下看返回結果,可以看到,可以成功返回文件內容,因爲存儲桶策略中目前配置的ip就是我現在的上網ip,所以我現在是可以訪問test.txt的。

那接下來,我們將存儲桶策略中的ip地址隨便修改下,將它修改爲和我現在的上網ip地址不同即可,然後,理論上當我在訪問這個存儲桶文件時就會由剛剛的允許訪問變成禁止訪問,這樣才能說明剛加的限制ip訪問的存儲桶策略是生效的,那我們現在就測試下吧:

進入到我們創建的存儲桶,然後選擇存儲桶策略,將裏面的ip隨便改一個,然後保存。

然後我們進入到console,再次執行下curl這個txt文件的url,發現已經是禁止訪問了。說明我們的存儲桶策略已經生效了,只有策略中指定的ip纔可以訪問存儲桶中的對象。

好的,以上我們演示了一個存儲桶策略的簡單用例,希望能夠通過這個簡單的演示,能夠讓大家對於存儲桶策略有個初步的認識,實際上,還有很多不同的存儲桶策略,用來幫助我們達成的需求,我們之後的課程將進行討論。

[image:B694B37C-4F2F-4DE4-9F29-DA73BD47B8B3-26094-0000F038F4F23E16/08-S3存儲桶策略(S3 Bucket Policies).009.jpeg]

我們今天的課程就到這裏,感謝大家的觀看,我們下一課程再見。

希望此係列教程能爲您通過 AWS解決方案架構師認證 Professional 認證考試帶來幫助,如您有任何疑問,請聯繫我們:

關注公衆號:AWS愛好者(iloveaws)
文 | 沉默惡魔(禁止轉載,轉載請先經過作者同意)
網站:www.iloveaws.cn
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章