2014-10-29 25 views
8

Tôi đã thiết lập vai trò chưa được xác thực trong nhóm Nhận dạng cá nhân của Amazon. Mục tiêu của tôi là người dùng khách của ứng dụng trên điện thoại di động của tôi có thể tải lên nhật ký gỡ lỗi (tệp văn bản nhỏ) vào thùng S3 của tôi để tôi có thể khắc phục sự cố. Tôi nhận thấy tôi sẽ nhận được "Truy cập bị từ chối" từ S3 nếu tôi không sửa đổi quyền xô S3 của tôi. Nếu tôi thêm cho phép "Mọi người" có đặc quyền "Tải lên/Xóa", tệp tải lên đã thành công. Mối quan tâm của tôi là một người nào đó sau đó có thể tải lên các tệp lớn vào nhóm của tôi và gây ra sự cố bảo mật. Cấu hình đề xuất cho nhu cầu của tôi ở trên là gì? Tôi là người mới đến S3 và Cognito.quyền của Amazon S3 bucket đối với người dùng vai trò cognito chưa được xác thực

Tôi đang sử dụng Amazon AWS SDK cho iOS nhưng tôi cho rằng câu hỏi này là nền tảng trung lập.

Edit: chính sách của tôi là như sau:

{ 
    "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>/*"] 
    } 
    ] 
} 

Trả lời

3

Bạn không cần phải sửa đổi cho phép xô S3, mà đúng hơn là vai trò IAM gắn liền với hồ bơi danh tính của bạn. Hãy thử các cách sau:

  1. Truy cập IAM console.
  2. Tìm vai trò được liên kết với nhóm nhận dạng của bạn.
  3. Đính kèm một chính sách tương tự như sau để vai trò của bạn: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": ["arn:aws:s3:::MYBUCKET/*"] } ] }
  4. Thay MYBUCKET với tên xô bạn
  5. Tiếp cận xô của bạn như bình thường từ ứng dụng của bạn sử dụng iOS SDK và Cognito

Bạn có thể muốn xem xét việc hạn chế thêm quyền, bao gồm ${cognito-identity.amazonaws.com:sub} để phân vùng người dùng của bạn, nhưng chính sách ở trên sẽ giúp bạn bắt đầu.

+0

{ "Version": "2012/10/17", "Tuyên bố": [ { "Hiệu ứng": "Cho phép", "Hành động": "iam: GetUser", "Tài nguyên": "*" }, { "Hiệu quả": "Cho phép", "Action": [ "s3: ListAllMyBuckets" ], "Resource": "*" }, { "Hiệu quả": "Cho phép", "Action": [ "s3: CreateBucket", "s3: DeleteBucket", "s3: DeleteObject", "s3: GetBucketLocation", "s3: GetObject", "s3: ListBucket", "s3: PutObject" ], "Tài nguyên": ["arn: aws: s3 ::: nhập-to-ec2- *", "arn: aws: s3 ::: /*"] } ] } –

+0

Ở trên là chính sách của tôi nhưng việc tải lên tệp vẫn không thành công. –

+0

Nếu bạn đang sử dụng AWSCognitoCredentialsProvider, nó lưu trữ thông tin đăng nhập được sử dụng. Bạn có thể buộc làm mới để đảm bảo thông tin đăng nhập của bạn phản ánh chính sách mới. Nếu bạn vẫn gặp sự cố, vui lòng bao gồm mã cũng như lỗi cụ thể mà bạn đang nhận để chúng tôi có thể giúp chẩn đoán sự cố tốt hơn. –

0

Câu trả lời ở trên chưa hoàn thành kể từ năm 2015, bạn cần phải cho phép BOTH vai trò VÀ chính sách nhóm trong S3 để cho phép Vai trò đó ghi vào nhóm. Sử dụng s3: PutObject trong cả hai trường hợp. Bàn điều khiển có các trình thuật sĩ cho cả hai trường hợp

+0

Với tư cách là năm 2017, tôi không phải thay đổi chính sách xô. Việc thiết lập quyền S3 thông qua vai trò IAM là đủ. –

+0

@VolkerRose AWS đã thay đổi logic chính sách xô S3 của họ sau khi hack Verizon. Bạn sẽ nhận được một thông báo về điều này. Vâng bạn đã đúng. – einarc

1

Như @einarc nói (không thể nhận xét), để làm cho nó hoạt động, tôi phải chỉnh sửa vai trò và Chính sách nhóm.Đây là đủ tốt để thử nghiệm:

Bucket chính sách:

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

Authenticated vai trò của:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::*" 
      ] 
     } 
    ] 
} 
Các vấn đề liên quan