Cấp quyền truy cập đọc vai trò EC2 IAM vào nhóm S3


10

Tôi có một ứng dụng AWS Elastic Beanstalk Rails mà tôi đang định cấu hình thông qua tập lệnh cấu hình để lấy một số tệp từ nhóm S3. Khi tôi khởi động ứng dụng, tôi tiếp tục nhận được lỗi sau trong nhật ký ( tên nhóm đã được thay đổi để bảo mật ):

Failed to retrieve https://s3.amazonaws.com/my.bucket/bootstrap.sh: HTTP Error 403 : <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message>

Tập tin cấu hình:

packages:
  yum:
    git: []

files:
  /opt/elasticbeanstalk/hooks/appdeploy/pre/01a_bootstrap.sh:
    mode: "00755"
    owner: root
    group: root
    source: https://s3.amazonaws.com/my.bucket/bootstrap.sh

Môi trường đàn hồi Beanstalk được thiết lập với aws-elasticbeanstalk-ec2-rolevai trò IAM là vai trò thể hiện của nó. Vai trò này có chính sách sau:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Resource": "arn:aws:s3:::my.bucket/*"
    }
  ]
}

Và nhóm S3 có chính sách sau:

{
"Version": "2008-10-17",
"Statement": [
    {
        "Sid": "Stmt1371012493903",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::<account #>:role/aws-elasticbeanstalk-ec2-role"
        },
        "Action": [
            "s3:List*",
            "s3:Get*"
        ],
        "Resource": "arn:aws:s3:::my.bucket/*"
    }
]
}

Tôi cần thay đổi gì để cung cấp cho các phiên bản EC2 của tôi quyền truy cập vào nhóm S3 của tôi?

Câu trả lời:


6

Từ nội dung EC2 của bạn, bạn cũng sẽ phải truy xuất thông tin đăng nhập tạm thời trong siêu dữ liệu thể hiện:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<your-iam-role-name>

Sau đó, bạn sẽ sử dụng quyền truy cập được cung cấp và khóa bí mật để truy cập nhóm S3 của mình.


1
Khi bạn thực hiện điều này thông qua AWS SDK cho ngôn ngữ cụ thể từ một ứng dụng, SDK sẽ chăm sóc nội bộ để có được thông tin xác thực tạm thời và sau đó làm mới chúng dựa trên các khoảng thời gian cụ thể.
whokares

2
Làm thế nào để bạn sử dụng khóa truy cập và khóa bí mật để truy cập nhóm S3? Bạn có một ví dụ? Chúc mừng
Céline Aussourd 19/03/2015

0

Nếu đó là quyền truy cập tài khoản chéo, hãy kiểm tra xem nó không liên quan đến các tiêu đề ACL như được đề cập ở đây: /programming//a/34055538/1736679 (thông tin thêm trong chuỗi vấn đề này: https://github.com/aws/aws -cli / vấn đề / 1674 )

Đồng thời kiểm tra kỹ môi trường / người dùng mà bạn đang chạy để xem liệu không có Khóa ghi đè (1AWS_ACCESS_KEY1, v.v.) trong /etc/environmenthoặc~/.aws/credentials

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.