Ngân hàng đề — AWS Certified SysOps Administrator Associate

Tìm thấy 936 câu.

Câu 241 Domain 6: Cost and Performance Optimization

A web application runs on multiple Amazon EC2 instances that are configured behind an Auto Scaling Group (ASG). The company wants the scaling action to begin as soon as CPU utilization crosses 50% for the instances.

Which is the right way to configure this scaling action?

  1. A

    Configure ASG to scale based on a schedule

  2. B

    Configure ASG to scale based on demand

  3. C

    Configure ASG to scale based on events

  4. D

    Configure ASG to use predictive scaling

Xem giải thích

Đáp án

B — Cấu hình ASG co giãn theo NHU CẦU (dynamic scaling / scale based on demand).

Vì sao đúng

Đề nêu một điều kiện rất cụ thể: hành động co giãn phải bắt đầu NGAY KHI CPU vượt 50% — tức là phản ứng theo chỉ số thực tế, không theo lịch và không theo dự đoán.

⚠ Điểm mấu chốt — bốn kiểu co giãn và cái gì kích hoạt chúng:

Dynamic scaling (theo nhu cầu)      ← đáp án
        ↓
    CloudWatch alarm trên một CHỈ SỐ vượt ngưỡng
        ↓
    → phản ứng với tải THỰC TẾ đang diễn ra

Scheduled scaling
        ↓
    Theo LỊCH đã định trước (cron)
        ↓
    → cho mẫu tải BIẾT TRƯỚC

Predictive scaling
        ↓
    Học máy DỰ ĐOÁN tải rồi co giãn TRƯỚC
        ↓
    → cần lịch sử ít nhất 24 giờ, tốt nhất 14 ngày

Manual scaling
        ↓
    Tự tay đổi desired capacity

⚠ Và trong dynamic scaling còn ba kiểu chính sách:

Target Tracking          ← đơn giản nhất, nên ưu tiên
        ↓
    "Giữ CPUUtilization trung bình quanh 50%"
    → ASG tự tính cần thêm bớt bao nhiêu máy

Step Scaling
        ↓
    "Vượt 50% thêm 1 máy, vượt 70% thêm 3 máy"
    → kiểm soát chi tiết hơn theo từng bậc

Simple Scaling
        ↓
    Một hành động rồi chờ cooldown — cách CŨ

Với yêu cầu của đề, Target Tracking với ASGAverageCPUUtilization mục tiêu 50% là cấu hình gọn nhất.

Vì sao các phương án khác sai

  • D (predictive scaling) — đây là phương án gần nhất và là một tính năng rất mạnh, nhưng nó co giãn TRƯỚC dựa trên dự đoán, không phải khi CPU vượt ngưỡng. Nó cũng cần lịch sử dữ liệu để học. (Trong thực tế, kết hợp predictive với dynamic là cấu hình tốt nhất — predictive lo phần nền, dynamic lo phần bất ngờ.)

  • A (co giãn theo lịch) — chỉ hợp với mẫu tải biết trước: giờ hành chính, ngày khuyến mãi. Nó không nhìn tới CPU chút nào.

  • C (co giãn theo sự kiện) — không phải một kiểu co giãn chính thức của ASG. Có thể dựng bằng EventBridge gọi API, nhưng đó là tự chế, và ngưỡng CPU thì đã có dynamic scaling lo.

Ghi nhớ

⚠ Bốn kiểu co giãn của Auto Scaling — bảng phải thuộc: | Kiểu | Kích hoạt bởi | |---|---| | Dynamic (theo nhu cầu) | CloudWatch alarm trên chỉ số | | Scheduled | thời điểm định trước | | Predictive | dự đoán bằng học máy | | Manual | người tự đổi desired capacity |

Từ khoá nhận diện:

"khi CPU vượt X%" → dynamic scaling "mỗi ngày 8 giờ sáng tăng lên" → scheduled scaling "tải theo chu kỳ, muốn co giãn trước" → predictive scaling "giữ một chỉ số quanh giá trị mục tiêu" → Target Tracking "thêm N máy theo từng bậc ngưỡng" → Step Scaling

Ba chính sách dynamic scaling Nội dung
Target Tracking đơn giản nhất — AWS khuyến nghị; giữ chỉ số quanh mục tiêu
Step Scaling nhiều bậc theo mức vượt ngưỡng
Simple Scaling cách cũ, một hành động rồi chờ cooldown
Chỉ số dựng sẵn cho Target Tracking Nội dung
ASGAverageCPUUtilization CPU trung bình của nhóm
ALBRequestCountPerTarget số request mỗi target — thường tốt hơn CPU
ASGAverageNetworkIn / Out lưu lượng mạng
Chỉ số tuỳ chỉnh RAM (qua agent), độ dài hàng đợi SQS
Ba khoảng thời gian dễ nhầm — nhắc lại Nội dung
Cooldown sau một hành động, chờ bao lâu mới làm tiếp (Simple Scaling)
Instance warm-up máy mới cần bao lâu mới được tính vào chỉ số
Health check grace period bao lâu sau khi khởi chạy mới bắt đầu kiểm tra sức khoẻ
Vì sao CPU không phải lúc nào cũng là chỉ số tốt Nội dung
Instance họ T bị throttle CPU hiển thị thấp trong khi máy đã kiệt sức
Ứng dụng ngốn bộ nhớ RAM cạn mà CPU vẫn thấp
Ứng dụng chờ I/O CPU thấp nhưng độ trễ cao
Thay thế tốt hơn ALBRequestCountPerTarget hoặc TargetResponseTime

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Chính sách nào đang áp | describe-policies --auto-scaling-group-name <ten> | | Có co giãn dao động không | Activity history — scale out rồi scale in liên tục | | Alarm có kích hoạt không | describe-alarm-history |

Và một lời khuyên khi chọn chính sách: hãy bắt đầu bằng Target Tracking, và chỉ chuyển sang Step Scaling khi bạn thật sự cần kiểm soát theo bậc. Target Tracking tự tính toán số máy cần thêm bớt, tự tạo và quản lý các CloudWatch alarm bên dưới, và tự tránh dao động — ba việc mà nếu tự làm bằng Step Scaling thì bạn phải tinh chỉnh rất lâu mới đạt được kết quả tương đương.

Câu 242 Domain 6: Cost and Performance Optimization

A company stores its data on Amazon S3 Glacier. For last month's billing cycle, the manager has noticed some retrieval charges for data on S3 Glacier, although, data has always been retrieved from Glacier with no charges for the earlier billing cycles.

As a SysOps Administrator, which of the following represents the underlying reason for this behavior?

  1. A

    The AWS account holding S3 Glacier resources is member of more than one AWS organization

  2. B

    Amazon S3 Glacier offers free retrieval for three months from starting of the service

  3. C

    You can retrieve 10 GB of your Amazon S3 Glacier data per month for free

  4. D

    You can retrieve 5 GB of your Amazon S3 Glacier data per month for free

Xem giải thích

Đáp án

C — Bạn được lấy MIỄN PHÍ 10 GB dữ liệu từ Amazon S3 Glacier mỗi tháng.

Vì sao đúng

Glacier có một hạn mức lấy dữ liệu miễn phí hằng tháng, và vượt qua nó là bắt đầu tính tiền.

⚠ Điểm mấu chốt — hạn mức miễn phí 10 GB mỗi tháng:

Các tháng trước: lấy dưới 10 GB
        ↓
    → không phát sinh phí lấy dữ liệu
    → đội vận hành tưởng việc lấy dữ liệu luôn miễn phí

Tháng này: lấy vượt 10 GB
        ↓
    → phần vượt bị tính tiền
    → xuất hiện khoản "retrieval charges" trên hoá đơn
        ↓
    → đúng như tình huống của đề

⚠ Và chi phí lấy dữ liệu phụ thuộc rất nhiều vào tốc độ bạn chọn:

Tốc độ lấy Thời gian Giá tương đối
Expedited 1–5 phút đắt nhất
Standard 3–5 giờ trung bình
Bulk 5–12 giờ rẻ nhất

Với Deep Archive thì chỉ có Standard (12 giờ) và Bulk (48 giờ).

⚠ Hai bẫy chi phí khác của lớp lưu trữ archive — đáng nhớ cùng lúc:

