我有一個名為“uploads”的 S3 存盤桶,其結構如下:
uploads|
|_products
|_users
|_categories
|_...
我想限制用戶洗掉檔案夾(產品、用戶等),但他們可以洗掉這些檔案夾中的物件。我的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectTagging",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:GetObjectTagging"
],
"Resource": [
"arn:aws:s3:::uploads",
"arn:aws:s3:::uploads/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::uploads/banners/*",
"arn:aws:s3:::uploads/brands/*",
"arn:aws:s3:::uploads/categories/*",
"arn:aws:s3:::uploads/products/*",
"arn:aws:s3:::uploads/users/*"
]
}
]
}
但是我測驗并且用戶能夠洗掉檔案夾,我哪里出錯了?
uj5u.com熱心網友回復:
Amazon S3 中不存在檔案夾。
如果創建了一個物件(例如banners/sale.jpg),那么該banners目錄將神奇地出現。然后,如果該物件被洗掉,那么該目錄將神奇地消失。這是因為 Amazon S3 中不存在目錄。
因此,您不必擔心人們會洗掉目錄,因為在該路徑中創建物件時它會自動重新出現。
如果在 S3 管理控制臺中使用Create Folder按鈕,則會創建一個與目錄同名的零長度物件。這會強制目錄“出現”(即使它不存在)。
根據您的描述,聽起來用戶可以洗掉零長度物件,因為它與Resource您指定的路徑相同。如果是這樣,那么就沒有辦法僅通過策略來防止這種情況發生。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/439830.html
