Điểm:0

Truy cập miền vào nhóm S3 Bị từ chối

lá cờ tr

Xin chào, tôi gặp sự cố khi nhận được AccessDenied trong miền của mình

Tôi tải trang web của mình lên Nhóm AWS S3, tôi đặt ở chế độ công khai, tạo trang tĩnh nhưng khi truy cập qua domain.com/mypage của mình, tôi nhận được AccessDenied.

Từ aws mydomain.s3.amazonaws.com/mypage hoạt động tốt.

DNS tên miền của tôi được thiết lập như thế này

;; PHẦN TRẢ LỜI:
mydomain.com. 2101 TRONG CNAME mydomain.s3.amazonaws.com.
mydomain.s3.amazonaws.com. 41342 TRONG CNAME s3-1-w.amazonaws.com.
s3-1-w.amazonaws.com. 219 TRONG CNAME s3-w.us-east-1.amazonaws.com.
s3-w.us-east-1.amazonaws.com. 3 TRONG MỘT 52.217.69.36

Bất kỳ lời khuyên để giải quyết điều này?

Điểm:0
lá cờ lu

Đây là từ tài liệu hỗ trợ của Amazon:

Mô tả ngắn:

Để khắc phục lỗi Truy cập bị từ chối, hãy xác định xem bản phân phối của bạn có tên miền gốc là điểm cuối trang web S3 hoặc API S3 REST điểm cuối. Làm theo các bước sau để xác định loại điểm cuối:

  1. Mở bảng điều khiển CloudFront.
  2. Chọn phân phối CloudFront của bạn rồi chọn Cài đặt phân phối.
  3. Chọn tab Nguồn gốc và Nhóm gốc.
  4. Chọn tab Nguồn gốc và Nhóm gốc.

Xem lại tên miền trong Tên miền gốc và Đường dẫn, sau đó xác định loại điểm cuối dựa trên định dạng của tên miền.

Điểm cuối API REST sử dụng định dạng này:

DOC-VÍ DỤ-BUCKET.s3.amazonaws.com

Ghi chú: Đảm bảo tuân theo quy tắc đặt tên bộ chứa Amazon S3.

Điểm cuối trang web sử dụng định dạng này:

DOC-VÍ DỤ-BUCKET.s3-website-us-east-1.amazonaws.com

Ghi chú: Tùy thuộc vào Khu vực AWS, định dạng điểm cuối có thể sử dụng định dạng dấu gạch ngang (s3-trang web-Khu vực) hoặc định dạng dấu chấm (s3-trang web.Khu vực).

Nếu bản phân phối của bạn đang sử dụng điểm cuối API REST, hãy xem Tôi đang sử dụng S3 Điểm cuối API REST làm nguồn gốc của bản phân phối CloudFront của tôi. Tại sao tôi có gặp lỗi 403 Access Denied không?

Nếu bản phân phối của bạn đang sử dụng điểm cuối trang web, hãy xác minh những điều sau các yêu cầu để tránh lỗi Access Denied:

  1. Các đối tượng trong thùng phải được truy cập công khai.
  2. Các đối tượng trong bộ chứa không thể được mã hóa bằng AWS Key Management Service (AWS KMS).
  3. Chính sách bộ chứa phải cho phép truy cập vào s3:GetObject.
  4. Nếu chính sách bộ chứa cấp quyền truy cập đọc công khai thì tài khoản AWS sở hữu bộ chứa đó cũng phải sở hữu đối tượng. 5.Các đối tượng được yêu cầu phải tồn tại trong thùng.
  5. Amazon S3 Block Public Access phải được tắt trên bộ chứa.
  6. Nếu Người yêu cầu thanh toán được bật thì yêu cầu phải bao gồm thông số người yêu cầu thanh toán.
  7. Nếu bạn đang sử dụng tiêu đề Người giới thiệu để hạn chế quyền truy cập từ CloudFront vào nguồn gốc S3 của mình, hãy xem lại tiêu đề tùy chỉnh.

Ghi chú: Nếu bạn không muốn cho phép public (vô danh) truy cập vào các đối tượng S3 của bạn, sau đó thay đổi cấu hình của bạn để sử dụng API REST của S3 điểm cuối làm nguồn gốc phân phối của bạn. Sau đó, cấu hình của bạn phân phối và nhóm S3 để hạn chế quyền truy cập bằng cách sử dụng quyền truy cập gốc danh tính (OAI). Để biết hướng dẫn, hãy xem Sử dụng điểm cuối API REST làm điểm cuối Origin với quyền truy cập bị hạn chế bởi OAI trong Làm cách nào để tôi sử dụng CloudFront để phục vụ một trang web tĩnh được lưu trữ trên Amazon S3?

Nghị quyết

Các đối tượng trong thùng phải được truy cập công khai

Bản phân phối sử dụng điểm cuối trang web chỉ hỗ trợ công khai nội dung có thể truy cập. Để xác định xem một đối tượng trong bộ chứa S3 của bạn có có thể truy cập công khai, hãy mở URL của đối tượng trong trình duyệt web. Hoặc, bạn có thể chạy lệnh cuộn tròn trên URL.

Sau đây là một ví dụ về URL của một đối tượng S3:

http://DOC-EXAMPLE-BUCKET.s3-website-us-east-1.amazonaws.com/index.html

Nếu trình duyệt web hoặc lệnh cuộn tròn trả về lỗi Truy cập bị từ chối, thì đối tượng không thể truy cập công khai.

Cho phép truy cập đọc công khai vào đối tượng theo một trong các cách sau:

  1. Tạo chính sách bộ chứa cho phép truy cập đọc công khai đối với tất cả các đối tượng trong bộ chứa.
  2. Sử dụng bảng điều khiển Amazon S3 để cho phép truy cập đọc công khai đối với đối tượng.
  3. Không thể mã hóa các đối tượng trong bộ chứa bằng AWS KMS
  4. Bản phân phối CloudFront không hỗ trợ các đối tượng được mã hóa AWS KMS. Bạn phải xóa mã hóa KMS khỏi các đối tượng S3 mà bạn muốn phục vụ bằng cách sử dụng phân phối.

Ghi chú: Thay vì sử dụng mã hóa AWS KMS, hãy sử dụng AES-256 để mã hóa các đối tượng của bạn.

Sử dụng một trong các cách sau để kiểm tra xem một đối tượng trong bộ chứa của bạn có Mã hóa KMS:

Sử dụng bảng điều khiển Amazon S3 để xem các thuộc tính của đối tượng. Ôn tập hộp thoại Mã hóa. Nếu AWS-KMS được chọn, thì đối tượng là được mã hóa KMS. Chạy lệnh đối tượng đầu bằng Dòng lệnh AWS Giao diện (AWS CLI). Nếu lệnh trả về ServerSideEncryption là aws:kms, thì đối tượng được mã hóa KMS. Lưu ý: Nếu bạn gặp lỗi khi chạy các lệnh AWS CLI, hãy đảm bảo rằng bạn đang sử dụng nhiều nhất phiên bản mới nhất của AWS CLI. Để thay đổi mã hóa của đối tượng cài đặt bằng bảng điều khiển Amazon S3, hãy xem Làm cách nào để thêm mã hóa vào một đối tượng S3?

Để thay đổi cài đặt mã hóa của đối tượng bằng cách sử dụng AWSCLI, trước tiên hãy xác minh rằng bộ chứa của đối tượng không có mã hóa mặc định. Nếu nhóm không có mã hóa mặc định, thì hãy chạy như sau lệnh xóa mã hóa của đối tượng bằng cách sao chép đối tượng qua chính nó:

aws s3 cp s3://DOC-EXAMPLE-BUCKET/index.html s3://DOC-EXAMPLE-BUCKET/index.html