Thời gian lưu tối thiểu
        ↓
    Glacier Flexible Retrieval : 90 ngày
    Glacier Deep Archive       : 180 ngày
        ↓
    → xoá sớm hơn vẫn bị tính tiền cho đủ thời gian đó

Phí theo SỐ ĐỐI TƯỢNG
        ↓
    → hàng triệu tệp nhỏ tốn hơn nhiều so với vài tệp lớn
    → nên GOM tệp nhỏ lại trước khi archive

Vì sao các phương án khác sai

  • D (miễn phí 5 GB mỗi tháng) — đây là phương án gần nhất và chỉ sai ở con số. Con số 5 GB là hạn mức miễn phí của S3 Standard trong gói Free Tier, không phải của Glacier retrieval.

  • B (miễn phí lấy dữ liệu trong ba tháng đầu) — bịa; hạn mức miễn phí của Glacier là hằng tháng, không có ưu đãi theo giai đoạn.

  • A (tài khoản thuộc nhiều AWS Organization) — không thể: một tài khoản AWS chỉ thuộc đúng MỘT tổ chức tại một thời điểm.

Ghi nhớ

⚠ Ba lớp Glacier — bảng phải thuộc: | Lớp | Thời gian lấy | Lưu tối thiểu | |---|---|---| | Glacier Instant Retrieval | mili giây | 90 ngày | | Glacier Flexible Retrieval | phút tới 5–12 giờ | 90 ngày | | Glacier Deep Archive | 12–48 giờ | 180 ngày |

Từ khoá nhận diện:

"phí lấy dữ liệu Glacier bất ngờ" → vượt hạn mức 10 GB/tháng "cần lấy ngay lập tức" → Glacier Instant Retrieval "rẻ nhất, chấp nhận chờ" → Deep Archive + Bulk retrieval "xoá sớm vẫn bị tính tiền" → thời gian lưu tối thiểu "không đoán được mẫu truy cập" → S3 Intelligent-Tiering

Các loại phí của S3 archive — bảng đầy đủ Nội dung
Lưu trữ theo GB mỗi tháng — rất rẻ
Lấy dữ liệu (retrieval) theo GB, tuỳ tốc độ
Request theo số lời gọi
Phí theo đối tượng 8 KB metadata + 32 KB index cho mỗi đối tượng
Chuyển lớp (transition) theo SỐ ĐỐI TƯỢNG — hàng triệu tệp nhỏ rất tốn
Xoá sớm tính đủ thời gian lưu tối thiểu
Cách tránh bất ngờ về chi phí archive Việc
Gom tệp nhỏ trước khi archive giảm phí theo đối tượng
Dùng Bulk retrieval khi không gấp rẻ hơn Standard nhiều lần
S3 Storage Lens xem có bao nhiêu đối tượng, kích thước trung bình
AWS Budgets cảnh báo khi chi phí S3 vượt ngưỡng
Cost Anomaly Detection phát hiện tăng bất thường
S3 Intelligent-Tiering — lựa chọn tránh mọi bẫy trên Nội dung
Cơ chế AWS tự chuyển lớp theo mẫu truy cập thực tế
Không có phí lấy dữ liệu giữa các tầng truy cập
Không có thời gian lưu tối thiểu cho tầng thường xuyên/ít thường xuyên
Phí một khoản giám sát nhỏ theo đối tượng
Hợp khi không đoán được mẫu truy cập

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Đã lấy bao nhiêu GB tháng này | Cost Explorer, lọc theo usage type Retrieval | | Dữ liệu đang ở lớp nào | head-object, xem StorageClass | | Có bao nhiêu đối tượng | S3 Storage Lens hoặc S3 Inventory |

Và một lời khuyên trước khi chuyển khối dữ liệu lớn xuống Glacier: hãy ước tính chi phí LẤY LẠI, không chỉ chi phí lưu trữ. Glacier rẻ tới mức khó tin khi cất, nhưng nếu một ngày nào đó bạn cần lấy toàn bộ ra — vì kiểm toán, vì di chuyển hệ thống, vì khôi phục thảm hoạ — thì hoá đơn của tháng đó có thể lớn hơn cả năm tiền lưu trữ cộng lại.

Câu 243 Domain 4: Security and Compliance

Your bank has an on-premise key store and wants to migrate it to the cloud. The bank needs to ensure that the keys were isolated on a self-managed encryption module for compliance reasons.

What service do you recommend?

  1. A

    S3 SSE

  2. B

    GuardDuty

  3. C

    KMS

  4. D

    CloudHSM

Xem giải thích

Đáp án

D — AWS CloudHSM.

Vì sao đúng

Cụm từ quyết định trong đề là "module mã hoá TỰ QUẢN, cô lập" — và đó chính là định nghĩa của CloudHSM.

⚠ Điểm mấu chốt — CloudHSM cho bạn thiết bị phần cứng riêng, AWS không truy cập được:

CloudHSM
        ↓
    Thiết bị HSM VẬT LÝ dành riêng cho bạn
        ↓
    → BẠN quản lý người dùng và khoá bên trong
    → AWS KHÔNG có quyền truy cập vào khoá
    → AWS chỉ lo phần cứng, mạng, sao lưu thiết bị
        ↓
    Đạt chuẩn FIPS 140-2 Level 3
        ↓
    → yêu cầu tuân thủ của ngành ngân hàng thường đòi mức này

⚠ So sánh với KMS — khác biệt nằm ở AI KIỂM SOÁT:

KMS (multi-tenant)
        ↓
    AWS vận hành, HSM DÙNG CHUNG giữa các khách hàng
    (khoá vẫn cô lập về mặt logic)
        ↓
    → AWS quản lý vòng đời phần cứng
    → chuẩn FIPS 140-2 Level 3 cho phần HSM
    → bạn kiểm soát qua key policy, KHÔNG chạm vào HSM

CloudHSM (single-tenant)
        ↓
    Cụm HSM RIÊNG của bạn trong VPC của bạn
        ↓
    → bạn tự tạo user, tự quản khoá, tự sao lưu logic
    → AWS KHÔNG BAO GIỜ thấy khoá của bạn

⚠ Và những việc chỉ CloudHSM làm được:

Tự quản lý người dùng HSM và quyền của họ
Dùng thư viện chuẩn: PKCS#11, JCE, CNG/KSP
Tự sinh và giữ khoá bất đối xứng cho ký số
Làm HSM cho Certificate Authority riêng
Bảo vệ khoá riêng SSL cho web server
Thực hiện các thao tác mật mã mà KMS không hỗ trợ

Vì sao các phương án khác sai

  • C (KMS) — đây là phương án gần nhất và là dịch vụ quản lý khoá chính của AWS. Nhưng KMS dùng HSM chia sẻ do AWS vận hành; bạn không "tự quản" module nào. Với yêu cầu tuân thủ đòi module cô lập tự quản như trong đề, KMS chưa đủ. (Có KMS Custom Key Store dùng CloudHSM làm nền — nhưng khi đó bạn vẫn phải có CloudHSM.)

  • A (S3 SSE) — chỉ là cách mã hoá dữ liệu trong S3, không phải một hệ thống quản lý khoá cho toàn tổ chức, và không có module phần cứng nào để bạn quản.

  • B (GuardDuty) — dịch vụ phát hiện mối đe doạ. Không liên quan gì tới quản lý khoá.

Ghi nhớ

⚠ KMS và CloudHSM — bảng phải thuộc: | | AWS KMS | AWS CloudHSM | |---|---|---| | Mô hình | multi-tenant, AWS vận hành | single-tenant, cụm riêng của bạn | | AWS thấy khoá không | không (khoá không rời HSM) | KHÔNG, và AWS cũng không quản user | | Ai quản người dùng | IAM | bạn tự quản trong HSM | | Chuẩn | FIPS 140-2 Level 3 | FIPS 140-2 Level 3 | | Tích hợp dịch vụ AWS | rất sâu và rộng | hạn chế (qua custom key store) | | Chi phí | theo khoá + theo lời gọi | theo GIỜ mỗi HSM — đắt hơn nhiều | | Vận hành | AWS lo hết | bạn lo cụm, user, sao lưu logic |

Từ khoá nhận diện:

"module mã hoá tự quản, cô lập" → CloudHSM "FIPS 140-2 Level 3 với thiết bị riêng" → CloudHSM "quản lý khoá đơn giản, tích hợp sâu với AWS" → KMS "khoá nằm trong HSM của tôi nhưng vẫn dùng KMS" → KMS Custom Key Store "khoá nằm ở hệ thống NGOÀI AWS" → KMS External Key Store (XKS)

Ba mô hình kết hợp — biết cả ba là hiểu bức tranh đầy đủ Nội dung
KMS thuần đơn giản nhất, tích hợp sâu nhất
KMS Custom Key Store (CloudHSM) dùng API của KMS, nhưng khoá nằm trong CloudHSM của bạn
KMS External Key Store (XKS) khoá nằm trong HSM NGOÀI AWS, KMS gọi ra
Lợi ích của hai cái sau giữ được tích hợp KMS mà vẫn kiểm soát khoá
Vận hành CloudHSM — những gì bạn phải tự lo Nội dung
Tạo và quản lý user HSM CU (crypto user), CO (crypto officer)
Sao lưu khoá CloudHSM sao lưu cụm, nhưng bạn quản nội dung
Sẵn sàng cao ít nhất 2 HSM ở 2 AZ khác nhau
Mất mọi user CO KHÔNG khôi phục được cụm — mất khoá vĩnh viễn
Client SDK cài trên máy ứng dụng, cấu hình kết nối tới cụm
Các trường hợp thường cần CloudHSM Nội dung
Ngân hàng, thanh toán PCI DSS, PCI PIN, yêu cầu HSM chuyên dụng
Certificate Authority riêng bảo vệ khoá gốc của CA
Ký số tài liệu, ký mã nguồn
Bảo vệ khoá riêng SSL offload TLS
Tuân thủ đòi kiểm soát vật lý quy định của một số quốc gia

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Cụm HSM có khoẻ không | describe-clusters, trạng thái ACTIVE | | Có đủ HSM cho sẵn sàng cao không | ít nhất 2, ở 2 AZ | | Ứng dụng kết nối được không | dùng công cụ cloudhsm_mgmt_util |

Và một cảnh báo rất nghiêm túc trước khi chọn CloudHSM: nếu bạn mất toàn bộ chứng chỉ của crypto officer, cụm HSM và mọi khoá bên trong sẽ mất VĨNH VIỄN, và AWS không thể giúp gì. Đó chính là cái giá của việc "AWS không có quyền truy cập" — nó là lý do bạn chọn CloudHSM, và cũng là rủi ro vận hành lớn nhất của nó. Hãy có quy trình lưu giữ chứng chỉ CO nghiêm ngặt trước khi đưa bất kỳ khoá sản xuất nào vào.

Câu 244 Domain 5: Networking and Content Delivery

As a SysOps Administrator, you have been tasked to optimize the costs for an AWS Storage Gateway. The development team has reported that the cache disk space of the Gateway is not even utilized to 50 percent of its actual capacity.

Which of the following would you recommend for this use case?

  1. A

    Create a new gateway with the cache space that you need

  2. B

    Remove the disk(s) that are allocated as cache disks for the existing gateway and resize the disk to the capacity needed

  3. C

    Shut down the gateway before removing the disk. After the gateway is shut down, you can remove the cache disk and attach a different one

  4. D

    Reduce the extra storage on the cache disk by decreasing the upload buffer size from Storage Gateway console

Xem giải thích

Đáp án

A — Tạo một gateway MỚI với dung lượng bộ đệm mà bạn cần.

Vì sao đúng

Storage Gateway có một ràng buộc mà nhiều người chỉ phát hiện khi cần tối ưu chi phí: đĩa đệm không thu nhỏ được.

⚠ Điểm mấu chốt — đĩa đã cấp làm cache là gắn vĩnh viễn với gateway đó:

Đĩa được cấp cho gateway làm cache
        ↓
    Gateway ghi cấu trúc dữ liệu nội bộ lên đó
        ↓
    → KHÔNG gỡ ra được
    → KHÔNG thu nhỏ được
    → KHÔNG thay bằng đĩa khác được
        ↓
    Chỉ THÊM đĩa cache mới là được
        ↓
    → muốn giảm dung lượng: TẠO GATEWAY MỚI

⚠ Quy trình chuyển sang gateway mới:

1. Dựng gateway MỚI với đĩa cache đúng kích thước cần
2. Kích hoạt và cấu hình file share / volume tương ứng
3. Chuyển client sang mount vào gateway mới
4. Xác nhận dữ liệu đã đồng bộ đầy đủ lên AWS
5. Xoá gateway cũ và giải phóng đĩa

⚠ Và bài học rút ra để lần sau không lặp lại:

Cấp đĩa cache theo NHU CẦU THỰC TẾ, không cấp thừa
        ↓
    Đo bằng chỉ số CachePercentUsed
        ↓
    → dưới 50% liên tục: cấp thừa, tốn tiền đĩa
    → trên 90% liên tục: thiếu, hiệu năng sẽ sập
        ↓
    Có thể THÊM đĩa cache về sau nếu thiếu
        ↓
    → nên bắt đầu vừa phải rồi mở rộng dần

Vì sao các phương án khác sai

  • C (tắt gateway trước khi gỡ đĩa, rồi gắn đĩa khác) — đây là phương án gần nhất và nghe rất hợp lý về mặt vận hành. Nhưng gỡ đĩa cache — dù đã tắt gateway — sẽ làm hỏng gateway: gateway giữ trạng thái nội bộ trên đĩa đó và không tự dựng lại được. AWS khuyến cáo không làm việc này.

  • B (gỡ đĩa cache của gateway hiện tại rồi resize xuống dung lượng cần) — cùng vấn đề: không gỡ được, không thu nhỏ được.

  • D (giảm dung lượng thừa bằng cách giảm upload buffer từ console) — nhầm hai loại đĩa khác nhau: cache disk và upload buffer là hai thứ riêng biệt, và giảm cái này không giải phóng cái kia. Ngoài ra upload buffer cũng không thu nhỏ được.

Ghi nhớ

⚠ Hai loại đĩa cục bộ của Storage Gateway — bảng phải thuộc: | Loại đĩa | Việc | |---|---| | Cache disk | lưu dữ liệu HAY DÙNG để đọc nhanh tại chỗ | | Upload buffer | đệm dữ liệu CHỜ ĐẨY LÊN AWS | | Cả hai | THÊM được, KHÔNG gỡ, KHÔNG thu nhỏ | | Muốn giảm | tạo gateway mới |

Từ khoá nhận diện:

"giảm dung lượng đĩa cache" → tạo gateway mới "thêm dung lượng cache" → thêm đĩa, làm được ngay "cache đầy, hiệu năng sập" → CachePercentUsed "dữ liệu chưa lên AWS" → UploadBufferPercentUsed "gateway hỏng" → dựng gateway mới, khôi phục từ snapshot

Chỉ số cần theo dõi của Storage Gateway Ý nghĩa
CachePercentUsed cache đầy bao nhiêu — trên 90% là hiệu năng tụt
CacheHitPercent tỷ lệ trúng cache — thấp là cache quá nhỏ
UploadBufferPercentUsed đầy là gateway kẹt, ngừng nhận ghi
CloudBytesUploaded dữ liệu đã đẩy lên AWS
WorkingStorageUsed dung lượng đang dùng
Đĩa cache — quy tắc cấp phát Nội dung
Tối thiểu 150 GiB cho cache, 150 GiB cho upload buffer
Nguyên tắc cache nên đủ chứa toàn bộ dữ liệu NÓNG
Đo bằng CacheHitPercent — dưới 80% là nên tăng
Loại đĩa SSD cho hiệu năng, đặc biệt với Volume Gateway
Cấp thừa tốn tiền đĩa mà không tăng hiệu năng
Bốn loại Storage Gateway — nhắc lại Giao thức
File Gateway NFS, SMB
Volume Gateway iSCSI (khối)
Tape Gateway iSCSI VTL
FSx File Gateway SMB
Những việc KHÔNG nên làm với gateway Nội dung
Gỡ đĩa cache hoặc upload buffer làm hỏng gateway
Khôi phục gateway VM từ snapshot hypervisor trạng thái lệch với AWS → hỏng dữ liệu
Ghi thẳng vào bucket mà không RefreshCache client không thấy tệp mới
Thay đổi cấu hình VM tuỳ tiện nên theo đúng khuyến nghị của AWS

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Cache đang dùng bao nhiêu | chỉ số CachePercentUsed trong CloudWatch | | Tỷ lệ trúng cache | CacheHitPercent — quyết định cache có đủ không | | Đĩa nào đang làm gì | list-local-disks của Storage Gateway |

