Bài viết Câu hỏi About RongvangIT
profile Pic
0
0

Đăng ngày:

  74 Lượt xem

Amazon Cloudfront Origin Access Control (OAC): Tất cả những gì bạn cần biết

OACAmazon CloudFront

Trong bài viết này, bạn sẽ tìm hiểu về:

  1. Amazon CloudFront origin access control (OAC) là gì?
  2. Các tính năng mới của OAC
  3. Có thể sử dụng điểm cuối trang web tĩnh của bucket S3 và OAC không?
  4. Có cần migrate sang OAC không?
  5. Thiết lập OAC cho CloudFront distributions và bucket S3

Amazon CloudFront là gì?

Amazon CloudFront là một mạng phân phối nội dung toàn cầu (CDN) từ Amazon Web Services (AWS) cung cấp ứng dụng, trang web, video và API một cách an toàn đến người xem trên toàn thế giới chỉ trong vài mili giây.

Một trong những kiến trúc AWS phổ biến nhất là Amazon S3, được sử dụng làm nguồn gốc để lưu trữ nội dung (hình ảnh, video, đối tượng khác), và CloudFront, được sử dụng để phân phối chúng đến người xem. Khi sử dụng kiến trúc này, khách hàng có thể tận dụng danh tính truy cập nguồn (OAI) của CloudFront để bảo vệ quyền truy cập vào S3 chỉ từ CloudFront.

AWS giới thiệu một chức năng mới thay thế OAI, với tên rất tương tự: quản lý truy cập nguồn CloudFront (OAC). Hãy cùng xem xét về OAC là gì, cách nó hoạt động, tính năng mới, cách migrate từ OAI và cách thiết lập nó trong AWS Management Console.

Origin Access Control (OAC) là gì?

OAC là một chức năng đơn giản có thể được tìm thấy trong cài đặt CloudFront distributions.
CloudFront OAC set 1

Với OAC, bạn có thể:

  • Hạn chế quyền truy cập vào bucket Amazon S3 để nó không thể truy cập công khai.
  • Đảm bảo người dùng chỉ có thể truy cập nội dung trong bucket S3 thông qua CloudFront distributions cụ thể đã được chỉ định.
  • Giảm tổng chi phí chuyển dữ liệu ra, vì việc phục vụ dữ liệu trực tiếp từ S3 tốn kém hơn so với việc phục vụ chúng qua CloudFront distributions.

OAC ngăn người dùng xem các tệp S3 của bạn bằng cách đơn giản sử dụng URL trực tiếp, ví dụ:

app-private-bucket-stormit.s3.eu-central-1.amazonaws.com/pics/logo.png

Người dùng của bạn chỉ có thể sử dụng URL của CloudFront distributions của bạn (hoặc tên miền của bạn nếu bạn đã thiết lập nó). Ví dụ:

d2whx7jax6hbi5.cloudfront.net/pics/logo.png

CloudFront OAC

Các tính năng mới của OAC

OAC dựa trên các thực hành tốt nhất của AWS trong việc sử dụng các nguyên tắc chủ thể dịch vụ IAM để xác thực với nguồn gốc S3. So với OAI, một số cải tiến đáng chú ý của OAC bao gồm:

  • OAC được triển khai với các thực hành bảo mật nâng cao như thông tin chứng thực ngắn hạn, xoay thông tin chứng thực thường xuyên và các chính sách dựa trên nguồn lực. Nó cung cấp bảo vệ tốt hơn chống lại các cuộc tấn công như confused deputy.
  • OAC hỗ trợ các yêu cầu HTTP: GET, PUT, POST, PATCH, DELETE, OPTIONS và HEAD.
  • Mã hóa phía máy chủ với AWS Key Management Service – SSE-KMS – và OAC hỗ trợ tải xuống và tải lên các đối tượng S3 đã được mã hóa.

Ký yêu cầu (Signing requests)

Khi cấu hình OAC, bạn có thể chọn giữa ba hành vi ký – “Do not sign requests - Không ký yêu cầu”, “Sign requests - Ký yêu cầu” và “Do not override authorization header - Không ghi đè đầu ủy quyền”.

CloudFront OAC

Lựa chọn “Không ký yêu cầu” (không được khuyến khích):

Bạn có thể chọn tùy chọn này nếu ứng dụng khách của bạn luôn ký yêu cầu hoặc nếu bucket S3 của bạn là công khai. Lưu ý rằng tùy chọn Không Ký Yêu Cầu tương đương với việc không sử dụng kiểm soát truy cập nguồn gốc. Tùy chọn này hữu ích khi bạn muốn thay đổi tùy chọn ký của OAC cho một số lượng lớn các CloudFront distributions.

Lựa chọn “Ký yêu cầu” (được khuyến khích):

Nếu bạn cấu hình tùy chọn Ký yêu cầu, chủ thể dịch vụ IAM của CloudFront sẽ ký mỗi yêu cầu bằng cách sử dụng SigV4. Chữ ký sau đó được chèn cùng với các dữ liệu khác để tạo tiêu đề ủy quyền được gửi đến nguồn gốc S3 của bạn. Khi nguồn gốc S3 của bạn nhận được yêu cầu này, nó thực hiện các bước để tính toán chữ ký và so sánh nó với chữ ký mà CloudFront gửi kèm theo yêu cầu.

Lựa chọn “Không ghi đè đầu ủy quyền” (lựa chọn này không được khuyến khích):

Nếu ứng dụng khách của bạn có thể ký yêu cầu và trường hợp sử dụng của bạn liên quan đến chuyển đổi giữa đầu ủy quyền được ký bởi khách hàng và đầu ủy quyền được ký bởi CloudFront dựa trên các thuộc tính như hành vi bảo trì bộ nhớ đệm khác nhau, thư mục tệp, phương thức HTTP, cuộc gọi máy chủ mép, vv.

Hỗ trợ SSE-KMS

Nếu bạn đang sử dụng OAI cũ, dữ liệu của bạn đã được bảo vệ trong quá trình truyền tải, và bạn có thể bảo vệ dữ liệu của bạn khi nó ở trạng thái nghỉ bằng cách sử dụng Mã hóa Phía Máy Chủ với Khóa Quản lý Dịch vụ AWS (SSE-KMS).

Nếu chính sách tổ chức của bạn yêu cầu sử dụng mã hóa SSE-KMS, bạn có thể sử dụng OAC để truy cập các đối tượng S3 đã được mã hóa bằng SSE-KMS.

Bạn chỉ cần cấu hình chính sách KMS của mình để cho phép nguyên tắc IAM của CloudFront truy cập các khóa KMS của bạn với các bước đơn giản:

  1. Điều này có thể được thực hiện bằng cách điều hướng đến bảng điều khiển KMS (chọn khu vực của bạn).
  2. Chọn khóa KMS do khách hàng quản lý của bạn.SSE-KMS
  3. Chọn tab “Chính sách khóa” và nhấp vào “Chuyển sang chế độ xem chính sách”.SSE-KMS

  4. Chỉnh sửa chính sách và thêm quyền truy cập cho nguyên tắc dịch vụ CloudFront.
    a. Thay thế ACCOUNT_ID bằng ID tài khoản AWS chứa CloudFront distribution, S3 bucket và khóa KMS.
    b. Thay thế DISTRIBUTION_ID bằng ID của CloudFront distribution.

{
    "Sid":"AllowCloudFrontServicePrincipalSSE-KMS",
    "Effect":"Allow",
    "Principal":{
        "AWS":"arn:aws:iam:: ACCOUNT_ID:root",
        "Service":"cloudfront.amazonaws.com"
    },
    "Action":[
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey*"
    ],
    "Resource":"*",
    "Condition":{
            "StringEquals": {
                "AWS:SourceArn":"arn:aws:cloudfront::ACCOUNT_ID:distribution/DISTRIBUTION_ID"
            }
        }
}

Có thể sử dụng điểm cuối trang web tĩnh của bucket S3 và OAC không?

Nó giữ nguyên như cho OAI (quản lý truy cập nguồn gốc): bạn không thể sử dụng quản lý truy cập nguồn gốc (OAC) với điểm cuối trang web của bucket S3.

Hai chức năng này không hoạt động cùng nhau vì bạn chỉ có thể thiết lập OAC cho bucket S3 trực tiếp, ví dụ:

test-bucket-website-stormit-2022.s3.eu-central-1.amazonaws.com

