2012-02-22 37 views

Trả lời

17

Các quyền mà bạn đang nhìn thấy trong AWS Management Console trực tiếp dựa trên ban đầu và tương đối đơn giản Access Control Lists (ACL) sẵn cho S3, trong đó chủ yếu phân biệt ĐỌCVIẾT quyền, xem Specifying a Permission:

  • ĐỌC - Cho phép người được cấp quyền liệt kê các đối tượng trong thùng
  • VIẾT - Cho phép được cấp để tạo, ghi đè và xóa bất kỳ đối tượng trong xô

Những hạn chế này đã được giải quyết bằng cách thêm Bucket Policies (điều khoản áp dụng trên mức xô) và IAM Policies (điều khoản áp dụng trên cấp độ người dùng) và cả ba có thể được sử dụng cùng nhau (có thể trở nên khá phức tạp, như được giải quyết bên dưới), xem Access Control cho toàn bộ hình ảnh.

Trường hợp sử dụng của bạn có thể yêu cầu chính sách nhóm tương ứng mà bạn thêm trực tiếp từ bảng điều khiển S3. Nhấp vào Thêm chính sách nhóm mở Trình biên tập chính sách nhóm , có các liên kết đến một vài mẫu cũng như được đề xuất là AWS Policy Generator, cho phép bạn lắp ráp chính sách giải quyết trường hợp sử dụng của bạn.

Đối với một xô khác khóa xuống, hình thức đơn giản nhất có thể trông như vậy (xin đảm bảo điều chỉnh PrincipalResource yêu cầu của bạn):

{ 
    "Statement": [ 
    { 
     "Action": [ 
     "s3:PutObject" 
     ], 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::<bucket_name>/<key_name>", 
     "Principal": { 
     "AWS": [ 
      "*" 
     ] 
     } 
    } 
    ] 
} 

Tùy thuộc vào trường hợp sử dụng của bạn, bạn có thể dễ dàng soạn các chính sách khá phức tạp bằng cách kết hợp các hành động khác nhau Cho phépTừ chối - điều này rõ ràng có thể mang lại các quyền vô ý, do đó kiểm tra thích hợp là chìa khóa như bình thường; theo đó, hãy chú ý đến các tác động khi sử dụng Using ACLs and Bucket Policies Together hoặc IAM and Bucket Policies Together.

Cuối cùng, bạn cũng có thể muốn xem câu trả lời của mình cho số Problems specifying a single bucket in a simple AWS user policy, giải quyết một sự cố khác thường gặp phải với các chính sách.

5

Bạn có thể đính kèm chính sách không xóa vào nhóm s3 của mình.Ví dụ, nếu bạn không muốn sử dụng IAM này để thực hiện bất kỳ hoạt động xóa bất kỳ xô hoặc bất kỳ đối tượng, bạn có thể đặt một cái gì đó như thế này:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1480692207000", 
      "Effect": "Deny", 
      "Action": [ 
       "s3:DeleteBucket", 
       "s3:DeleteBucketPolicy", 
       "s3:DeleteBucketWebsite", 
       "s3:DeleteObject", 
       "s3:DeleteObjectVersion" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::*" 
      ] 
     } 
    ] 
} 

Ngoài ra, bạn có thể kiểm tra chính sách của bạn với mô phỏng chính sách https://policysim.aws.amazon.com để kiểm tra nếu bạn thiết lập là những gì bạn mong đợi hay không.

Hy vọng điều này sẽ hữu ích!

2

Điều này hoạt động hoàn hảo. Cảm ơn Pung Worathiti Manosroi. kết hợp chính sách được đề cập của anh ấy như sau:

{  

"Statement": [  

    { 
     "Effect": "Allow", 
     "Action": [ 
      "s3:GetObject", 
      "s3:PutObject", 
      "s3:GetObjectAcl", 
      "s3:PutObjectAcl", 
      "s3:ListBucket", 
      "s3:GetBucketAcl", 
      "s3:PutBucketAcl", 
      "s3:GetBucketLocation" 
     ], 
     "Resource": "arn:aws:s3:::mybucketname/*", 
     "Condition": {} 
    }, 
    { 
     "Effect": "Allow", 
     "Action": "s3:ListAllMyBuckets", 
     "Resource": "*", 
     "Condition": {} 
    }, 
    { 
     "Effect": "Deny", 
     "Action": [ 
      "s3:DeleteBucket", 
      "s3:DeleteBucketPolicy", 
      "s3:DeleteBucketWebsite", 
      "s3:DeleteObject", 
      "s3:DeleteObjectVersion" 
     ], 
     "Resource": "arn:aws:s3:::mybucketname/*",  

     "Condition": {}  

    } 
] 
}  
Các vấn đề liên quan