Và một lời khuyên khi lập kế hoạch dung lượng cho gateway mới: hãy dùng CacheHitPercent chứ đừng dùng CachePercentUsed để quyết định kích thước cache. Một cache dùng 40% nghe như đang thừa, nhưng nếu tỷ lệ trúng cache chỉ đạt 60% thì thực ra dữ liệu nóng của bạn đang bị đẩy ra liên tục — và trong trường hợp đó, thu nhỏ cache sẽ khiến hiệu năng tệ đi rõ rệt, đúng lúc bạn tưởng mình vừa tiết kiệm được tiền.

Câu 245 Domain 1: Monitoring, Logging, and Remediation

An Amazon EC2 instance has been marked non-compliant by the AWS Config rule. After a periodic rule evaluation, the resource continues to be in a non-compliant state.

What is the outcome of this periodic rule evaluation?

  1. A

    Once a resource is marked non-compliant, the Config rule will not run on the resource again till the state changes

  2. B

    AWS Config will not send a new notification

  3. C

    AWS Config will send a notification with the current status of the resource

  4. D

    AWS Config will not record configuration changes that did not result from API activity on the resource. Hence, the Config rule is not triggered

Xem giải thích

Đáp án

B — AWS Config sẽ KHÔNG gửi thông báo mới.

Vì sao đúng

AWS Config chỉ gửi thông báo khi có gì đó THAY ĐỔI — chứ không phải mỗi lần đánh giá lại.

⚠ Điểm mấu chốt — thông báo dựa trên THAY ĐỔI TRẠNG THÁI, không dựa trên lần chạy:

Lần đánh giá 1: COMPLIANT → NON_COMPLIANT
        ↓
    → CÓ thay đổi → GỬI thông báo

Lần đánh giá 2: NON_COMPLIANT → NON_COMPLIANT
        ↓
    → KHÔNG có thay đổi → KHÔNG gửi thông báo

Lần đánh giá 3: NON_COMPLIANT → COMPLIANT
        ↓
    → CÓ thay đổi → GỬI thông báo

⚠ Vì sao AWS thiết kế như vậy:

Một tài nguyên vi phạm có thể ở trạng thái đó hàng tuần
        ↓
    Nếu mỗi lần đánh giá đều gửi thông báo
        ↓
    → hàng nghìn thông báo trùng lặp mỗi ngày
    → đội vận hành sẽ lọc bỏ hết
    → mất tác dụng cảnh báo hoàn toàn
        ↓
    → chỉ báo khi có THAY ĐỔI là thiết kế đúng

⚠ Nhưng quy tắc VẪN CHẠY, và trạng thái vẫn được cập nhật:

Config vẫn đánh giá theo đúng chu kỳ
        ↓
    Vẫn ghi lại kết quả evaluation
    Vẫn cập nhật timestamp của lần đánh giá gần nhất
        ↓
    → chỉ là KHÔNG phát thông báo mới
        ↓
    → bảng compliance vẫn hiện đúng tình trạng hiện tại

Vì sao các phương án khác sai

  • C (Config sẽ gửi thông báo với trạng thái hiện tại) — đây là phương án gần nhất và là điều nhiều người mong đợi. Nhưng Config chỉ gửi khi trạng thái ĐỔI, không gửi lại trạng thái không đổi.

  • A (một khi bị đánh dấu non-compliant, quy tắc sẽ không chạy lại cho tới khi trạng thái đổi) — sai một cách vòng vo: quy tắc VẪN chạy theo chu kỳ — nếu không chạy thì làm sao biết trạng thái đã đổi hay chưa.

  • D (Config không ghi lại thay đổi không đến từ hoạt động API, nên quy tắc không được kích hoạt) — nhầm sang một chuyện khác: đây là quy tắc periodic, nó chạy theo thời gian, không phụ thuộc vào việc có sự kiện API hay không.

Ghi nhớ

⚠ Khi nào AWS Config gửi thông báo — bảng phải thuộc: | Tình huống | Có thông báo | |---|---| | Trạng thái tuân thủ THAY ĐỔI | CÓ | | Trạng thái giữ nguyên sau đánh giá | KHÔNG | | Cấu hình tài nguyên thay đổi | CÓ (configuration item) | | Tài nguyên được tạo hoặc bị xoá | CÓ | | Quy tắc chạy mà không có gì đổi | KHÔNG |

Từ khoá nhận diện:

"vẫn non-compliant sau lần đánh giá tiếp theo" → KHÔNG có thông báo mới "muốn nhắc lại định kỳ về vi phạm" → tự dựng: EventBridge Scheduler + Lambda đọc compliance "ép đánh giá lại ngay" → start-config-rules-evaluation "tự sửa khi vi phạm" → remediation action "chặn từ đầu" → SCP, Config chỉ phát hiện SAU khi đã xảy ra

Hai kiểu trigger của Config rule — nhắc lại Nội dung
Configuration change đánh giá ngay khi tài nguyên đổi
Periodic đánh giá theo chu kỳ: 1, 3, 6, 12, 24 giờ
Kết hợp cả hai an toàn nhất — một quy tắc mang được cả hai
Nhận thông báo từ Config bằng cách nào Nội dung
SNS topic cấu hình delivery channel
EventBridge quy tắc với source: aws.config
Loại sự kiện ComplianceChangeNotification, ConfigurationItemChangeNotification
Lọc theo tên quy tắc, theo loại tài nguyên, theo trạng thái
Nếu muốn nhắc lại định kỳ về vi phạm chưa xử lý Cách
EventBridge Scheduler gọi Lambda hằng ngày
Lambda gọi describe-compliance-by-config-rule
Gửi báo cáo tổng hợp qua SNS hoặc chat
Security Hub tổng hợp phát hiện và có workflow status để theo dõi
Chi phí Config — nhắc lại Nội dung
Tính theo số bản ghi cấu hình + số lần đánh giá quy tắc
Chu kỳ dày tăng chi phí tuyến tính
Lời khuyên chọn đúng loại tài nguyên cần ghi, đừng bật tất cả

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Tài nguyên nào đang vi phạm | get-compliance-details-by-config-rule | | Lần đánh giá gần nhất | describe-config-rule-evaluation-status | | Ép đánh giá lại | start-config-rules-evaluation |

Và một hệ quả vận hành cần lưu ý về hành vi này: một tài nguyên vi phạm sẽ chỉ báo cho bạn đúng MỘT LẦN, rồi im lặng mãi mãi. Nếu thông báo đầu tiên đó rơi vào lúc không ai để ý — cuối tuần, giữa một sự cố khác — thì vi phạm ấy có thể nằm lại nhiều tháng mà không có tín hiệu nào nhắc lại. Đó là lý do nên có một báo cáo tổng hợp định kỳ bên cạnh cơ chế thông báo theo sự kiện.

Câu 246 Domain 4: Security and Compliance

A SysOps Administrator is not able to launch EC2 instances with an encrypted AMI when using Amazon EC2 Auto Scaling with the instances. The AWS Identity and Access Management (IAM) identities used to create the Amazon EC2 Auto Scaling has administrator permissions.

What could be the underlying issue and how do you propose to fix it?

  1. A

    The AMIs may have been encrypted using AWS-managed customer master keys (CMKs). Additional permissions to be provided to the Auto Scaling Group to fix the issue

  2. B

    The AMIs may have been encrypted using customer-managed customer master keys (CMKs). Additional permissions need to be provided to the Auto Scaling Group to fix the issue

  3. C

    The Auto Scaling Group needs service-linked role to access KMS. Create a service-linked role on the ASG to fix the issue

  4. D

    The service-linked role of the ASG might have been deleted. Check if the role still exists

Xem giải thích

Đáp án

B — AMI có thể đã được mã hoá bằng CUSTOMER-MANAGED CMK. Cần cấp thêm quyền cho Auto Scaling Group để sửa lỗi.

Vì sao đúng

Chi tiết quyết định nằm ở nghịch lý mà đề nêu ra: người tạo ASG có quyền quản trị đầy đủ, mà vẫn không khởi chạy được instance.

⚠ Điểm mấu chốt — ASG không dùng quyền của BẠN, nó dùng quyền của SERVICE-LINKED ROLE:

