Amazon-Web-Services

IAM 使用者策略到 RW 到特定文件夾

  • January 11, 2019

我正在嘗試使用 CloudBerry Drive 工具將 S3 儲存桶附加為我的網路驅動器。我有一個儲存桶和其中的 2 個文件夾,假設儲存桶名稱為 environment,2 個文件夾為 dev 和 prod。我有 3 組使用者會使用它——管理員、開發人員和產品。管理員 - 必須對這兩個文件夾都具有 R/W 權限。Dev - 應僅對 dev 文件夾具有寫入權限 Prod - 應具有對 dev 文件夾的讀取權限和對 prod 文件夾的寫入權限。

但是我對 IAM 權限感到困惑。管理員可以正常使用 S3 完全訪問權限。但其他 2 個帳戶無法正常工作。

開發

{
"Version": "2012-10-17",
"Statement": [
   {
       "Sid": "VisualEditor0",
       "Effect": "Allow",
       "Action": [
           "s3:PutObject",
           "s3:DeleteObjectVersion",
           "s3:RestoreObject",
           "s3:PutObjectVersionTagging",
           "s3:PutObjectTagging",
           "s3:DeleteObject"
       ],
       "Resource": "arn:aws:s3:::environment/dev/*"
   }
 ]
}

有了這個,我應該能夠 R/W 到 dev 文件夾,這是我無法做到的。使用 CloudBerry Drive 我可以複製粘貼文件,但不能上傳到 S3。此外,此處列出了 S3 中的文件(這是必需的),但無法訪問相同的文件(附加錯誤)。

產品

{
"Version": "2012-10-17",
"Statement": [
   {
       "Sid": "VisualEditor0",
       "Effect": "Allow",
       "Action": [
           "s3:DeleteObjectTagging",
           "s3:DeleteObjectVersion",
           "s3:GetObjectVersionTagging",
           "s3:ReplicateTags",
           "s3:RestoreObject",
           "s3:PutObjectVersionTagging",
           "s3:DeleteObjectVersionTagging",
           "s3:ListMultipartUploadParts",
           "s3:ReplicateObject",
           "s3:GetObjectVersionTorrent",
           "s3:PutObject",
           "s3:GetObjectAcl",
           "s3:GetObject",
           "s3:ObjectOwnerOverrideToBucketOwner",
           "s3:GetObjectTorrent",
           "s3:AbortMultipartUpload",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectTagging",
           "s3:PutObjectTagging",
           "s3:GetObjectVersionForReplication",
           "s3:DeleteObject",
           "s3:ReplicateDelete",
           "s3:GetObjectVersion"
       ],
       "Resource": "arn:aws:s3:::environment/Prod"
   }
 ]
}

有了這個,我應該能夠 R/W 到 prod 文件夾,這是我無法做到的。使用 CloudBerry Drive 我可以複製粘貼文件,但不能上傳到 S3。

{
"Version": "2012-10-17",
"Statement": [
   {
       "Sid": "VisualEditor0",
       "Effect": "Allow",
       "Action": [
           "s3:GetObjectVersionTorrent",
           "s3:GetObjectAcl",
           "s3:GetObject",
           "s3:GetObjectTorrent",
           "s3:GetObjectVersionTagging",
           "s3:GetObjectVersionAcl",
           "s3:GetObjectTagging",
           "s3:GetObjectVersionForReplication",
           "s3:GetObjectVersion",
           "s3:ListMultipartUploadParts"
       ],
       "Resource": [
           "arn:aws:s3:::environment"
       ],
       "Condition": {
           "StringLike": {
               "s3:prefix": [
                   "dev/*"
               ]
           }
       }
   }
 ]
}

S3 中的文件在此處列出(這是必需的),但無法訪問相同的文件(附加錯誤)。

希望我清楚我的要求: 1. dev 使用者僅對 dev 文件夾具有 R/W 訪​​問權限 2. prod 使用者對 prod 文件夾具有 R/W 訪​​問權限和對 dev 文件夾的 R 訪問權限 3. 所有這些都是使用 CloudBerry Drive 完成的對於 S3。

注意:我搜尋了很多並嘗試了幾乎所有內容,包括一些顯示如何為特定使用者文件夾提供寫入權限的策略。 在此處輸入圖像描述

很抱歉寫了一個延遲的答案:但在我的腳本中,以這種方式更改條件:

"Condition":{"StringLike":{"s3:prefix":["home/David/*"]}}

感謝 ceejayoz 指出這個錯誤。

引用自:https://serverfault.com/questions/897218