我想為我的用戶添加圖片上傳功能。到目前為止,我已經按照一個簡單的 YouTube 教程創建了一個包含以下內容的新存盤桶Bucket policy:
{
"Version": "2012-10-17",
"Id": "Policy1578265217545",
"Statement": [
{
"Sid": "statement-1",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket/images/*"
}
]
}
以及以下內容CORS policy:
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"POST",
"DELETE",
"HEAD"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": []
}
]
我還創建了一個 IAM 用戶,并為其附加了以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "statement1",
"Effect": "Allow",
"Action": [
"s3:Put*",
"s3:Get*",
"s3:Delete*"
],
"Resource": [
"arn:aws:s3:::my-bucket/*"
]
}
]
}
我獲得了成功用于上傳/洗掉檔案的訪問和秘密密鑰 - 成功。
我有一種強烈的感覺,上述策略目前并不真正安全(例如,我計劃通過只允許從某個域訪問存盤桶來使 CORS 策略更加嚴格)。
我現在的主要問題是 - 我如何確保如果用戶 A 上傳了他的影像,沒有其他用戶(直到被允許)可以訪問它?
uj5u.com熱心網友回復:
我認為如果應用程式的每個用戶在 AWS 中都有一個 IAM 用戶帳戶,這將是可能的。然后,您可以使用相應的 AWS IAM 用戶限制影像。但我相信情況可能并非如此。
更好的是,不是直接在 AWS 上訪問影像,而是通過您的應用程式訪問影像。您可以有一個表來存盤 AWS 上存盤桶中的影像路徑、相應的所有者以及指示影像是否可以公開訪問的標志。
然后當你需要一個特定的影像時,你會向你的應用程式發出請求,它會檢查發出請求的用戶是否是影像的所有者,如果是,應用程式將使用AWS S3 SDK從 AWS下載影像和將其發送給用戶。
這種方法將使 AWS 與您的最終用戶分離,您的應用程式將負責管理誰可以訪問什么。鑒于對 AWS 的每個請求都將通過您的應用程式,因此損害現有 AWS 基礎設施的風險較小。
uj5u.com熱心網友回復:
物件標記和基于屬性的訪問控制可用于對不同物件的條件訪問。
用例:不支持單個 IAM 用戶的應用程式:
- 物件被分配了帶有 id 值的 ownerID 標簽,
- 用戶被分配了一個 uuid 或者他們的個人資料有一個帶有某種 id 值的標簽和
- 用于獲取物件的 API 函式將物件標簽和用戶 ID/標簽進行比較,并僅檢索具有匹配值的物件
用例:支持 AWS IAM 用戶/SSO 用戶的應用程式:
- 物件被分配一個具有適當值(id、部門等)的標簽,
- AWS 用戶被分配了一個具有適當值(id、部門等)的標簽,
- 創建 IAM 角色和訪問控制策略以允許根據標簽值進行條件訪問
https://docs.aws.amazon.com/AmazonS3/latest/userguide/tagging-and-policies.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/397074.html
上一篇:是否可以將單個awss3存盤桶中的某些檔案夾的訪問權限限制為不同的用戶?
下一篇:錯誤AccessDenied:AccessDeniedatRequest.extractError(/var/task/node_modules/aws-sdk/lib/services/s3.js