Bạn tạo Auto Scaling group
        ↓
    Nhưng khi ASG khởi chạy instance
        ↓
    Nó dùng service-linked role của chính nó:
        AWSServiceRoleForAutoScaling
        ↓
    → quyền AdministratorAccess của BẠN
      KHÔNG áp cho role đó
        ↓
    → role đó phải được cấp quyền RIÊNG trên CMK

⚠ Bốn quyền mà service-linked role cần trên CMK — thiếu một là hỏng:

kms:Decrypt
kms:GenerateDataKeyWithoutPlaintext
kms:CreateGrant                     ← hay bị quên nhất
kms:DescribeKey
        ↓
    Cấp bằng cách sửa KEY POLICY của CMK:
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling"
  },
  "Action": ["kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext",
             "kms:CreateGrant", "kms:DescribeKey"],
  "Resource": "*"
}

⚠ Vì sao phải là CUSTOMER-MANAGED CMK chứ không phải AWS-managed key:

AWS managed key (aws/ebs)
        ↓
    Key policy KHÔNG SỬA ĐƯỢC
        ↓
    → không cấp quyền cho service-linked role được
    → nhưng AWS đã cấu hình sẵn cho các dịch vụ trong CÙNG tài khoản
        ↓
    → không phải nguồn gốc của lỗi này

Customer-managed CMK
        ↓
    Key policy SỬA ĐƯỢC — và mặc định KHÔNG cho ASG dùng
        ↓
    → đây chính là nguyên nhân

Xem thêm câu #11558 và #11566: cùng tình huống ASG với EBS mã hoá — một câu hỏi nguyên nhân của thông báo lỗi Client.InternalError, một câu hỏi cách sửa khi CMK ở tài khoản khác.

Vì sao các phương án khác sai

  • A (AMI mã hoá bằng AWS-MANAGED CMK, cần cấp thêm quyền cho ASG) — đây là phương án gần nhất và chỉ sai một từ. Với AWS managed key thì không sửa key policy được, nên "cấp thêm quyền" là bất khả thi — và cũng không cần, vì AWS đã cấu hình sẵn cho dịch vụ trong cùng tài khoản.

  • C (ASG cần service-linked role để truy cập KMS, hãy tạo role đó) — service-linked role được AWS TỰ TẠO khi bạn tạo ASG đầu tiên; bạn không tự tạo. Vấn đề không phải thiếu role, mà là role thiếu QUYỀN trên khoá.

  • D (service-linked role có thể đã bị xoá) — nếu vậy thì ASG không hoạt động được chút nào, chứ không riêng gì instance có AMI mã hoá.

Ghi nhớ

⚠ Hai loại khoá KMS — bảng phải thuộc: | | AWS managed key (aws/ebs) | Customer managed key (CMK) | |---|---|---| | Sửa key policy | KHÔNG | CÓ | | Chia sẻ liên tài khoản | KHÔNG | CÓ | | Xoay khoá | tự động, không tắt được | bật thủ công | | Chi phí | miễn phí | có phí theo khoá + lời gọi | | Cấp quyền cho service-linked role | AWS lo sẵn | BẠN phải tự cấp |

Từ khoá nhận diện:

"ASG không khởi chạy được instance có AMI mã hoá" → key policy thiếu quyền cho service-linked role "có AdministratorAccess mà vẫn lỗi" → dịch vụ dùng ROLE của nó, không dùng quyền của bạn "Client.InternalError khi khởi chạy" → thường là quyền KMS "CMK ở tài khoản khác" → copy và mã hoá lại snapshot bằng CMK cùng tài khoản "chia sẻ AMI mã hoá" → phải là CMK, và chia sẻ cả quyền dùng khoá

Vì sao lỗi này khó chẩn đoán Nội dung
Thông báo lỗi rất mơ hồ Client.InternalError: Client error on launch
Không nhắc gì tới KMS
Không có log ứng dụng để đọc máy chưa từng khởi động
Nơi duy nhất thấy lỗi Activity history của ASG
Thường xuất hiện muộn ASG chạy êm nhiều tháng, rồi hỏng ở lần scale-out lúc cao điểm
Ba việc phải làm khi dùng AMI mã hoá với ASG Nội dung
Key policy cho phép AWSServiceRoleForAutoScaling bốn quyền nêu trên
kms:CreateGrant bắt buộc, vì EC2 tạo grant tạm cho mỗi instance
Nếu CMK ở tài khoản khác copy và mã hoá lại snapshot bằng CMK cùng tài khoản với ASG
Cách phòng ngừa Nội dung
Bật "EBS encryption by default" ở cấp Region dùng CMK bạn chỉ định
Cấu hình key policy ngay khi tạo CMK thêm sẵn service-linked role
Kiểm thử scale-out sau mỗi lần đổi AMI đừng chờ tới đêm cao điểm
Cảnh báo trên sự kiện ASG khởi chạy thất bại EventBridge

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Vì sao ASG thất bại | Activity history của ASG — đọc StatusMessage | | Key policy có đủ không | get-key-policy, tìm AWSServiceRoleForAutoScaling | | Snapshot mã hoá bằng khoá nào | describe-snapshots, xem KmsKeyId |

Và một lời khuyên rút ra từ đặc thù của lỗi này: hãy kiểm thử một lần scale-out thật ngay sau khi đổi sang AMI mã hoá, đừng chờ tới lúc hệ thống tự scale. Đây là loại lỗi nằm im rất lâu — mọi thứ chạy hoàn hảo cho tới đúng đêm mà lưu lượng tăng và ASG cần thêm máy, rồi mọi instance mới đều chết ngay khi khởi chạy với một thông báo chẳng nói gì về nguyên nhân thật.

Câu 247 Chọn nhiều đáp án Domain 4: Security and Compliance

Account A has enabled other AWS accounts to upload objects into an Amazon S3 bucket. The bucket owner now wants to give permissions on all objects in the given bucket to another AWS account B.

Which of the following options are correct for the given use case? (Select two)

  1. A

    The AWS account that created the objects must first grant permission to the bucket owner for delegating permissions to other entities

  2. B

    The root user has access to all objects created under it. Use root user to delegate necessary permissions on objects in the S3 bucket

  3. C

    The bucket owner is the owner of all objects in the bucket, irrespective of the AWS account that uploaded the objects

  4. D

    The owner should provide cross-account delegation to users in other AWS accounts

  5. E

    The bucket owner has no permissions on those objects created by other AWS accounts

Xem giải thích

Đáp án

A, E — hai điều đúng:

  • E — Chủ bucket KHÔNG có quyền trên những đối tượng do tài khoản AWS khác tạo ra.
  • A — Tài khoản AWS đã tạo ra đối tượng phải cấp quyền cho chủ bucket TRƯỚC, thì chủ bucket mới uỷ quyền tiếp cho bên khác được.

Vì sao đúng

⚠ Điều E — sở hữu bucket không đồng nghĩa với sở hữu nội dung:

Tài khoản A tải đối tượng lên bucket của tài khoản B
        ↓
    Chủ sở hữu BUCKET  = B
    Chủ sở hữu ĐỐI TƯỢNG = A
        ↓
    → B sở hữu CÁI THÙNG nhưng KHÔNG sở hữu
      những gì bên trong
        ↓
    → B trả tiền lưu trữ, nhưng không đọc được nội dung

⚠ Điều A — chuỗi uỷ quyền phải bắt đầu từ chủ sở hữu đối tượng:

B muốn cấp quyền trên đối tượng cho tài khoản C
        ↓
    Nhưng B không sở hữu đối tượng
        ↓
    → B KHÔNG uỷ quyền được thứ mình không có
        ↓
    Trình tự đúng:
        1. A cấp quyền cho B (qua object ACL
           "bucket-owner-full-control")
        2. B mới cấp tiếp cho C

Đây là nguyên tắc chung của mọi hệ thống phân quyền: không ai trao được quyền mà mình không có.

⚠ Và cách làm hiện đại khiến toàn bộ vấn đề này biến mất:

S3 Object Ownership = BucketOwnerEnforced
        ↓
    → ACL bị VÔ HIỆU HOÁ hoàn toàn
    → CHỦ BUCKET LUÔN SỞ HỮU mọi đối tượng, bất kể ai ghi
        ↓
    → mặc định cho bucket tạo mới từ tháng 4/2023
    → AWS khuyến nghị dùng

Xem thêm câu #11748: cùng chủ đề nhưng ở góc xử lý sự cố — khi việc xuất dữ liệu đã hoàn tất và chủ bucket không đọc được, cách chữa là gọi PutObjectAcl.

