簡體   English   中英

AWS S3存儲桶策略-僅在前綴內允許GetObject

[英]AWS S3 Bucket Policy - Allow GetObject only within a prefix

我正在嘗試在存儲桶上放置一條策略,以允許對對象的公共“ GetObject”訪問,但僅允許在特定前綴內的對象訪問。 像這樣:

    {
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::mybucket/publicstuff/*"
    }

問題是,AWS警告我,這會使整個存儲桶公開。 可以肯定的是, 如果我嘗試從/ mybucket / anywhereelse /獲取對象,則S3免費提供它。 因此,“ mybucket”之后的所有內容都將被忽略。

有什么方法可以構建適用於存儲桶中特定前綴的存儲桶策略? 我嘗試了一個策略條件,但發現在使用s3:GetObject操作時無法使用s3:prefix。

盡管您看到指示,表明您的存儲桶是可公開訪問的,這完全沒問題。 您應該注意,該指示器表明提供了對該存儲桶(其中的某些內容)的公共訪問。
因此,要檢查是否沒有問題,您可以只測試可公開訪問的文件夾之外的文件,然后將其與根據您的政策應可公開訪問的文件進行比較。
您可以在下圖中看到我創建了一個存儲桶的子文件夾(忽略),可供公眾使用:

在此處輸入圖片說明

這是存儲桶的樹狀視圖:

├──目錄
│├──忽略
││└──i.txt
└──ni.txt

根據我的政策,i.txt可公開訪問,但ni.txt不可訪問,並且指示器顯示公共訪問權限。

感謝@michael和@mok,我找到了答案:我是個白痴。 我用來驗證標准行為的其他對象碰巧具有對它們的單獨權限,以允許getObject,而且我不記得將它們放在那里或沒有注意到它們在那兒。 當我刪除這些權限時,看來我仍然可以訪問這些對象,但實際上是在拾取緩存的副本。 在刪除這些虛假權限並使用完全不同的瀏覽器時,我驗證了我最初發布的策略是正確的。 抱歉,添麻煩了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM