我在 S3 上為我的私人檔案創建了一個獨特的存盤桶。此存盤桶配置為阻止所有公共訪問。我的應用程式被配置為將檔案上傳到這個沒有公共讀取訪問權限的 s3 存盤桶,我可以確認物件的權限反映了這是有效的(即沒有向公眾授予上傳的物件的權限)。
盡管采取了所有這些措施來限制公眾訪問這些檔案,但這些檔案仍然對公眾可見。我認為我的 IAM 設定可能會覆寫 ACL 設定以及存盤桶設定。我不確定要更改哪個 IAM 設定,或者更改是否可能對我的應用程式的其他部分產生負面影響,因此如果可能,我想使用存盤桶策略限制對這個“私有存盤桶”的訪問。
這是我開始使用存盤桶策略的內容:
{
"Version": "2012-10-17",
"Id": "My Special Bucket Policy",
"Statement": [
{
"Sid": "DenyAccesstoAllFiles",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_private_bucket/*"
}
]
}
不幸的是,即使使用簽名的 url,這也會阻止訪問這個“私有存盤桶”中的物件。
請注意,我已經能夠成功生成簽名網址。就像我配置它們一樣,它們會在 60 秒后過期。
謝謝你的幫助!
編輯:我所有的檔案都是這樣上傳的:

uj5u.com熱心網友回復:
默認情況下,所有存盤桶和物件都是私有的。所以通常你不需要任何關于它們的政策。在您的情況下,任何訪問都被拒絕,因為Deny總是勝過任何Allow:
請記住,任何這些策略中的明確拒絕都會覆寫允許。
因此,由于您的Deny.
通常你所做的是擺脫你的策略,并依賴于桶和物件是私有的默認行為。在這種情況下,預簽名的 url 將起作用。
uj5u.com熱心網友回復:
有兩點需要注意:
- 在 AWS 中以默認設定創建的存盤桶始終是私有的,并且無法通過其鏈接訪問其物件。我認為您混淆了一些鏈接,使您相信您的物件仍然可見:)
- 您不需要有明確的策略來拒絕對 S3 物件的所有訪問。
我建議您洗掉已附加到存盤桶的策略,然后再次測驗指向物件的公共鏈接是否有效(如果您的存盤桶是通過默認設定創建的,則不應該)。一旦該部分明確,您的預簽名 URL 就應該可以使用了!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/387619.html