Vì sao các phương án khác sai

  • C (chủ bucket là chủ của MỌI đối tượng, bất kể tài khoản nào tải lên) — đây là phương án gần nhất và là điều ai cũng tưởng là đúng. Nó chỉ đúng khi bucket bật BucketOwnerEnforced; với chế độ ACL cũ mà đề đang mô tả thì hoàn toàn sai.

  • D (chủ bucket nên cấp cross-account delegation cho người dùng ở tài khoản khác) — bỏ qua đúng vấn đề: chủ bucket không có quyền để mà uỷ quyền. Phải giải quyết bước A trước.

  • B (dùng root user vì root có quyền trên mọi đối tượng tạo dưới nó) — sai: root của tài khoản B cũng không sở hữu đối tượng của tài khoản A. Quyền sở hữu đối tượng nằm ở tài khoản đã ghi, không phụ thuộc vào root hay IAM user.

Ghi nhớ

⚠ Ba chế độ Object Ownership — bảng phải thuộc: | Chế độ | Ai sở hữu đối tượng | |---|---| | BucketOwnerEnforced | CHỦ BUCKET, luôn luôn — ACL vô hiệu, mặc định mới, AWS khuyến nghị | | BucketOwnerPreferred | chủ bucket, nếu người ghi dùng bucket-owner-full-control | | ObjectWriter | người ghi — cách cũ, nguồn gốc của vấn đề trong đề |

Từ khoá nhận diện:

"chủ bucket không đọc được đối tượng" → object ownership liên tài khoản "phòng từ đầu" → BucketOwnerEnforced hoặc ép ACL bằng bucket policy "chữa sau khi đã ghi" → PutObjectAcl từ tài khoản đã ghi "root sở hữu mọi thứ" → SAI với đối tượng của tài khoản khác "chủ bucket luôn sở hữu" → chỉ đúng với BucketOwnerEnforced

Ép ghi kèm ACL đúng bằng bucket policy Nội dung
Điều kiện s3:x-amz-acl phải là bucket-owner-full-control
Nếu không khớp Deny — request bị từ chối
Kết quả bên ghi buộc phải trao quyền cho chủ bucket
Tốt hơn nữa bật BucketOwnerEnforced — không cần điều kiện nào
Ai trả tiền cho cái gì Nội dung
Lưu trữ chủ BUCKET trả — kể cả đối tượng của người khác
Request chủ bucket trả, trừ khi bật Requester Pays
Requester Pays người gọi trả phí request và phí truyền dữ liệu
Hệ quả B trả tiền cho dữ liệu mà B không đọc được — nghịch lý của chế độ ACL cũ
Chuyển sang BucketOwnerEnforced — cần kiểm tra gì Nội dung
Có quy trình nào đang dựa vào ACL không
Dùng S3 Object Ownership prerequisite check của AWS
Chuyển sang bucket policy cho mọi phân quyền
Sau khi bật ACL bị bỏ qua hoàn toàn, kể cả ACL đã có

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Ai sở hữu một đối tượng | get-object-acl --bucket ... --key ... | | Bucket đang ở chế độ nào | get-bucket-ownership-controls | | Có đối tượng nào thuộc tài khoản khác không | S3 Inventory báo cáo cột owner |

Và một lời khuyên nên áp dụng cho mọi bucket nhận dữ liệu từ bên ngoài: bật BucketOwnerEnforced ngay từ khi tạo bucket. Nó xoá sổ vĩnh viễn cả một lớp vấn đề — chủ bucket không đọc được dữ liệu mình đang trả tiền lưu trữ — và với những bucket cũ thì đây là một trong những thay đổi cấu hình đơn giản nhất mang lại lợi ích lớn nhất, miễn là bạn xác nhận trước rằng không có quy trình nào đang phụ thuộc vào ACL.

Câu 248 Domain 4: Security and Compliance

A SysOps Administrator is updating Amazon S3 bucket policies for a project. The development team has requested read-only access permissions for all the S3 buckets used in the project.

Which of the following is the correct JSON policy for specifying the necessary permissions?

  1. A
    {
      "Statement": [
        {
          "Sid": "AllowEveryoneReadOnlyAccess",
          "Effect": "Allow",
          "Principal": "*",
          "Action": [ "s3:GetObject", "s3:ListBucket" ],
          "Resource": ["urn:aws:s3:::mybucket","urn:aws:s3:::mybucket/*"]
        }
      ]
    }
    
  2. B
    {
      "Statement": [
        {
          "Sid": "AllowEveryoneReadOnlyAccess",
          "Effect": "Allow",
          "Principal": "*",
          "Action": [ "s3:ReadObject", "s3:ListBucket" ],
          "Resource": ["urn:aws:s3:::mybucket"]
        }
      ]
    }
    
  3. C
    {
      "Statement": [
        {
          "Sid": "AllowEveryoneReadOnlyAccess",
          "Effect": "deny",
          "Principal": ".",
          "Action": [ "s3:GetObject", "s3:GetBucket" ],
          "Resource": ["urn:aws:s3:::mybucket"]
        }
      ]
    }
    
  4. D
    {
      "Statement": [
        {
          "Sid": "ReadOnlyAccess",
          "Effect": "read-only",
          "Principal": "*.*",
          "Action": [ "s3:GetObject", "s3:ListBucket" ],
          "Resource": ["urn:aws:s3:::mybucket*"]
        }
      ]
    }
    
Xem giải thích

Đáp án