Và nếu bạn sử dụng điểm cuối trang web S3, bạn không thể kích hoạt OAC, ví dụ:

test-bucket-website-stormit-2022.s3-website.eu-central-1.amazonaws.com

Một trong những lý do chính để sử dụng chức năng lưu trữ trang web tĩnh của S3 là bạn có thể sử dụng các quy tắc chuyển hướng. Điều này sẽ không hoạt động nếu bạn sử dụng chức năng OAC trong CloudFront.

Tuy nhiên, có cách để thiết lập quyền truy cập khi sử dụng CloudFront và điểm cuối trang web S3 thông qua [hạn chế quyền truy cập vào tệp trên nguồn gốc tùy chỉnh của CloudFront hoặc phục vụ nội dung riêng tư bằng cách sử dụng URL và cookie được ký.

Có cần migrate sang OAC?

Tại thời điểm này, có nhiều khách hàng đang sử dụng OAI trong môi trường của họ. Đề xuất bạn sử dụng OAC vì tính năng bảo mật và một số tính năng bổ sung mới, nhưng CloudFront hiện tại vẫn hỗ trợ cả OAC và OAI.

OAI chỉ sẽ được hỗ trợ trong các khu vực AWS hiện có và khu vực được ra mắt trước tháng 12 năm 2022.

Vì vậy, không cần phải migrate từ OAI sang OAC ngay lập tức. Tuy nhiên, nếu bạn đã cấu hình một phân phối để sử dụng OAI, bạn có thể dễ dàng migrate phân phối đó sang OAC chỉ với một vài cú nhấp chuột. Tốt nhất là để chính sách bucket OAI giữ nguyên cho đến khi CloudFront distributions của bạn được triển khai.

Thiết lập OAC cho các CloudFront distributions

Cấu hình OAC khi tạo một CloudFront distributions

  1. Đăng nhập vào Bảng điều khiển CloudFront.

  2. Nhấp vào “Create Distribution” (Tạo phân phối).

  3. Chọn S3 bucket của bạn làm miền nguồn.Thiết lập OAC của CloudFront

  4. Chọn “Origin access control settings” (Cài đặt kiểm soát truy cập nguồn) và nhấp vào “Create control setting” (Tạo cài đặt kiểm soát).Thiết lập OAC của CloudFront

  5. Bạn có thể để tên mặc định. Trong hầu hết các trường hợp, bạn có thể để “Signing behavior” (Hành vi ký) là “Sign requests” (Ký yêu cầu), nhưng bạn có thể đọc thêm về tùy chọn này trong phần trước của bài viết này. Nhấp vào “Create” (Tạo).Thiết lập OAC của CloudFront

  6. Nên chọn “Redirect HTTP to HTTPS” (Chuyển hướng từ HTTP đến HTTPS) hoặc “HTTPS only” (Chỉ HTTPS) cho loại phân phối này.Thiết lập OAC của CloudFront

  7. Bạn có thể để mọi thứ khác ở mức mặc định và nhấp vào “Create distribution” (Tạo phân phối).

  8. Bạn sẽ thấy một bảng màu xanh ở phần trên cùng của cửa sổ trình duyệt của bạn.

    a. Nhấp vào “Copy policy” (Sao chép chính sách) và nhấp vào “Go to S3 bucket permissions to update policy” (Điều hướng đến quyền S3 để cập nhật chính sách).Thiết lập OAC của CloudFront

    b. Nếu bạn đóng mục này một cách không cố ý, bạn sẽ tìm thấy chính sách bucket S3 mới này trong cài đặt của CloudFront distributions mới của bạn, dưới “Origins” (Nguồn), sau đó nhấp vào “Edit” (Chỉnh sửa).Thiết lập OAC của CloudFront

    c. Và đây nó ở phần Chính sách Bucket.Thiết lập OAC của CloudFront

  9. Điều hướng đến quyền S3 bucket và nhấp “Edit” (Chỉnh sửa) gần Chính sách Bucket.Thiết lập OAC của CloudFront

  10. Sao chép chính sách bên trong và nhấp vào “Save changes” (Lưu thay đổi). Bạn có thể xóa chính sách cho quyền truy cập ẩn danh nếu bạn có nó ở đây.

Dưới đây là ví dụ về chính sách của tôi:

{
    "Version":"2008-10-17",
    "Id":"PolicyForCloudFrontPrivateContent",
    "Statement":[
        {
            "Sid": "AllowCloudFrontServicePrincipal",
            "Effect":"Allow",
            "Principal":{
                "Service":"cloudfront.amazonaws.com"
            },
            "Action":"s3:GetObject",
            "Resource":"arn:aws:s3:::test-bucket-main-2022/*",
            "Condition":{
                "StringEquals":{
                  "AWS:SourceArn":"arn:aws:cloudfront::913877976938:distribution/E28H6NNXS8GTVO"
                }
            }
        }
    ]
}
  1. Bạn cũng nên chặn quyền truy cập công khai đối với S3 bucket.Thiết lập OAC của CloudFront

Chuyển đổi và cấu hình OAC cho các phân phối CloudFront và S3 bucket hiện tại

Hướng dẫn này cũng có thể được sử dụng cho người dùng cần chuyển đổi từ OAI sang OAC, nhưng chúng tôi khuyến nghị giữ lại chính sách bucket OAI cho đến khi phân phối CloudFront của bạn được cập nhật và triển khai thành công, sau đó bạn có thể xóa chính sách bucket OAI trong S3 bucket của bạn.

  1. Đăng nhập vào Bảng điều khiển CloudFront.

  2. Nếu bạn đã có một OAC, bạn có thể sử dụng nó. Nếu không, bạn có thể tạo nó bằng cách nhấp vào “Origin access” (Truy cập nguồn) trong bảng điều khiển bên trái.cloudfront origin access settings

  3. Tiếp theo, nhấp vào “Create control setting” (Tạo cài đặt kiểm soát).cloudfront origin access settings 1

  4. Điền tên. Trong hầu hết các trường hợp, bạn có thể để “Signing behavior” (Hành vi ký) là “Sign requests” (Ký yêu cầu), nhưng bạn có thể đọc thêm về tùy chọn này trong phần trước của bài viết này. Nhấp vào “Create” (Tạo).cloudfront origin access settings 3

  5. Điều hướng đến các phân phối CloudFront của bạn và chọn một phân phối có nguồn gốc từ S3 và bạn muốn bật OAC cho nó.

  6. Chọn tab “Origins” (Nguồn). Chọn nguồn Amazon S3 và sau đó chọn “Edit” (Chỉnh sửa).cloudfront origin access settings 3

  7. Chọn “Origin access control settings” (Cài đặt kiểm soát truy cập nguồn) và cho kiểm soát truy cập nguồn, chọn OAC đã tạo trước đó - NewOAC. Nhấp vào “Copy policy” (Sao chép chính sách) và điều hướng đến quyền S3 bucket.cloudfront origin access settings 3

  8. Trong quyền S3 bucket, nhấp “Edit” (Chỉnh sửa) gần Chính sách Bucket.cloudfront origin access settings 3

  9. Sao chép chính sách bên trong và nhấp vào “Save changes” (Lưu thay đổi). Bạn có thể xóa chính sách cho quyền truy cập ẩn danh nếu bạn có nó ở đây.cloudfront origin access settings 3

  10. Quay lại tab cài đặt CloudFront trong trình duyệt của bạn và chọn “Save changes” (Lưu thay đổi). Lưu ý rằng có thể mất một thời gian cho thay đổi có hiệu lực.

  11. Đừng quên chặn tất cả quyền truy cập công cộng trong quyền cho S3 bucket của bạn.

Kết luận

Amazon Cloudfront Origin Access Control (OAC) hiện đã có sẵn toàn cầu. Bài viết này đã cố gắng mô tả nó dùng để làm gì và cách nó khác biệt so với OAI. Bây giờ là quyết định của bạn liệu bạn muốn bắt đầu sử dụng nó hay di chuyển sang chức năng này từ OAI. Chúng tôi đã xem xét cách bắt đầu sử dụng nó thông qua Bảng điều khiển Quản lý AWS, nhưng bạn cũng có thể bắt đầu sử dụng OAC thông qua API, SDK hoặc CLI.

aws_pro
Đã có SAA, sẽ lấy SAP trong tương lai gần.

Bình luận

Bài viết chưa có bình luận. Hãy trở thành người bình luận đầu tiên!
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic