2012-05-10 100 views
4

我試圖實現IAM策略,其中用戶只能訪問他也有權訪問的文件夾。我從亞馬遜的文檔驗證碼爲Amazon S3創建IAM策略

允許用戶列出在企業桶

這個例子建立在以前的例子,讓鮑勃主目錄只在他或她的主目錄中的對象。爲了讓Bob能夠列出他的主目錄中的對象,他需要訪問ListBucket。但是,我們希望結果只包含他主目錄中的對象,而不是包含在桶中的所有內容。爲了限制他的訪問,我們使用名爲s3:prefix的策略條件密鑰,其值設置爲home/bob/。這意味着只有帶有前綴home/bob/的對象纔會在ListBucket響應中返回。

{ 
    "Statement":[{ 
    "Effect":"Allow", 
    "Action":"s3:ListBucket", 
    "Resource":"arn:aws:s3:::my_corporate_bucket", 
    "Condition":{ 
     "StringLike":{ 
     "s3:prefix":"home/bob/*" 
    } 
    }] 
} 

這不適合我。當我運行我的代碼時,我可以看到所有的文件夾和子文件夾。我修改後的代碼看起來是這樣的:

{ 
    "Statement":[{ 
    "Effect":"Allow", 
    "Action":"s3:ListBucket", 
    "Resource":"arn:aws:s3:::Test-test", 
    "Condition":{ 
     "StringLike":{ 
     "s3:prefix":"Test/*" 
    } 
    }] 
} 

當我使用附着於上述政策,我得到的所有文件夾,而不只是在「測試」了一個用戶的憑據運行我的C#代碼。 .. 真的很感謝一些幫助!

回答

7

我終於搞定了。儘管我認爲AWS管理控制檯中存在一個錯誤,或者至少它看起來像一個錯誤。問題是我的政策始終是正確的,但當我通過AWS管理控制檯訪問CloudBErry等軟件時,它的行爲會有所不同。我必須修改的一件事是對象和存儲桶的ACL設置。如果AWS控制檯正常工作,也可以在之前完成。反正這是我的政策:

{ 
    "Statement": [ 

    { 
     "Effect": "Allow", 
     "Action": "s3:ListAllMyBuckets", 
     "Resource": "arn:aws:s3:::*", 
     "Condition": {} 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:ListBucket", 
     "s3:ListBucketVersions" 
     ], 
     "Resource": "arn:aws:s3:::pa-test", 
     "Condition": { 
     "StringLike": { 
      "s3:prefix": "test/*" 
     } 
     } 
    }, 
    { 
     "Effect": "Allow", 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::pa-test/test/*", 
     "Condition": {} 
    } 
    ] 
} 

1)問題是,當我訪問管理控制檯通過AWS控制檯此IAM用戶,當我在我的水桶單擊雖然當我通過雲莓登錄,我可以看到我被拒絕訪問我的文件夾。 2)我不得不修改ACL設置爲我的桶和對象(文件夾) 我鬥: 所有者:完全控制 身份驗證的用戶:只讀

對於我的文件夾: 所有者:完全控制

現在的問題是,您無法在AWS控制檯中設置文件夾(對象)的ACl設置。您可以將它們設置爲文件(對象)。例如,如果您右鍵單擊存儲桶中的文件夾(對象),然後單擊屬性,則不會顯示權限選項卡。但是,如果您右鍵單擊存儲桶或文件(稱爲test.html)並單擊屬性,它將顯示一個權限選項卡。 我不確定是否有其他人注意到了這個問題。無論如何,這是我的腳本,現在正在工作。

2

你期望從listBucket得到的結果不會發生那樣的事情。 由於策略只允許您根據存儲桶策略訪問對象的允許和拒絕。 ListBucket將列出所有對象,但您只能訪問前綴文件夾及其內容。

如果你想只列出文件夾,那麼你必須爲喜歡閱讀IAM政策代碼,然後前綴字符串,然後與前綴列表,那麼你將只能得到所需的文件夾。因爲到現在爲止沒有amazon s3提供這樣的選項。

+0

嗨TEJ,請原諒我,如果我錯了,但我對您的解決方案有點不確定。如果您在本網頁 –

+0

向下滾動到例如2我禮貌地問你在三月已經:推廣您的產品時,請小心,請參見相應的常見問題解答(HTTP [我可能會促進產品或網站,我隸屬於這裏?] (如果你的帖子中有很大一部分包含提到你的產品或網站的信息,你可能是出於錯誤的原因_)。另外,請不要使用簽名/標語,請參閱相應的常見問題解答[我可​​以使用簽名或標語?](http://stackoverflow.com/faq#signatures)瞭解詳細信息。您應該繼續提供有用的內容,其餘的將遵循... –

+0

@Steffen歐寶:你可以簡單地舉報他的職位給管理員注意,而不是多次談到自己的使用特徵之一。但不用擔心,我們會從這裏拿走它,並感謝您幫助編輯! – BoltClock