Amazon Simple Storage Service (Amazon S3) là một nền tảng mạnh mẽ cho phép bạn thực hiện các công việc khác nhau. Một tính năng đáng chú ý là khả năng tạo một thùng chứa với một tên miền đầy đủ (FQDN), trỏ một bản ghi điểm danh (alias record) đến điểm cuối trang web của thùng chứa, và ngay lập tức có một trang web tĩnh HTTP hoạt động. Nếu bạn muốn phục vụ lưu lượng HTTPS cho trang web tĩnh của mình, bạn có thể sử dụng Amazon CloudFront để cung cấp cả bộ nhớ đệm và chứng chỉ HTTPS cho người dùng truy cập từ công cộng.
Nếu người dùng của bạn đặt tại bên trong một Mạng nội bộ hoặc mạng riêng tư, thì bạn sẽ muốn cung cấp quyền truy cập đến các thùng chứa S3 của bạn bằng cách sử dụng các điểm cuối giao diện trên AWS PrivateLink cho S3. Người dùng của bạn cũng sẽ muốn truy cập trang web tĩnh của bạn bằng một tên miền thân thiện như portal.example.com. HTTPS có sẵn thông qua tên miền chung s3-website.<region>.amazonaws.com. Tuy nhiên, các tên miền tùy chỉnh sẽ yêu cầu một máy chủ proxy nội bộ bổ sung để phục vụ chứng chỉ TLS của bạn. Điều này có thể được đạt được bằng cách sử dụng Internal Application Load Balancer (ALB) nội bộ.
Tổng quan về giải pháp Giải pháp này tận dụng kết nối riêng tư hiện có của bạn đến VPC và một Internal ALB để trình diễn chứng chỉ TLS của tên miền thùng chứa S3 tùy chỉnh cho người dùng cuối. ALB tận dụng AWS Certificate Manager (ACM) để trình diễn một chứng chỉ hợp lệ cho người dùng cuối, đồng thời duy trì một kết nối TLS an toàn đến Điểm cuối VPC Amazon S3 đáng tin cậy. Điều này cho phép sử dụng tên miền tùy chỉnh cho trang web tĩnh của bạn.
Trong hướng dẫn này, bạn sẽ tạo một Amazon S3 VPC Endpoint và một Internal ALB có thể được sử dụng với kết nối AWS hiện tại của bạn.
Yêu cầu tiên quyết Để thực hiện hướng dẫn này, bạn cần có các yêu cầu tiên quyết sau:
Một tài khoản AWS Một chứng chỉ riêng tư hoặc nhập khẩu cho tên miền được nhập vào ACM ở Khu vực bạn chọn Một hộp chứa Amazon S3 có tên trùng với tên miền phù hợp với chứng chỉ ACM của bạn (ví dụ: “portal.example.com”). Bạn có thể đọc ở đây để bắt đầu với Amazon S3 và đọc về làm việc với hộp chứa Amazon S3 ở đây. Bạn không cần bật chế độ lưu trữ trang web tĩnh trên hộp chứa, vì điều này chỉ áp dụng cho điểm cuối trang web công cộng. Yêu cầu đối với hộp chứa sẽ được thực hiện thông qua một REST API riêng tư thay vì đó. Một VPC với ít nhất hai mạng con riêng tư Một kết nối Direct Connect, Site-to-Site VPN hoặc Client VPN hiện có với định tuyến đúng vào VPC của bạn. Điều này sẽ được gọi là kết nối đến VPC riêng của bạn. Một vùng hosted riêng tư cho tên miền tùy chỉnh của bạn Một tài nguyên có thể truy cập mạng VPC của bạn, như một trường hợp Amazon Elastic Compute Cloud (Amazon EC2) chạy bên trong VPC Một trang web tĩnh chứa một trang nhập index.html đã được đưa vào hộp chứa S3 của bạn Bước 1: Tạo Amazon S3 VPC Endpoint của bạn Để kết nối một cách an toàn và riêng tư ALB của bạn với hộp chứa S3 của bạn, bạn phải bắt đầu bằng cách tạo một Amazon S3 VPC Endpoint.
Đăng nhập vào Trang tổng quan VPC của bạn. Trong menu bên trái, di chuyển đến trang “Endpoints”. Chọn “Tạo điểm cuối”. Tìm kiếm “s3” trong danh sách Dịch vụ và chọn dịch vụ điểm cuối giao diện Amazon S3.Screenshot của trang Tạo điểm cuối VPC, với điểm cuối giao diện S3 được chọn Chọn VPC chứa kết nối đến VPC riêng của bạn và ít nhất hai mạng con mà điểm cuối sẽ thuộc về. Đề nghị bạn chọn các mạng con thuộc hai hoặc nhiều hơn hai Khu vực Khả dụng (AZ) khác nhau để tận dụng cách cách lỗi trên điểm cuối giao diện của bạn. Chọn nhóm bảo mật mà bạn muốn bảo vệ Điểm cuối VPC. Nhóm bảo mật này phải cho phép truy cập các cổng 80 và 443 từ nhóm bảo mật của bạn ALB ít nhất. Bạn có thể đọc thêm về làm việc với các nhóm bảo mật ở đây. Chọn “Truy cập đầy đủ” cho chính sách Điểm cuối VPC. Chính sách này đảm bảo rằng tất cả các nguyên tắc AWS làm việc trong VPC có thể truy cập Điểm cuối VPC cho bất kỳ hộp chứa S3 nào. Điều này không bỏ qua chính sách bảo mật mà chúng ta sẽ định nghĩa cho hộp chứa S3 sau. Tuy nhiên, bạn có thể chọn giới hạn chính sách này chỉ cho phép truy cập vào ALB sau khi bạn đã tạo nó. Chọn “Tạo điểm cuối”. Chọn ID Điểm cuối VPC mới của bạn để di chuyển đến Điểm cuối VPC mới. Trên các tab dưới cùng, di chuyển đến “Mạng con”. Ghi chú Địa chỉ IPv4 của Điểm cuối VPC của bạn, vì bạn sẽ cần chúng sau này!Screenshot của Địa chỉ IPv4 của Điểm cuối VPC Bước 2: Cho phép Điểm cuối VPC vào hộp chứa S3 của bạn Bạn có thể đọc thêm về chính sách hộp chứa S3 cho Điểm cuối VPC ở đây.
Di chuyển đến hộp chứa S3 của bạn và vào tab “Quyền truy cập”. Cuộn xuống phần “Chính sách hộp chứa” và Chọn “Chỉnh sửa”. Thêm chính sách của bạn dựa trên tài liệu được cung cấp. Để thuận tiện, bạn cũng có thể sử dụng chính sách được cung cấp này để đảm bảo rằng chỉ Điểm cuối VPC của bạn được phép một cách rõ ràng: { “Version”: “2012-10-17”, “Id”: “Policy1415115909152”, “Statement”: [ { “Sid”: “Access-to-specific-VPCE-only”, “Principal”: ““, “Action”: “s3:GetObject”, “Effect”: “Allow”, “Resource”: [“arn:aws:s3:::yourbucketname”, “arn:aws:s3:::yourbucketname/“], “Condition”: { “StringEquals”: { “aws:SourceVpce”: “vpce-1a2b3c4d” } } } ] } JSON Bước 3: Cài đặt ALB Internal của bạn ALB Internal sẽ kết thúc kết nối TLS phía mặt khách hàng của bạn
Di chuyển đến Trang tổng quan AWS Console EC2 của bạn. Trong menu bên trái, chọn “Cân bằng tải”. Chọn “Tạo cân bằng tải”. Chọn “Tạo” dưới hộp “Trình cân bằng tải ứng dụng”. Đặt tên cho ALB của bạn và chọn mạch “internal”. Chuyển giao thức nghe thành “HTTPS”. Chọn các mạng con riêng tư của bạn mà ALB sẽ phục vụ. Chọn “Tiếp theo”. Chọn chứng chỉ ACM mà sẽ được phục vụ cho khách hàng của bạn. Lưu ý rằng nó phải khớp với tên miền/tên hộp chứa S3 tĩnh của bạn. Chọn “Tiếp theo”. Chọn hoặc tạo một nhóm bảo mật cho phép kết nối riêng tư hiện có của bạn kết nối vào cổng 443 trên cân bằng tải. Chọn “Tiếp theo”. Nếu bạn chưa thực hiện điều này, hãy đảm bảo rằng bạn cập nhật nhóm bảo mật cho Điểm cuối VPC của bạn để cho phép truy cập vào nhóm bảo mật của ALB mà bạn đã định nghĩa ở đây. Tạo một nhóm mục tiêu mới sẽ mục tiêu đến các địa chỉ IP bằng giao thức HTTPS. Sử dụng giao thức HTTP trong kiểm tra sức khỏe. Dưới “Cài đặt Kiểm tra sức khỏe Nâng cao”, đảm bảo Rèn cổng được đặt thành 80 để khớp với giao thức HTTP.Screenshot của Trang Nhóm mục tiêu với các tùy chọn được nhập như mô tả ở trên Kiểm tra sức khỏe ALB Host headers sẽ không chứa tên miền, vì vậy S3 sẽ trả về mã phản hồi HTTP không phải là 200. Thêm “307,405” vào mã phản hồi thành công của kiểm tra sức khỏe. Chọn “Tiếp theo”. Đăng ký địa chỉ IP Điểm cuối VPC mà bạn đã ghi chú từ Bước 1 vào nhóm mục tiêu. Chọn “Tiếp theo”.Screenshot của Địa chỉ IP Điểm cuối VPC được nhập vào trang nhóm mục tiêu ALB Bước 4: Cấu hình các quy tắc nghe cắm bổ sung Điểm cuối PrivateLink Amazon S3 là một Điểm cuối REST API, có nghĩa là các yêu cầu có dấu gạch chéo cuối sẽ trả về danh sách thư mục XML mặc định. Để làm việc này, bạn sẽ tạo một quy tắc chuyển hướng để chuyển tất cả các yêu cầu kết thúc bằng dấu gạch chéo cuối đến index.html.
Di chuyển đến ALB Internal của bạn. Chọn nó và mở tab “Người nghe”. Bên phải của bảng cho người nghe HTTPS, chọn “Xem/chỉnh sửa quy tắc”. Chọn biểu tượng “+” gần top để cho phép chèn quy tắc mới. Dưới “NẾU”, chọn “Thêm Điều kiện”, sau đó chọn “Đường dẫn…”. Nhập “*/” vào Giá trị Đường dẫn. Dưới “SAU ĐÓ”, chọn “Thêm Hành động”, sau đó chọn “Chuyển hướng đến…”. Nhập “#{port}” dưới “Nhập cổng”. Chọn “Tùy chỉnh máy chủ, đường dẫn, truy vấn” trong danh sách thả xuống. Sửa đổi “Đường dẫn” thành “/#{path}index.html”. Chọn “Lưu” ở góc trên bên phải.Screenshot của các quy tắc Người nghe ALB với các tùy chọn đã nhập như mô tả ở trên Bước 5: Cấu hình DNS của bạn và kiểm tra ALB của bạn Cấu hình các bản ghi DNS trên cơ sở hoặc riêng tư của bạn để trỏ đến ALB Internal. Bạn có thể sử dụng các vùng hosted riêng tư Route53 (PHZ) để thiết lập một bản ghi alias riêng tư và liên kết PHZ với VPC của bạn. Bạn cũng có thể chuyển tiếp các truy vấn DNS từ cơ sở đến VPC của bạn.
Bước 6: Kiểm tra ALB của bạn Bạn phải sử dụng một tài nguyên có quyền truy cập riêng tư vào VPC của bạn để tiếp cận ALB Internal. Kết nối đến tài nguyên của bạn và thử truy cập mục nhập DNS riêng tư mới của bạn. Nếu bạn chỉ có quyền truy cập bảng điều khiển đối với tài nguyên của bạn, bạn cũng có thể sử dụng lệnh cURL để xác nhận trang web tĩnh riêng tư.
Dọn dẹp Để dọn dẹp, bạn có thể xóa hoặc khôi phục các tài nguyên được tạo trong hướng dẫn này theo thứ tự sau:
Các mục DNS PHZ Route53 ALB Nhóm Mục tiêu Cân bằng tải Amazon S3 VPC Endpoint Bất kỳ Nhóm Bảo mật liên quan nào bạn đã tạo Chính sách hộp chứa S3 của bạn Kết luận Trong bài viết này, bạn đã học cách tạo một trang web Amazon S3 tĩnh riêng tư với tên miền tùy chỉnh, mà không cần triển khai bất kỳ proxy nào trên Amazon EC2. Điều này có ích khi mở rộng trang web tĩnh của bạn đến các người dùng nội bộ lớn, trong khi cho phép họ truy cập một tên miền thân thiện. Cuối cùng, bạn sẽ hưởng lợi từ việc không phải quản lý việc nâng cấp, bảo mật hoặc mở rộng các trường hợp proxy Amazon EC2.
Nếu bạn muốn thêm cơ chế xác thực vào trang web tĩnh của bạn, bạn có thể sử dụng xác thực bằng cách sử dụng ALB của bạn bằng một trong các trường hợp sử dụng được cung cấp trong tài liệu hoặc sử dụng AWS Verified Access.