Cảnh báo: Sao chép đối tượng lên chính nó sẽ xóa cài đặt cho lớp lưu trữ và
trang web-chuyển hướng-vị trí. Để duy trì các cài đặt này trong phiên bản mới đối tượng, hãy đảm bảo chỉ định rõ ràng lớp lưu trữ hoặc giá trị vị trí chuyển hướng trang web trong yêu cầu sao chép.

Chính sách nhóm phải cho phép truy cập vào s3:GetObject Để sử dụng phân phối với điểm cuối trang web S3, chính sách bộ chứa của bạn không được có một tuyên bố từ chối chặn quyền truy cập đọc công khai vào hành động s3:GetObject.

Ngay cả khi bạn có câu lệnh cho phép rõ ràng đối với s3:GetObject trong chính sách nhóm, hãy xác nhận rằng không có xung đột từ chối rõ ràng bản tường trình. Một tuyên bố từ chối rõ ràng luôn ghi đè lên một tuyên bố rõ ràng cho phép tuyên bố.

Thực hiện theo các bước sau để xem lại chính sách bộ chứa của bạn cho s3:GetObject:

  1. Mở bộ chứa S3 của bạn từ bảng điều khiển Amazon S3.

  2. Chọn tab Quyền.

  3. Chọn Chính sách nhóm.

  4. Xem lại chính sách bộ chứa cho các câu lệnh có "Action": "s3:GetObject" hoặc "Action": "s3:*".

Ví dụ chính sách sau đây chứa một câu lệnh cho phép rõ ràng đối với truy cập công khai vào s3:GetObject. Tuy nhiên, cũng có một sự từ chối rõ ràng tuyên bố cho s3:GetObject chặn truy cập trừ khi yêu cầu là từ một Amazon Virtual Private Cloud (Amazon VPC) cụ thể.

{
    "Phiên bản": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Bản tường trình": [
        {
            "Sid": "Cho phép-OAI-Truy cập vào Bộ chứa",
            "Hiệu ứng": "Cho phép",
            "Hiệu trưởng": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EAF5XXXXXXXXX"
            },
            "Hành động": "s3:GetObject",
            "Nguồn": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ]
        },
        {
            "Sid": "Cho phép truy cập công khai vào nhóm",
            "Hiệu ứng": "Cho phép",
            "Hiệu trưởng": "*",
            "Hành động": "s3:GetObject",
            "Nguồn": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ]
        },
        {
            "Sid": "Chỉ truy cập vào VPCE cụ thể",
            "Hiệu ứng": "Từ chối",
            "Hiệu trưởng": "*",
            "Hành động": "s3:GetObject",
            "Nguồn": [
                "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
            ],
            "Điều kiện, tình trạng, trạng thái": {
                "StringNotEquals": {
                    "aws:sourceVpce": "vpce-1a2b3c4d"
                }
            }
        }
    ]
  }
  1. Sửa đổi chính sách bộ chứa để xóa hoặc chỉnh sửa các câu lệnh chặn quyền truy cập đọc công khai vào s3:GetObject.

Ghi chú: CloudFront lưu trữ kết quả của lỗi Truy cập bị từ chối trong bộ đệm trong khoảng thời gian được chỉ định trong TTL tối thiểu của bộ đệm lỗi. Các giá trị mặc định là một phút. Sau khi loại bỏ một tuyên bố từ chối từ chính sách bộ chứa, bạn có thể thực hiện vô hiệu hóa bản phân phối của mình tới xóa đối tượng khỏi bộ đệm.

Nếu chính sách bộ chứa cấp quyền truy cập đọc công khai thì tài khoản AWS sở hữu thùng cũng phải sở hữu đối tượng Đối với một chính sách xô để cho phép truy cập đọc công khai đối với các đối tượng, tài khoản AWS sở hữu xô cũng phải sở hữu các đối tượng. Một thùng hoặc đối tượng được sở hữu bởi tài khoản của danh tính AWS Identity and Access Management (IAM) mà đã tạo thùng hoặc đối tượng.

