2014-10-29 80 views
8

我在Amazon Cognito標識池下設置了未經認證的角色。我的目標是,我的移動應用程序的訪客用戶將能夠將調試日誌(小文本文件)上傳到我的S3存儲桶,以便解決問題。我注意到如果我不修改我的S3存儲桶權限,我會從S3中獲得「拒絕訪問」。如果我添加允許「每個人」具有「上傳/刪除」權限,則文件上傳成功。我擔心的是有人能夠將大文件上傳到我的存儲桶並導致安全問題。上面我的需求是什麼建議配置?我是S3和Cognito的新手。未授權認證角色的Amazon S3存儲桶權限用戶

我正在使用適用於iOS的Amazon AWS SDK,但我想這個問題是平臺中立的。

編輯: 我的原則如下:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "iam:GetUser", 
     "Resource": "*" 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:ListAllMyBuckets" 
     ], 
     "Resource": "*" 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:CreateBucket", 
     "s3:DeleteBucket", 
     "s3:DeleteObject", 
     "s3:GetBucketLocation", 
     "s3:GetObject", 
     "s3:ListBucket", 
     "s3:PutObject" 
     ], 
     "Resource": ["arn:aws:s3:::import-to-ec2-*", "arn:aws:s3:::<my bucket name>/*"] 
    } 
    ] 
} 

回答

3

你並不需要修改S3存儲權限,而是以您的身份池關聯的IAM角色。請嘗試以下操作:

  1. 訪問IAM console
  2. 找到與您的身份池關聯的角色。
  3. 安裝類似於以下您的角色的政策: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::MYBUCKET/*"] } ] }
  4. 與你斗的名字
  5. 訪問你的水桶從您的應用程序使用iOS SDK和Cognito

您可以在正常更換MYBUCKET想要進一步考慮限制權限,包括${cognito-identity.amazonaws.com:sub}來分區您的用戶,但上述政策將幫助您入門。

+0

{ 「版本」: 「2012年10月17日」, 「聲明」: [ { 「效果」: 「允許」, 「行動」: 「IAM:的getUser」, 「資源」: 「*」 },{ 「效果」: 「允許」, 「操作」:[ 「S3:ListAllMyBuckets」 ], 「資源」: 「*」 }, { 「效果」: 「允許」, 「操作」: [ 「S3:CreateBucket」, 「S3:DeleteBucket」, 「S3:DeleteObject的」, 「S3:GetBucketLocation」, 「S3:GetObject的」, 「S3:ListBucket」, 「S3:PutObject」 ], 「Resource」:[「arn:aws:s3 ::: import-to-ec2- *」,「arn:aws:s3 ::: /*」] } ] } – 2014-10-31 03:58:56

+0

以上是我的政策,但文件上傳仍然失敗。 – 2014-10-31 04:01:44

+0

如果您使用AWSCognitoCredentialsProvider,它將緩存使用的憑證。您可以強制刷新以確保您的憑據反映新政策。如果您仍然遇到問題,請包括代碼以及您收到的特定錯誤,以便我們可以更好地幫助診斷問題。 – 2014-10-31 15:47:59

0

上面的答案在2015年不完整,您需要同時授權角色和S3中的存儲桶策略以授權該角色寫入存儲桶。在兩種情況下都使用s3:PutObject。控制檯有這兩種情況下的嚮導

+0

作爲2017年的狀態,我根本不需要改變桶策略。通過IAM角色設置S3權限就足夠了。 – 2017-10-13 06:31:42

+0

@VolkerRose在Verizon破解後,AWS更改了他們的S3存儲桶策略邏輯。您應該收到關於此的通知。你是對的。 – einarc 2017-10-18 01:10:33

1

正如@einarc說的(現在還不能評論),爲了使它工作,我不得不編輯角色和桶策略。這是不夠好,來進行測試:

桶政策:

{ 
    "Id": "Policy1500742753994", 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "Stmt1500742752148", 
     "Action": "s3:*", 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::admin1.user1", 
     "Principal": "*" 
    } 
    ] 
} 

通過身份驗證的作用的政策:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::*" 
      ] 
     } 
    ] 
}