Amazon-Web-Services
向我的儲存桶中的所有對象授予對另一個 AWS 賬戶中角色的訪問權限
因此,我想授予賬戶 A 中存在的角色對賬戶 B 擁有的儲存桶中的項目的 get-object 權限。
我閱讀了 AWS 文件的範例策略並創建了這樣的儲存桶策略:
{ "Version": "2012-10-17", "Id": "foo2", "Statement": [ { "Sid": "Stmt199999999999", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789:role/asset_download_role" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-bucket-name/*" } ] }
對我來說,英文是這樣寫的:“從帳戶 123456789 中為角色asset_download_role 授予對儲存桶 my-bucket-name 中的任何和所有對象的 GetObject 權限”
儲存桶中的測試對象 foo.jpg 沒有設置超出標準“對象所有者訪問權限”的附加 acl 或權限
現在,當我擔任角色並嘗試獲取對象時
aws s3api get-object --profile download_asset --region eu-west-2 --bucket my-bucket-name --key foo.jpg file.jpg
(或使用 boto3,或使用這些憑據對 url 進行簽名並檢索該 url)
我收到“呼叫 GetObject 操作時發生錯誤 (AccessDenied):訪問被拒絕”
將配置文件更改為儲存桶所有者使用者憑據,我可以下載該文件。
我究竟做錯了什麼?
$$ note that while I have access to both Account A and Account B in this test set up, in real life Account B will belong to a third party to whom I want to provide a working policy that they can use to open up what they require $$
解決方案是,當向第三方帳戶擁有的角色授予權限時,該角色需要添加一個策略來授予對儲存桶的訪問權限 - 權限需要在兩端進行定義和匹配