Ghi chú: Yêu cầu về quyền sở hữu đối tượng áp dụng cho quyền truy cập đọc công khai được cấp bởi chính sách bộ chứa. Nó không áp dụng cho đọc công khai quyền truy cập được cấp bởi danh sách kiểm soát truy cập của đối tượng (ACL).

Thực hiện theo các bước sau để kiểm tra xem thùng và đối tượng có giống nhau không chủ nhân:

  1. Chạy lệnh AWS CLI này để lấy ID chính tắc S3 của chủ sở hữu bộ chứa:
aws s3api list-buckets --query Owner.ID
  1. Chạy lệnh này để lấy ID chính tắc S3 của chủ sở hữu đối tượng:

Lưu ý: Ví dụ này hiển thị một đối tượng, nhưng bạn có thể sử dụng danh sách lệnh để kiểm tra một số đối tượng.

đối tượng danh sách aws s3api --bucket DOC-EXAMPLE-BUCKET --prefix index.html
  1. Nếu ID chính tắc không khớp thì bộ chứa và đối tượng có chủ sở hữu khác nhau.

Lưu ý: Bạn cũng có thể sử dụng bảng điều khiển Amazon S3 để kiểm tra bộ chứa và chủ sở hữu đối tượng. Chủ sở hữu được tìm thấy trong tab Quyền của xô hoặc đối tượng tương ứng.

Làm theo các bước sau để thay đổi chủ sở hữu của đối tượng thành chủ sở hữu bộ chứa:

  1. Từ tài khoản của chủ sở hữu đối tượng, hãy chạy lệnh này để truy xuất các quyền ACL được gán cho đối tượng:
aws s3api get-object-acl --bucket DOC-EXAMPLE-BUCKET --key object-name
  1. Nếu đối tượng có quyền ACL toàn quyền kiểm soát của chủ sở hữu bộ chứa, thì hãy chuyển sang bước #3. Nếu đối tượng không có quyền ACL của nhóm chủ sở hữu toàn quyền kiểm soát, sau đó chạy lệnh này từ tài khoản của chủ sở hữu đối tượng:
aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key object-name --acl bucket-owner-full-control
  1. Từ tài khoản của chủ sở hữu bộ chứa, hãy chạy lệnh này để thay đổi chủ sở hữu của đối tượng bằng cách sao chép đối tượng lên chính nó:
aws s3 cp s3://DOC-EXAMPLE-BUCKET/index.html s3://DOC-EXAMPLE-BUCKET/index.html

Các đối tượng được yêu cầu phải tồn tại trong nhóm Nếu người dùng không có quyền s3:ListBucket thì người dùng đó bị Từ chối truy cập lỗi đối tượng bị thiếu thay vì lỗi 404 Not Found. Chạy lệnh AWS CLI head-object để kiểm tra xem một đối tượng có tồn tại trong Gầu múc.

Ghi chú: Xác nhận rằng yêu cầu đối tượng được gửi tới CloudFront khớp chính xác với tên đối tượng S3. Tên đối tượng S3 phân biệt chữ hoa chữ thường. Nếu yêu cầu không có tên đối tượng chính xác thì Amazon S3 sẽ phản hồi như thể đối tượng bị mất. Để xác định đối tượng nào CloudFront đang yêu cầu từ Amazon S3, hãy sử dụng ghi nhật ký truy cập máy chủ.

Nếu đối tượng tồn tại trong nhóm, thì lỗi Truy cập bị Từ chối không xảy ra che giấu lỗi 404 Not Found. Xác minh các yêu cầu cấu hình khác để giải quyết lỗi Access Denied.

Nếu đối tượng không có trong bộ chứa thì lỗi Truy cập bị Từ chối là che giấu lỗi 404 Not Found. Giải quyết vấn đề liên quan đến đối tượng bị thiếu.

Ghi chú: Đây không phải là phương pháp hay nhất về bảo mật để cho phép truy cập s3:ListBucket công khai. Kích hoạt quyền truy cập s3:ListBucket công khai cho phép người dùng để xem và liệt kê tất cả các đối tượng trong một nhóm. Điều này phơi bày đối tượng chi tiết siêu dữ liệu (ví dụ: khóa và kích thước) cho người dùng ngay cả khi người dùng không có quyền tải xuống đối tượng.