A — chính sách dùng "Effect": "Allow", hành động s3:GetObject và s3:ListBucket, với Resource gồm CẢ ARN của bucket LẪN ARN của các đối tượng bên trong (/*).

Vì sao đúng

Chính sách này đúng ở ba điểm mà các phương án khác đều sai một hoặc nhiều.

⚠ Điểm thứ nhất — hai hành động khác nhau cần hai loại Resource khác nhau:

s3:ListBucket    → thao tác trên CHÍNH BUCKET
        ↓
    Resource phải là:  arn:aws:s3:::mybucket

s3:GetObject     → thao tác trên ĐỐI TƯỢNG bên trong
        ↓
    Resource phải là:  arn:aws:s3:::mybucket/*
        ↓
    → thiếu một trong hai là chức năng tương ứng KHÔNG hoạt động
    → chỉ phương án A có ĐỦ CẢ HAI

⚠ Điểm thứ hai — tên hành động phải chính xác:

s3:GetObject     ✓ ĐÚNG — tải nội dung một đối tượng
s3:ListBucket    ✓ ĐÚNG — liệt kê đối tượng trong bucket
        ↓
s3:ReadObject    ✗ KHÔNG TỒN TẠI  (phương án B)
s3:GetBucket     ✗ KHÔNG TỒN TẠI  (phương án C)

⚠ Điểm thứ ba — Effect chỉ có đúng hai giá trị:

"Effect": "Allow"   ✓
"Effect": "Deny"    ✓
        ↓
"Effect": "deny"       ✗ PHÂN BIỆT CHỮ HOA/THƯỜNG  (phương án C)
"Effect": "read-only"  ✗ KHÔNG TỒN TẠI            (phương án D)

Ghi nhớ về chất lượng câu hỏi

Cả bốn phương án đều viết urn:aws:s3::: — nhưng tiền tố ĐÚNG của ARN trên AWS là arn:aws:s3:::.

ARN = Amazon Resource Name
        ↓
    Luôn bắt đầu bằng "arn:"
        ↓
    "urn:" là một chuẩn định danh khác, KHÔNG dùng trên AWS
        ↓
    → chính sách viết "urn:" sẽ bị S3 TỪ CHỐI

Đây là lỗi đánh máy trong đề bài, xuất hiện đồng đều ở cả bốn phương án nên không ảnh hưởng tới việc chọn đáp án: A vẫn là phương án duy nhất đúng ở mọi khía cạnh còn lại. Nhưng khi viết chính sách thật, hãy nhớ luôn là arn:aws:s3:::.

Vì sao các phương án khác sai

  • B (s3:ReadObject, và Resource chỉ có ARN bucket) — đây là phương án gần nhất và sai hai chỗ: s3:ReadObject không tồn tại (đúng phải là s3:GetObject), và Resource thiếu ARN đối tượng (/*) nên dù có đúng tên hành động thì cũng không đọc được tệp nào.

  • C (Effect: "deny", Principal: ".", s3:GetBucket) — sai ba chỗ: deny viết thường (JSON của IAM phân biệt chữ hoa thường), Principal: "." vô nghĩa (phải là "*" hoặc một ARN), và s3:GetBucket không tồn tại.

  • D (Effect: "read-only", Principal: "*.*") — sai hai chỗ rõ ràng: read-only không phải giá trị hợp lệ của Effect, và "*.*" không phải cú pháp principal hợp lệ.

Ghi nhớ

⚠ Cấu trúc một câu lệnh trong chính sách IAM/S3 — bảng phải thuộc: | Trường | Giá trị hợp lệ | |---|---| | Effect | CHỈ "Allow" hoặc "Deny" — phân biệt chữ hoa thường | | Principal | "*", hoặc ARN, hoặc {"Service": "..."} — chỉ có ở resource-based policy | | Action | "s3:GetObject", hoặc mảng, hoặc "s3:*" | | Resource | ARN, luôn bắt đầu bằng arn: | | Condition | tuỳ chọn — điều kiện bổ sung | | Sid | tuỳ chọn — nhãn cho câu lệnh |

Từ khoá nhận diện:

"cho phép đọc bucket" → s3:GetObject + s3:ListBucket, hai Resource khác nhau "s3:ReadObject", "s3:GetBucket" → KHÔNG TỒN TẠI "urn:aws:..." → SAI, phải là arn:aws:... "Effect: read-only" → SAI, chỉ có Allow và Deny "quyền chỉ đọc dựng sẵn" → managed policy AmazonS3ReadOnlyAccess

⚠ Hành động S3 và Resource tương ứng — bảng rất hay dùng: | Hành động | Resource phải là | |---|---| | s3:ListBucket | arn:aws:s3:::bucket | | s3:GetBucketLocation | arn:aws:s3:::bucket | | s3:GetObject | arn:aws:s3:::bucket/* | | s3:PutObject | arn:aws:s3:::bucket/* | | s3:DeleteObject | arn:aws:s3:::bucket/* | | Cách nhớ | thao tác trên BUCKET → ARN bucket; thao tác trên ĐỐI TƯỢNG → ARN có /* |

Định dạng ARN của S3 Nội dung
Bucket arn:aws:s3:::ten-bucket
Đối tượng arn:aws:s3:::ten-bucket/duong-dan/tep.txt
Mọi đối tượng arn:aws:s3:::ten-bucket/*
Theo tiền tố arn:aws:s3:::ten-bucket/phong-ke-toan/*
Lưu ý S3 không có Region và account ID trong ARN — vì tên bucket đã là toàn cầu
Cảnh báo bảo mật về chính sách này Nội dung
"Principal": "*" trong bucket policy cho phép CẢ THẾ GIỚI
Nếu chỉ muốn cho đội phát triển dùng ARN của role/user, hoặc aws:PrincipalOrgID
Nên thêm aws:SourceVpce hoặc aws:SourceIp để giới hạn
Block Public Access sẽ chặn chính sách công khai như thế này ở bucket mới

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Chính sách có hợp lệ không | put-bucket-policy sẽ báo lỗi cú pháp ngay | | Ai thật sự truy cập được | IAM Access Analyzer for S3 | | Quyền hiệu lực | IAM Policy Simulator |

Và một mẹo tránh gần hết các lỗi kiểu này: hãy dùng trình soạn chính sách trực quan của IAM Console hoặc iam policy validation thay vì gõ JSON bằng tay. Nó tự sinh đúng cấu trúc, gợi ý đúng tên hành động, và cảnh báo ngay khi Resource không khớp với loại hành động — ba lỗi mà cả ba phương án sai trong câu hỏi này đều mắc phải.

Câu 249 Domain 4: Security and Compliance

A digital marketing company that manages customer data for its clients has seen a spike in traffic that seems to be malicious. The traffic is served via the Amazon CloudFront service. The company wants to set up strong security to keep their server instances and databases secure and also be able to replicate the same security processes across multiple AWS accounts that the company holds.

As a SysOps Administrator, which of these would you suggest as an optimal solution that can be quickly implemented and replicated?

  1. A

    Configure Security Groups on CloudFront to deny access to IP addresses that seem to send the malicious traffic. The Security Group settings can be exported out to another AWS account for easy replication

  2. B

    Configure AWS Firewall Manager to create a secure barrier on CloudFront. Settings can be replicated across accounts by manually exporting the Firewall Manager configuration

  3. C

    Configure AWS Web Application Firewall (WAF) on Amazon EC2 instances to keep the instances as well as the databases safe. WAF configured on CloudFront increases latency for users accessing the application. WAF configuration can be replicated using CloudFormation templates

  4. D

    Configure AWS Web Application Firewall (WAF) on CloudFront to keep the AWS infrastructure safe from malicious attacks. Use AWS Firewall Manager to replicate and manage the WAF configurations across AWS accounts

Xem giải thích

Đáp án

D — Cấu hình AWS WAF trên CloudFront để bảo vệ hạ tầng, và dùng AWS Firewall Manager để nhân bản, quản lý cấu hình WAF trên nhiều tài khoản AWS.

Vì sao đúng

Đề nêu hai yêu cầu, và mỗi dịch vụ giải quyết một yêu cầu:

Đề yêu cầu Dịch vụ
Chặn lưu lượng độc hại AWS WAF gắn vào CloudFront
Nhân bản cùng chính sách sang nhiều tài khoản AWS Firewall Manager

⚠ Điểm mấu chốt thứ nhất — WAF phải gắn ở ĐIỂM VÀO, tức là CloudFront:

Lưu lượng độc hại → CloudFront → ALB → EC2 → RDS
        ↓
    Gắn WAF ở CLOUDFRONT (điểm vào ngoài cùng)
        ↓
    → chặn ngay tại EDGE, gần người gửi nhất
    → request độc hại KHÔNG BAO GIỜ tới hạ tầng của bạn
    → bảo vệ cả EC2 lẫn cơ sở dữ liệu phía sau
        ↓
    Gắn WAF ở EC2 (phương án C)
        ↓
    → không làm được: WAF chỉ gắn vào CloudFront, ALB,
      API Gateway, AppSync, Cognito, App Runner

⚠ Điểm mấu chốt thứ hai — Firewall Manager quản lý tập trung:

AWS Firewall Manager
        ↓
    Định nghĩa một CHÍNH SÁCH BẢO MẬT ở tài khoản quản trị
        ↓
    Tự động áp cho MỌI tài khoản trong Organizations
        ↓
    → tài nguyên MỚI tạo cũng tự động được bảo vệ
    → tài khoản MỚI thêm vào tổ chức cũng vậy
    → không phải sao chép tay, không phải nhớ làm lại

⚠ Và Firewall Manager quản lý được nhiều hơn WAF:

AWS WAF rules
AWS Shield Advanced
Security Group (kiểm tra và sửa)
AWS Network Firewall
Route 53 Resolver DNS Firewall

Vì sao các phương án khác sai

  • B (dùng Firewall Manager để tạo rào chắn trên CloudFront, nhân bản bằng cách xuất cấu hình thủ công) — đây là phương án gần nhất và vế đầu gần đúng. Nhưng nó hiểu sai vai trò: Firewall Manager không tự tạo rào chắn — nó quản lý và phân phối chính sách WAF/Shield. Và vế "xuất cấu hình thủ công" trái hẳn mục đích của dịch vụ, vốn là tự động áp dụng.

  • C (cấu hình WAF trên EC2, vì WAF trên CloudFront làm tăng độ trễ) — sai hai chỗ: WAF KHÔNG gắn được vào EC2, và WAF ở CloudFront không làm tăng độ trễ đáng kể — ngược lại, chặn ở edge còn giảm tải cho hạ tầng phía sau.

  • A (dùng Security Group trên CloudFront) — CloudFront không nằm trong VPC, nên không gắn Security Group được. Ngoài ra Security Group không có luật Deny để chặn IP cụ thể.

Ghi nhớ

⚠ WAF gắn được vào đâu — bảng phải thuộc: | Gắn được | KHÔNG gắn được | |---|---| | CloudFront | EC2 instance | | Application Load Balancer | Network Load Balancer | | API Gateway | S3 (trực tiếp) | | AppSync | RDS | | Cognito User Pool | | | App Runner, Verified Access | |

Từ khoá nhận diện:

"chặn tấn công tầng ứng dụng" → AWS WAF "quản lý WAF trên nhiều tài khoản" → AWS Firewall Manager "chống DDoS nâng cao" → AWS Shield Advanced "WAF trên EC2 hoặc NLB" → KHÔNG GẮN ĐƯỢC "Security Group cho CloudFront" → KHÔNG CÓ "phát hiện hành vi bất thường" → GuardDuty

Các loại rule của WAF Việc
Managed rule groups AWS và bên thứ ba cung cấp sẵn — OWASP Top 10, bot, IP xấu
Rate-based rule giới hạn số request từ một IP trong 5 phút
IP set chặn hoặc cho phép danh sách IP
Geo match chặn theo quốc gia
String / regex match khớp mẫu trong URI, header, body
Bot Control phân biệt bot tốt và bot xấu
Captcha / Challenge thử thách thay vì chặn thẳng
Firewall Manager — điều kiện và khả năng Nội dung
Bắt buộc có AWS Organizations
Cần bật AWS Config ở mọi tài khoản
Chỉ định một tài khoản quản trị Firewall Manager
Áp chính sách theo OU, tag, hoặc danh sách tài khoản
Tự động áp cho tài nguyên MỚI đây là giá trị lớn nhất
Chế độ audit (chỉ báo) hoặc enforce (tự sửa)
Ba lớp phòng thủ nên có cùng lúc Nội dung
Shield Standard miễn phí, tự động — chống DDoS tầng 3/4
WAF chống tấn công tầng 7 — SQL injection, XSS, bot
Shield Advanced có phí — bảo vệ nâng cao, hoàn tiền chi phí do DDoS, đội ứng cứu

Ba việc kiểm chứng: | Việc | Cách | |---|---| | WAF có đang chặn gì không | WAF sampled requests và CloudWatch metrics | | Có tài nguyên nào chưa được bảo vệ | Firewall Manager compliance dashboard | | Rule có chặn nhầm không | chạy ở chế độ Count trước khi chuyển sang Block |

Và một lời khuyên bắt buộc khi triển khai WAF lần đầu: luôn bật rule ở chế độ Count trong vài ngày trước khi chuyển sang Block. Managed rule group rất mạnh nhưng cũng rất dễ chặn nhầm lưu lượng hợp lệ — một biểu mẫu có ký tự đặc biệt, một API nhận JSON dài, một ứng dụng di động có user agent lạ. Chế độ Count cho bạn thấy chính xác những gì sẽ bị chặn mà không làm phiền một khách hàng nào.

Câu 250 Domain 5: Networking and Content Delivery

Your company's main website is deployed on Amazon S3, and distributed by CloudFront. You have set up bucket policies on S3 to ensure only CloudFront can access your bucket. You would like your website URL to be https://johntrucks.com/ .

In Route 53, which type of record should you use?

  1. A

    CNAME

  2. B

    AAAA

  3. C

    A

  4. D

    Alias

Xem giải thích

Đáp án

D — Dùng bản ghi Alias.

Vì sao đúng

Có hai lý do độc lập khiến Alias là lựa chọn duy nhất đúng ở đây.

⚠ Lý do thứ nhất — johntrucks.com là ZONE APEX:

https://johntrucks.com/     ← tên miền GỐC, không có "www"
        ↓
    Chuẩn DNS CẤM tạo CNAME ở zone apex
        ↓
    (vì zone apex đã bắt buộc có bản ghi SOA và NS,
     mà CNAME không đứng cùng bản ghi nào khác được)
        ↓
    → CNAME BỊ LOẠI ngay lập tức

⚠ Lý do thứ hai — đích là CloudFront, một tài nguyên AWS:

Alias record chỉ trỏ tới TÀI NGUYÊN AWS:
        CloudFront distribution        ← trường hợp này
        ALB / NLB
        S3 static website endpoint
        API Gateway, Elastic Beanstalk
        Global Accelerator, VPC endpoint
        hoặc record khác trong CÙNG hosted zone
        ↓
    → CloudFront nằm trong danh sách
    → Alias hoạt động hoàn hảo

⚠ Và Alias còn có hai lợi thế thực tế:

MIỄN PHÍ truy vấn
        ↓
    → Route 53 không tính tiền truy vấn cho Alias
      trỏ tới tài nguyên AWS (CNAME thì có tính)

Tự động theo IP của tài nguyên
        ↓
    → CloudFront đổi IP lúc nào cũng được
    → không cần cấu hình lại, không phụ thuộc TTL

Xem thêm câu #11677: cùng lựa chọn CNAME hay Alias nhưng đáp án là CNAME, vì đích ở đó là tên miền của bên thứ ba (ngoài AWS) và tên miền nguồn là www. chứ không phải zone apex. Hai câu không mâu thuẫn: đích ở đâu và tên miền có phải zone apex hay không quyết định câu trả lời.

Vì sao các phương án khác sai

  • A (CNAME) — đây là phương án gần nhất và sẽ đúng nếu tên miền là www.johntrucks.com. Nhưng với zone apex thì chuẩn DNS cấm dùng CNAME. Đây chính là ranh giới mà câu hỏi kiểm tra.

  • C (bản ghi A) — A record trỏ tới một địa chỉ IPv4 cố định. CloudFront dùng hàng trăm IP thay đổi liên tục ở các edge location — ghi cứng một IP là chắc chắn hỏng.

  • B (bản ghi AAAA) — cùng lý do, chỉ khác là IPv6. (Lưu ý: Alias record có thể có type A hoặc AAAA ở tầng bên dưới, nhưng thứ bạn tạo trong Route 53 vẫn được gọi là Alias.)

Ghi nhớ

⚠ CNAME và Alias — bảng phải thuộc, đây là câu hỏi Route 53 kinh điển: | | CNAME | Alias | |---|---|---| | Chuẩn | DNS tiêu chuẩn | riêng của Route 53 | | Trỏ tới | bất kỳ tên miền nào | chỉ tài nguyên AWS hoặc record cùng zone | | Zone apex | KHÔNG ĐƯỢC | ĐƯỢC | | Chi phí truy vấn | có tính phí | MIỄN PHÍ | | Health check tự động | không | có với một số tài nguyên | | TTL | bạn đặt | theo tài nguyên AWS |

Từ khoá nhận diện:

"trỏ tên miền GỐC (zone apex)" → Alias "trỏ tới CloudFront, ALB, S3 website" → Alias "trỏ tới tên miền NGOÀI AWS" → CNAME "trỏ tới một địa chỉ IP" → A (IPv4) hoặc AAAA (IPv6) "tiết kiệm phí truy vấn DNS" → Alias

Alias trỏ được tới những gì Danh sách
CloudFront distribution
ALB / NLB / Gateway Load Balancer
S3 static website endpoint
API Gateway, AppSync
Elastic Beanstalk environment
Global Accelerator
VPC interface endpoint
Record khác trong cùng hosted zone
Cấu hình đầy đủ cho website S3 + CloudFront Bước
1 Bucket RIÊNG TƯ, dùng OAC để chỉ CloudFront vào được
2 Chứng chỉ ACM ở us-east-1 cho johntrucks.com
3 Thêm johntrucks.com vào Alternate domain names của distribution
4 Route 53: Alias record trỏ tới distribution
5 (nên có) www.johntrucks.com → redirect về tên miền gốc
Bẫy hay gặp Nội dung
Chứng chỉ không ở us-east-1 không hiện trong danh sách chọn của CloudFront
Quên thêm alternate domain name CloudFront trả 403 cho tên miền lạ
Dùng CNAME ở zone apex Route 53 từ chối tạo
TTL cao khi chuyển đổi hạ TTL xuống trước vài ngày

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Bản ghi đã lan chưa | dig johntrucks.com — phải trỏ về IP của CloudFront | | Distribution đã sẵn sàng chưa | trạng thái phải là Deployed | | Bucket có bị chặn đúng không | curl URL S3 trực tiếp — phải nhận 403 |

Và một mẹo nhớ không bao giờ nhầm giữa hai loại bản ghi này: Alias là "CNAME dành riêng cho AWS, và dùng được cả ở tên miền gốc". Mỗi khi đích đến là một tài nguyên AWS, hãy dùng Alias — bạn được thêm khả năng dùng ở zone apex, được miễn phí truy vấn, và không phải lo tài nguyên đổi địa chỉ.