Amazon S3 Block Public Access phải được tắt trên bộ chứa Xác nhận rằng không có bất kỳ cài đặt Truy cập công khai khối Amazon S3 nào áp dụng cho xô. Các cài đặt này có thể ghi đè các quyền mà cho phép truy cập đọc công khai. Cài đặt Quyền truy cập công khai khối Amazon S3 có thể áp dụng cho các bộ chứa riêng lẻ hoặc tài khoản AWS.

Nếu Người yêu cầu thanh toán được bật, thì yêu cầu phải bao gồm tham số request-payer Nếu Requester Pays được bật trên một bộ chứa, thì truy cập ẩn danh vào nhóm không được phép. Người dùng từ khác tài khoản phải chỉ định tham số người trả yêu cầu khi họ gửi yêu cầu vào xô. Nếu không, những người dùng đó sẽ nhận được Truy cập bị Từ chối lỗi.

Nếu bạn đang sử dụng tiêu đề Người giới thiệu để hạn chế quyền truy cập từ CloudFront đến nguồn gốc S3 của bạn, sau đó xem lại tiêu đề tùy chỉnh Nếu bạn đang sử dụng Tiêu đề người giới thiệu để hạn chế quyền truy cập từ CloudFront vào trang web S3 của bạn nguồn gốc của điểm cuối, hãy kiểm tra giá trị bí mật hoặc mã thông báo được đặt trên bộ chứa S3 chính sách. Sau đó, xác nhận rằng giá trị bí mật hoặc mã thông báo khớp với giá trị trên tiêu đề tùy chỉnh nguồn gốc CloudFront.

Nếu bạn đang sử dụng một tuyên bố từ chối rõ ràng trong chính sách bộ chứa, thì xác nhận rằng cũng có một tuyên bố cho phép cấp quyền truy cập dựa trên trên tiêu đề Người giới thiệu. Bạn không thể cấp quyền truy cập chỉ với một thông báo rõ ràng tuyên bố phủ nhận.

Ví dụ, chính sách bộ chứa sau sẽ cấp quyền truy cập vào nguồn gốc S3 khi yêu cầu chứa chuỗi "aws:Referer":"MY_SECRET_TOKEN_CONFIGURED_ON_CLOUDFRONT_ORIGIN_CUSTOM_HEADER":

{
  "Phiên bản":"2012-10-17",
  "Id":"ví dụ về chính sách người giới thiệu http",
  "Bản tường trình":[
    {
      "Sid":"Cho phép nhận các yêu cầu bắt nguồn từ CloudFront của tôi với tiêu đề người giới thiệu",
      "Hiệu ứng":"Cho phép",
      "Hiệu trưởng":"*",
      "Hành động":"s3:GetObject",
      "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Điều kiện, tình trạng, trạng thái":{
        "StringLike":{"aws:Referer":"MY_SECRET_TOKEN_CONFIGURED_ON_CLOUDFRONT_ORIGIN_CUSTOM_HEADER"}
      }
    }
  ]
}

Với chính sách nhóm ví dụ này, tiêu đề tùy chỉnh nguồn gốc CloudFront cần phải:

  • tiêu đề: Người giới thiệu
  • Giá trị: MY_SECRET_TOKEN_CONFIGURED_ON_CLOUDFRONT_ORIGIN_CUSTOM_HEADER

Ghi chú: Chính sách bộ chứa ví dụ cấp quyền truy cập công khai (ẩn danh) vào xô vì Hiệu trưởng là một giá trị ký tự đại diện ("Hiệu trưởng":"*"). Tuy nhiên, do câu lệnh điều kiện, truy cập vào nguồn gốc S3 chỉ được cấp nếu yêu cầu bao gồm tiêu đề Người giới thiệu và giá trị tiêu đề khớp với giá trị trong chính sách bộ chứa.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.