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

Tìm thấy 936 câu.

Câu 401 AWS Networking & Content Delivery

A company uses Amazon S3 to store media content that is served through an Amazon CloudFront distribution. The media is consumed by global users but due to agreements in place in certain countries the content should not be viewable there.

What is the MOST cost effective solution to block access in specific countries?

  1. A

    Create a secondary origin access identity (OAI). Configure the S3 bucket policy to prevent access from unauthorized countries.

  2. B

    Update a Network ACL with a deny rule based on the IP addresses of the banned countries.

  3. C

    Enable the geo restriction feature in the CloudFront distribution and create a blacklist of banned countries.

  4. D

    Use Amazon Route 53 geolocation routing and route traffic from banned countries to an Amazon EC2 website that returns a 403 Forbidden HTTP response.

Xem giải thích

Đáp án

C — Bật tính năng GEO RESTRICTION trong CloudFront distribution và tạo danh sách chặn các quốc gia bị cấm.

Vì sao đúng

Đề nhấn mạnh "tiết kiệm chi phí nhất", và geo restriction của CloudFront là tính năng có sẵn, MIỄN PHÍ.

⚠ Điểm mấu chốt — chặn ngay tại edge, không tốn thêm gì:

CloudFront geo restriction
        ↓
    Xác định quốc gia từ IP người dùng
      (CSDL địa lý IP của AWS)
        ↓
    Danh sách CHẶN (blacklist) hoặc
    danh sách CHO PHÉP (whitelist)
        ↓
    Người dùng bị chặn → nhận 403 NGAY TẠI EDGE
        ↓
    → nội dung KHÔNG bao giờ được lấy từ origin
    → không tốn phí origin, không tốn dữ liệu ra
    → và bản thân tính năng KHÔNG TÍNH PHÍ

⚠ Cấu hình rất đơn giản:

CloudFront distribution → Restrictions
        ↓
    Geographic restrictions
      → Restriction type: Blacklist
      → chọn các quốc gia bị cấm
        ↓
    Hoặc Whitelist nếu chỉ cho phép vài nước
        ↓
    Tuỳ biến trang lỗi:
      Custom error response cho mã 403
      → hiện thông báo thân thiện thay vì trang trắng

Xem thêm câu #11913 (cùng lô): cùng bài toán chặn theo quốc gia, nhưng ở đó đề yêu cầu chọn HAI biện pháp nên đáp án gồm cả Route 53 geolocation. Ở đây đề đòi tiết kiệm nhất nên chỉ cần CloudFront geo restriction — khoá nhất quán, ràng buộc trong đề khác nhau.

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

  • D (Route 53 geolocation routing, đưa lưu lượng từ nước bị cấm tới một website EC2 trả 403) — đây là phương án gần nhất và thực sự chạy được, nhưng nó tốn tiền: phải chạy thêm một máy EC2 (hoặc cả một ASG) chỉ để trả về mã 403. Trái thẳng yêu cầu "tiết kiệm nhất". (Và định tuyến theo resolver cũng kém chính xác hơn.)

  • B (Network ACL với luật deny theo địa chỉ IP của các nước bị cấm) — bất khả thi trong thực tế: dải IP của một quốc gia gồm hàng nghìn khối CIDR và thay đổi liên tục, trong khi NACL chỉ chứa được một số luật giới hạn. Và NACL nằm trong VPC, không áp cho lưu lượng tới CloudFront.

  • A (tạo OAI thứ hai và dùng bucket policy chặn truy cập từ nước không được phép) — bucket policy không có điều kiện theo quốc gia, và OAI dùng để CloudFront truy cập bucket riêng tư, không liên quan tới việc chặn người dùng cuối.

Ghi nhớ

⚠ Các cách chặn theo quốc gia — bảng phải thuộc: | Cách | Chi phí | Đặc điểm | |---|---|---| | CloudFront geo restriction | MIỄN PHÍ | allow/block theo quốc gia, trả 403 tại edge | | WAF geo match rule | có phí | linh hoạt: kết hợp với đường dẫn, rate limit, ngoại lệ | | Route 53 geolocation | phí truy vấn | theo resolver, kém chính xác hơn | | Security group / NACL | — | chỉ theo CIDR — không khả thi | | Xác thực người dùng | tuỳ ứng dụng | chính xác nhất, VPN không vượt được |

Từ khoá nhận diện:

"chặn theo quốc gia, tiết kiệm nhất" → CloudFront geo restriction "chặn theo quốc gia có ngoại lệ" → WAF geo match rule "hướng người dùng theo vùng (không chặn)" → Route 53 geolocation "chống DDoS" → Shield "chỉ người đã trả tiền mới xem được" → signed URL / signed cookie

CloudFront geo restriction ↔ WAF geo match Khi nào chọn cái nào
CloudFront chặn thô toàn bộ distribution, miễn phí
WAF cần ngoại lệ theo đường dẫn, kết hợp nhiều điều kiện
Ví dụ dùng WAF chặn quốc gia X trừ /health và /status
Phản hồi CloudFront: 403 cố định ↔ WAF: tuỳ biến được
Ghi log WAF chi tiết hơn nhiều
Bảo vệ nội dung có bản quyền — nhiều lớp Lớp
Geo restriction chặn thô theo quốc gia
Signed URL / signed cookie chỉ người được cấp mới xem
Xác thực tài khoản kiểm tra quốc gia trong hồ sơ người dùng
DRM với video, mức cao nhất
Nguyên tắc chặn theo IP là hợp lý, không phải tuyệt đối — VPN vượt được
Trang lỗi thân thiện thay vì 403 trắng Cách
Custom error response ánh xạ mã 403 sang một trang HTML riêng
Đặt TTL cho trang lỗi để giảm tải origin
Nội dung giải thích lý do, không lộ chi tiết kỹ thuật
Nâng cao CloudFront Function để tuỳ biến theo quốc gia
Chi phí — vì sao chặn tại edge lại rẻ Nội dung
Không lấy nội dung từ origin không tốn phí GET của S3
Không truyền dữ liệu ra phần tốn tiền nhất được loại bỏ
Không cần hạ tầng phụ không EC2, không Lambda
So với phương án D tiết kiệm toàn bộ chi phí một đội máy chạy 24/7

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Chặn có hiệu lực không | kiểm tra từ IP ở quốc gia bị chặn — phải nhận 403 | | Cấu hình hiện tại | get-distribution-config → Restrictions | | Ai bị chặn | CloudFront access log, cột x-edge-result-type |

Và một lưu ý về độ chính xác nên trao đổi trước với bộ phận pháp lý: CSDL địa lý IP không hoàn hảo. Sẽ có một tỉ lệ nhỏ người dùng hợp lệ bị chặn nhầm và một tỉ lệ nhỏ người dùng ở nước bị cấm lọt qua — nên nếu hợp đồng bản quyền đòi hỏi mức bảo đảm chặt chẽ hơn, cần bổ sung một lớp xác thực tài khoản, và điều đó nên được thống nhất trước khi hệ thống lên production.

Câu 402 AWS Management & Governance

A company is using AWS Organizations and wants to implement tag policies to standardize tags across resources in the organization's accounts. A SysOps administrator signs in to the organization’s management account with the required permissions but cannot activate tag policies.


Which of the following may resolve this issue?

  1. A

    Enable consolidated billing for the organization.

  2. B

    Enable all features for the organization.

  3. C

    Sign in to each member account and enable tag policies.

  4. D

    Enable service control policies (SCPs) first.

Xem giải thích

Đáp án

B — BẬT ALL FEATURES cho tổ chức.

Vì sao đúng

Tag policy là một tính năng thuộc nhóm quản trị nâng cao, và nhóm đó chỉ dùng được khi tổ chức ở chế độ all features.

⚠ Điểm mấu chốt — Organizations có HAI chế độ:

CONSOLIDATED BILLING ONLY
        ↓
    Chỉ gộp hoá đơn
        ↓
    KHÔNG dùng được:
      - Service Control Policy (SCP)
      - Tag Policy
      - Backup Policy
      - AI services opt-out policy
      - trusted access với nhiều dịch vụ

ALL FEATURES  ← cần cho tag policy
        ↓
    Toàn bộ khả năng quản trị
        ↓
    → tag policy hiện ra và bật được

⚠ Chuyển lên all features cần sự ĐỒNG Ý của mọi thành viên:

Tài khoản quản lý gửi yêu cầu
        ↓
    enable-all-features
        ↓
    MỌI tài khoản thành viên nhận một handshake
        ↓
    Từng tài khoản phải CHẤP NHẬN
        ↓
    Đủ hết → tổ chức chuyển sang all features
        ↓
    → không hoàn tác được
    → và đây là lý do việc này mất thời gian

⚠ Tag policy làm gì:

Chuẩn hoá TAG trên toàn tổ chức
        ↓
    - Khai KHOÁ tag hợp lệ (viết hoa/thường ra sao)
    - Khai GIÁ TRỊ hợp lệ cho từng khoá
    - Khai loại tài nguyên nào bắt buộc tuân thủ
        ↓
    Chế độ:
      Chỉ BÁO CÁO (mặc định) — thấy vi phạm
      Hoặc ÉP TUÂN THỦ cho một số loại tài nguyên
        ↓
    → khác SCP: SCP CHẶN hành động,
      tag policy chuẩn hoá ĐỊNH DẠNG

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

  • D (bật SCP trước) — đây là phương án gần nhất vì SCP cũng nằm trong nhóm tính năng nâng cao, nhưng SCP không phải điều kiện tiên quyết của tag policy. Cả hai đều đòi all features — và đó mới là thứ cần bật.

  • A (bật consolidated billing cho tổ chức) — consolidated billing là chế độ THẤP HƠN, đã bật sẵn. Nó chính là chế độ đang chặn tag policy.

  • C (đăng nhập từng tài khoản thành viên để bật tag policy) — tag policy chỉ quản lý từ tài khoản QUẢN LÝ; thành viên không bật được.

Ghi nhớ

⚠ Hai chế độ của Organizations — bảng phải thuộc: | | Consolidated billing only | All features | |---|---|---| | Gộp hoá đơn | có | có | | SCP | KHÔNG | CÓ | | Tag Policy | KHÔNG | CÓ | | Backup Policy | không | có | | Trusted access nhiều dịch vụ | hạn chế | đầy đủ | | Chuyển lên | cần MỌI thành viên đồng ý | không hoàn tác được | | Mặc định khi tạo mới | all features | |

Từ khoá nhận diện:

"không bật được tag policy / SCP" → tổ chức chưa ở all features "chuẩn hoá định dạng tag" → Tag Policy "CHẶN tạo tài nguyên thiếu tag" → SCP với aws:RequestTag "phát hiện tài nguyên thiếu tag" → Config rule required-tags "chia chi phí theo tag" → kích hoạt cost allocation tag ở tài khoản quản lý

Bốn loại policy của Organizations Việc
Service Control Policy (SCP) trần quyền tối đa — CHẶN hành động
Tag Policy chuẩn hoá khoá và giá trị tag
Backup Policy áp lịch sao lưu chuẩn (AWS Backup)
AI services opt-out không cho AWS dùng dữ liệu để cải tiến dịch vụ
Điểm chung đều cần ALL FEATURES, đều áp lên root/OU/tài khoản
Tag policy — cách hoạt động Nội dung
Khai gì khoá tag hợp lệ, giá trị hợp lệ, loại tài nguyên áp dụng
Phân biệt hoa thường tag policy chuẩn hoá được Project ↔ project
Chế độ mặc định chỉ BÁO CÁO vi phạm, không chặn
Ép tuân thủ bật cho từng loại tài nguyên cụ thể
Xem kết quả báo cáo tuân thủ tag ở tài khoản quản lý
Kết hợp SCP để CHẶN, tag policy để CHUẨN HOÁ
Ba tầng quản lý tag Cách
Tag Policy định dạng và giá trị hợp lệ
SCP với aws:RequestTag CHẶN tạo tài nguyên thiếu tag
Config required-tags PHÁT HIỆN tài nguyên đã có mà thiếu tag
Hạ tầng dạng mã gắn tag mặc định (Terraform default_tags)
Kết quả ngăn chặn + chuẩn hoá + phát hiện
Chuyển sang all features — chuẩn bị Bước
1 enable-all-features từ tài khoản quản lý
2 Thông báo cho mọi tài khoản thành viên
3 Từng tài khoản chấp nhận handshake
4 Theo dõi list-handshakes-for-organization
5 Sau khi đủ → bật tag policy, SCP
Lưu ý không hoàn tác được — nhưng cũng hiếm khi ai muốn quay lại

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Tổ chức đang ở chế độ nào | describe-organization → FeatureSet | | Còn ai chưa đồng ý | list-handshakes-for-organization | | Tag policy đã bật chưa | list-roots → xem PolicyTypes |

Và một việc rất nên làm ngay sau khi bật all features: bật cả tag policy lẫn SCP cùng lúc. Hai cơ chế này bổ sung nhau — SCP bảo đảm không ai tạo được tài nguyên thiếu tag, còn tag policy bảo đảm những tag được gắn đều đúng định dạng — và triển khai chúng cùng một đợt sẽ tránh được tình trạng nửa vời, nơi mọi tài nguyên đều có tag nhưng mỗi đội viết hoa một kiểu.

Câu 403 AWS Networking & Content Delivery

A company requires a solution for caching content globally and delivering it only to authorized users.

Which solution will meet these requirements?

  1. A

    Store the content in an Amazon S3 bucket with public access disabled. Create an Amazon CloudFront distribution that uses an origin access identity (OAI) to access the S3 bucket. Use CloudFront signed URLs to restrict access to the authorized users.

  2. B

    Store the content in an Amazon S3 bucket with public access disabled. Create an Amazon CloudFront distribution that uses an origin access identity (OAI) to access the S3 bucket. Use S3 presigned URLs to restrict access to the authorized users.

  3. C

    Store the content in an Amazon S3 bucket with public access disabled. Create an IAM role with permissions to the S3 bucket. Create an Amazon CloudFront distribution and assign the IAM role. Use CloudFront signed URLs to restrict access to the authorized users.

  4. D

    Store the content in an Amazon S3 bucket with public access enabled. Create an Amazon CloudFront distribution and enable field-level encryption. Use S3 presigned URLs to restrict access to the authorized users.

Xem giải thích

Đáp án

A — Lưu nội dung trong bucket S3 đã tắt truy cập công khai; tạo CloudFront distribution dùng ORIGIN ACCESS IDENTITY (OAI) để đọc bucket; dùng CLOUDFRONT SIGNED URL để giới hạn người dùng được phép.

Vì sao đúng

Đề đòi hai thứ: cache toàn cầu và chỉ người được uỷ quyền mới xem được. Phương án A ghép đúng ba mảnh.

⚠ Mảnh thứ nhất — cache toàn cầu là CloudFront:

CloudFront
        ↓
    Cache ở hơn 400 điểm hiện diện
        ↓
    → đúng yêu cầu "caching content globally"

⚠ Mảnh thứ hai — bucket phải RIÊNG TƯ:

Block Public Access bật + OAI (hoặc OAC)
        ↓
    CloudFront được cấp quyền đọc bucket
    qua bucket policy
        ↓
    → không ai gọi thẳng S3 được
    → mọi đường vào đều qua CloudFront

⚠ Mảnh thứ ba — và đây là điểm phân biệt QUAN TRỌNG NHẤT:

Phải dùng CLOUDFRONT SIGNED URL,
KHÔNG phải S3 PRESIGNED URL
        ↓
    S3 presigned URL trỏ THẲNG tới S3
        ↓
    → BỎ QUA CloudFront hoàn toàn
    → mất cache, mất tăng tốc toàn cầu
    → và bucket đang riêng tư nên
      cũng không hợp với kiến trúc này
        ↓
    CloudFront signed URL
        ↓
    → người dùng vẫn đi qua edge
    → vẫn hưởng cache
    → CloudFront kiểm chữ ký trước khi phục vụ

⚠ Signed URL hoạt động thế nào:

Tạo một KEY GROUP với public key trong CloudFront
        ↓
    Ứng dụng dùng PRIVATE KEY để ký URL
        ↓
    URL chứa:  Policy, Signature, Key-Pair-Id
        ↓
    Chính sách khai được:
      - thời hạn hết hiệu lực
      - thời điểm bắt đầu có hiệu lực
      - dải IP được phép
        ↓
    CloudFront kiểm chữ ký TẠI EDGE
    → hợp lệ thì phục vụ, không thì 403

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

  • B (cùng kiến trúc nhưng dùng S3 PRESIGNED URL) — đây là phương án gần nhất và chỉ sai một chi tiết, nhưng chi tiết đó phá vỡ cả kiến trúc: presigned URL trỏ thẳng tới S3, nên người dùng không đi qua CloudFront — mất toàn bộ lợi ích cache toàn cầu mà đề yêu cầu.

  • C (tạo IAM role có quyền vào bucket rồi gán cho CloudFront distribution) — CloudFront không nhận IAM role. Nó truy cập bucket riêng tư bằng OAC hoặc OAI, được cấp quyền qua bucket policy.

  • D (bucket CÔNG KHAI, bật field-level encryption, dùng S3 presigned URL) — sai nhiều chỗ: bucket công khai thì presigned URL vô nghĩa (ai cũng vào được), và field-level encryption dùng để bảo vệ dữ liệu người dùng GỬI LÊN, không liên quan tới việc giới hạn truy cập.

Ghi nhớ

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

Phương án đúng dùng Origin Access Identity (OAI), là cơ chế cũ. AWS hiện khuyến nghị Origin Access Control (OAC) cho mọi distribution mới: OAC hỗ trợ SSE-KMS, hỗ trợ mọi Region, và xử lý được cả PUT/DELETE — những thứ OAI không làm được.

Khoá đáp án không đổi: OAI vẫn hoạt động, vẫn giữ được bucket riêng tư, và trong bốn lựa chọn thì A vẫn là phương án duy nhất đúng về mặt kiến trúc. Nhưng khi triển khai thật hôm nay, hãy dùng OAC; và khi gặp đề nhắc tới OAI, hãy hiểu đó là cách diễn đạt theo tài liệu cũ.

⚠ CloudFront signed URL ↔ S3 presigned URL — bảng phải thuộc: | | CloudFront signed URL | S3 presigned URL | |---|---|---| | Đi qua CloudFront | CÓ — vẫn hưởng cache | KHÔNG — thẳng tới S3 | | Ai ký | private key của key group | thông tin xác thực IAM | | Điều kiện khai được | thời hạn, thời điểm bắt đầu, dải IP | thời hạn | | Dùng khi | phân phối toàn cầu có kiểm soát | tải lên/xuống một lần, nội bộ | | Nhiều tệp | signed COOKIE tiện hơn | phải ký từng URL |

Từ khoá nhận diện:

"cache toàn cầu + chỉ người được phép" → CloudFront + OAC/OAI + signed URL "cho phép tải lên một tệp trong 15 phút" → S3 presigned URL "nhiều tệp, cả một thư mục" → CloudFront signed COOKIE "bucket phải riêng tư" → OAC + Block Public Access "chặn theo quốc gia" → geo restriction

Signed URL ↔ Signed Cookie Chọn cái nào
Signed URL một tệp cụ thể, URL chia sẻ được
Signed Cookie nhiều tệp / cả một khu vực nội dung, không đổi URL
Ví dụ signed cookie thư viện video của thuê bao
Ví dụ signed URL một tệp tải về sau khi mua
Cả hai dùng chung key group
Thiết lập signed URL — các bước Bước
1 Sinh cặp khoá RSA 2048
2 Tải public key lên CloudFront
3 Tạo KEY GROUP chứa public key đó
4 Gắn key group vào cache behavior (Restrict viewer access)
5 Ứng dụng ký URL bằng private key
6 Bảo vệ private key — Secrets Manager, không commit vào git
OAC ↔ OAI — nhắc lại Khác nhau
OAC hiện đại — hỗ trợ SSE-KMS, mọi Region, PUT/DELETE
OAI cũ, không hỗ trợ SSE-KMS
Khuyến nghị OAC cho mọi distribution mới
Chuyển đổi tạo OAC → cập nhật bucket policy → gỡ OAI
Bảo vệ nội dung nhiều lớp Lớp
Block Public Access + OAC bucket riêng tư tuyệt đối
Signed URL / cookie chỉ người được cấp mới xem
Geo restriction ràng buộc theo vùng
WAF chặn bot, rate limit
DRM với video, mức cao nhất

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Gọi thẳng S3 có được không | mở URL của bucket — phải nhận 403 | | URL chưa ký có vào được không | gọi CloudFront không kèm chữ ký — phải 403 | | Chữ ký có hết hạn đúng không | thử URL sau thời điểm Expires |

Và một điều nên nghĩ tới ngay khi thiết kế: thời hạn của signed URL nên đủ ngắn nhưng phải dài hơn thời gian tải xong tệp. Với một video vài trăm megabyte trên đường truyền chậm, một URL hết hạn sau năm phút sẽ khiến người dùng bị ngắt giữa chừng — và triệu chứng đó chỉ xuất hiện với đúng nhóm người dùng có kết nối yếu nhất, tức là nhóm khó tái hiện lỗi nhất.

Câu 404 AWS Networking & Content Delivery

A SysOps administrator is deploying a website that must be directly accessible from the internet. The Amazon EC2 instance is running in a subnet that is configured to auto assign public IP addresses. The subnet route table has the following configuration:

Destination                  Target

10.0.0.0/16                     Local

172.31.0.0/16                 pcx-123456123456

Which entry must the Administrator add to the route table to meet the requirement?

  1. A

    A route for 0.0.0.0/0 that points to an egress-only internet gateway.

  2. B

    A route for 0.0.0.0/0 that points to an internet gateway.

  3. C

    A route for 0.0.0.0/0 that points to an elastic network interface.

  4. D

    A route for 0.0.0.0/0 that points to a NAT gateway.

Xem giải thích

Đáp án

B — Thêm tuyến cho 0.0.0.0/0 trỏ tới INTERNET GATEWAY.

Vì sao đúng

Route table trong đề đã có hai mục, nhưng thiếu đúng mục cho phép đi ra internet.

⚠ Điểm mấu chốt — đọc route table đã cho:

Destination        Target
10.0.0.0/16        Local              ← trong VPC
172.31.0.0/16      pcx-123456123456   ← VPC peering
        ↓
    KHÔNG có tuyến 0.0.0.0/0
        ↓
    → mọi đích ngoài hai dải trên
      đều KHÔNG BIẾT ĐI ĐÂU
    → gói tin bị bỏ
        ↓
    → subnet này là PRIVATE

⚠ Và đề đã cho sẵn hai điều kiện còn lại:

"subnet is configured to auto assign public IP"
        ↓
    → máy CÓ IP công cộng ✓

"must be directly accessible from the internet"
        ↓
    → cần cả chiều VÀO
    → chỉ IGW làm được
        ↓
    Thiếu duy nhất: tuyến 0.0.0.0/0 → igw-xxxxx

⚠ Vì sao NAT Gateway không đúng ở đây:

NAT Gateway
        ↓
    Cho máy đi RA internet
    Chặn hoàn toàn chiều VÀO
        ↓
    Đề: "directly accessible FROM the internet"
        ↓
    → NAT không thoả
        ↓
    Và IP công cộng của máy cũng
    trở thành vô dụng khi đi qua NAT

Xem thêm câu #11862 (lô 128) và #11915 (cùng lô): cùng chủ đề — public subnet cần IGW gắn vào VPC và tuyến 0.0.0.0/0 trong route table. Khoá nhất quán ở cả ba câu.

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

  • D (tuyến 0.0.0.0/0 trỏ tới NAT gateway) — đây là phương án gần nhất và cho phép đi RA internet thật, nhưng chặn chiều VÀO — trái yêu cầu "truy cập trực tiếp từ internet".

  • A (tuyến 0.0.0.0/0 trỏ tới egress-only internet gateway) — egress-only IGW CHỈ dùng cho IPv6 và chỉ một chiều ra. Đề nói tới IPv4 và cần cả hai chiều. (Với IPv6 thì đích phải là ::/0, không phải 0.0.0.0/0.)

  • C (tuyến 0.0.0.0/0 trỏ tới một elastic network interface) — về kỹ thuật thì trỏ tuyến tới ENI được, nhưng đó là mô hình của NAT instance hoặc thiết bị mạng tự dựng, và bản thân ENI đó cũng phải nằm ở một subnet có đường ra internet. Không phải câu trả lời cho một website cần truy cập trực tiếp.

Ghi nhớ

⚠ Các target hợp lệ của một tuyến — bảng phải thuộc: | Target | Việc | |---|---| | local | trong VPC — tự có, không xoá được | | Internet Gateway (igw-) | ra và vào internet, IPv4 + IPv6 | | NAT Gateway (nat-) | chỉ ra, IPv4 | | Egress-only IGW (eigw-) | chỉ ra, CHỈ IPv6 | | VPC Peering (pcx-) | sang VPC khác | | Transit Gateway (tgw-) | trung tâm kết nối nhiều VPC/VPN | | VPC Endpoint (vpce-) | tới S3/DynamoDB (gateway endpoint) | | Virtual Private Gateway (vgw-) | VPN / Direct Connect | | ENI (eni-) | NAT instance, thiết bị mạng tự dựng |

Từ khoá nhận diện:

"truy cập trực tiếp từ internet" → IGW "ra được nhưng không ai vào được" → NAT Gateway "IPv6, chỉ ra" → egress-only IGW, đích ::/0 "sang VPC khác" → peering hoặc Transit Gateway "tới S3 không qua internet" → gateway endpoint

Ba điều kiện của một máy truy cập được từ internet Nội dung
1 IGW đã gắn vào VPC
2 Route table có 0.0.0.0/0 → igw- ← thiếu ở đề này
3 Máy có IP công cộng hoặc Elastic IP ← đề đã có
4 Security group mở cổng cần thiết chiều vào
5 NACL cho phép cả hai chiều
Quy tắc chọn tuyến — longest prefix match Nội dung
Nguyên tắc tuyến CỤ THỂ NHẤT thắng
Ví dụ 10.0.1.0/24 thắng 10.0.0.0/16, thắng 0.0.0.0/0
local luôn thắng, không ghi đè được
Bẫy thêm một tuyến hẹp có thể âm thầm đổi đường đi của một phần lưu lượng
VPC Peering — lưu ý khi đọc route table Nội dung
Không bắc cầu A↔B và B↔C không cho A↔C
CIDR không được chồng lấn
Phải thêm tuyến ở CẢ HAI phía thiếu một bên là một chiều không thông
Thay thế khi nhiều VPC Transit Gateway
Chẩn đoán "không vào được website" Bước
1 Route table — có 0.0.0.0/0 → igw- không
2 Máy có IP công cộng không
3 Security group mở 80/443 chiều vào chưa
4 NACL cả hai chiều, nhớ cổng tạm
5 Trên máy: ss -tlnp — web server có đang nghe không
6 VPC Reachability Analyzer để chắc chắn

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Route table hiện tại | describe-route-tables --route-table-ids rtb-xxx | | IGW đã gắn chưa | describe-internet-gateways | | Máy có IP công cộng không | describe-instances --query '...PublicIpAddress' |

Và một thói quen đáng có khi chẩn đoán mạng VPC: đọc route table trước tiên, trước cả security group. Route table quyết định gói tin có đường đi hay không — nếu không có đường thì mọi luật security group đều vô nghĩa, và triệu chứng timeout sẽ giống hệt như khi bị firewall chặn, dẫn người gỡ lỗi đi lạc rất lâu.

Câu 405 AWS Security, Identity, & Compliance

A company uses several AWS accounts by different business units for development purposes. An additional account is used by security admins purposes. The security admins have requested that they be granted access to review the configuration of Amazon EC2 resources in the development accounts to ensure security best practices are being followed.

Which solution will meet these requirements in the MOST secure manner?

  1. A

    Create an IAM policy in each development account that has read-only access to Amazon EC2 resources. Assign the policy to an IAM user. Share the user credentials with the security administrators.

  2. B

    Create an IAM policy in each development account that has administrator access to all Amazon EC2 actions. Assign the policy to an IAM user. Share the user credentials with the security administrators.

  3. C

    Create an IAM policy in each development account that has administrator access to Amazon EC2 resources. Assign the policy to a cross-account IAM role. Ask the security administrators to assume the role from their account.

  4. D

    Create an IAM policy in each development account that has read-only access to Amazon EC2 resources. Assign the policy to a cross-account IAM role. Ask the security administrators to assume the role from their account.

Xem giải thích

Đáp án

D — Tạo IAM policy CHỈ ĐỌC với tài nguyên EC2 trong mỗi tài khoản development, gắn vào một CROSS-ACCOUNT IAM ROLE, và để đội bảo mật ĐẢM NHẬN role đó từ tài khoản của họ.

Vì sao đúng

Phương án D là phương án duy nhất đúng cả hai nguyên tắc bảo mật mà câu hỏi đang kiểm tra.

⚠ Nguyên tắc thứ nhất — QUYỀN TỐI THIỂU:

Đội bảo mật cần "REVIEW cấu hình"
        ↓
    → chỉ cần ĐỌC
    → không cần tạo, sửa, xoá gì
        ↓
    Chính sách: ReadOnlyAccess giới hạn ở EC2
      ec2:Describe*, ec2:Get*
        ↓
    → cấp quyền quản trị là thừa và nguy hiểm

⚠ Nguyên tắc thứ hai — DÙNG ROLE, KHÔNG CHIA SẺ KHOÁ:

Chia sẻ thông tin đăng nhập của IAM user
        ↓
    → khoá dài hạn, không tự hết hạn
    → không biết AI trong đội đã dùng
      (CloudTrail chỉ thấy một danh tính chung)
    → có người nghỉ việc → phải xoay khoá tay
    → khoá bị lộ là dùng được mãi
        ↓
CROSS-ACCOUNT ROLE
        ↓
    Đội bảo mật đăng nhập bằng danh tính CỦA HỌ
    rồi AssumeRole sang tài khoản development
        ↓
    → STS cấp thông tin TẠM THỜI (mặc định 1 giờ)
    → CloudTrail ghi rõ TỪNG NGƯỜI đã assume
    → thu hồi = sửa trust policy, tức thì
    → ép được MFA trong trust policy

⚠ Trust policy nên viết thế nào:

{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::<tai-khoan-bao-mat>:root"
  },
  "Action": "sts:AssumeRole",
  "Condition": {
    "Bool": { "aws:MultiFactorAuthPresent": "true" },
    "StringEquals": { "sts:ExternalId": "..." }
  }
}
    MFA bắt buộc  → thêm một lớp bảo vệ
    ExternalId    → dùng khi bên thứ ba truy cập
                    (chống confused deputy)

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

  • C (chính sách QUẢN TRỊ EC2 gắn vào cross-account role) — đây là phương án gần nhất và dùng đúng cơ chế role, nhưng cấp quyền quản trị cho một việc chỉ cần đọc. Vi phạm quyền tối thiểu: một sai sót hoặc một tài khoản bị chiếm có thể xoá máy ở mọi tài khoản development.

  • A (chính sách chỉ đọc gắn vào IAM USER, chia sẻ thông tin đăng nhập) — quyền thì đúng nhưng cơ chế sai: chia sẻ khoá dài hạn giữa nhiều người là điều nên tránh tuyệt đối.

  • B (quyền quản trị + chia sẻ thông tin đăng nhập của IAM user) — sai cả hai vế, tệ nhất trong bốn phương án.

Ghi nhớ

⚠ Truy cập liên tài khoản — bảng phải thuộc: | Cách | Đánh giá | |---|---| | Cross-account IAM role + AssumeRole | ĐÚNG — khoá tạm thời, ghi log theo từng người | | IAM Identity Center với permission set | tốt hơn nữa khi có nhiều tài khoản | | IAM user + chia sẻ khoá | KHÔNG BAO GIỜ | | Resource policy | dùng cho bucket, KMS key, SQS — không thay role |

Từ khoá nhận diện:

"truy cập tài khoản khác" → cross-account role + AssumeRole "an toàn NHẤT" → role + quyền tối thiểu + MFA "nhiều tài khoản, nhiều người" → IAM Identity Center "bên thứ ba truy cập" → role + sts:ExternalId "chia sẻ access key" → luôn SAI

AssumeRole hoạt động thế nào Bước
1 Role ở tài khoản đích có trust policy cho phép tài khoản nguồn
2 Danh tính ở tài khoản nguồn có quyền sts:AssumeRole
3 Gọi sts:AssumeRole → nhận access key + secret + SESSION TOKEN
4 Thông tin này hết hạn (15 phút – 12 giờ)
5 CloudTrail ở CẢ HAI tài khoản ghi lại lời gọi
Console dùng switch role, hoặc URL có sẵn
Hai vế của quyền — đều phải có Nội dung
Trust policy (trên role) AI được phép assume
Permissions policy (trên role) role được làm GÌ
Ở tài khoản nguồn danh tính phải có sts:AssumeRole tới ARN đó
Thiếu bất kỳ vế nào AccessDenied
Chính sách chỉ đọc có sẵn Nội dung
ReadOnlyAccess đọc mọi dịch vụ — rộng, nhưng chỉ đọc
ViewOnlyAccess chỉ liệt kê và mô tả, không đọc nội dung dữ liệu
SecurityAudit dành riêng cho kiểm toán bảo mật — rất hợp tình huống này
Tuỳ chỉnh ec2:Describe* cho phạm vi hẹp nhất
Nâng cấp giải pháp khi có nhiều tài khoản Cách
IAM Identity Center một permission set áp cho nhiều tài khoản
StackSets dựng cùng một role ở mọi tài khoản development
Config aggregator nhìn tuân thủ toàn tổ chức mà không cần vào từng tài khoản
Security Hub tổng hợp phát hiện bảo mật theo tổ chức
Lợi ích đội bảo mật không phải switch role hàng chục lần

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Ai đã assume role | CloudTrail, tìm AssumeRole — thấy rõ từng người | | Role có đủ/thừa quyền không | IAM Access Advisor | | Trust policy đúng chưa | get-role --role-name ... → đọc AssumeRolePolicyDocument |

Và một cải tiến rất đáng cân nhắc cho chính tình huống này: AWS Config aggregator. Nếu mục đích của đội bảo mật là rà soát cấu hình có tuân thủ hay không, họ có thể xem toàn bộ tài nguyên EC2 của mọi tài khoản từ một màn hình duy nhất mà không cần assume role vào từng tài khoản — nhanh hơn nhiều, và cũng ít bề mặt quyền hơn.

Câu 406 AWS Security, Identity, & Compliance

A company is deploying an internet-facing application in the AWS Cloud that will run behind an Application Load Balancer (ALB). The ALB will be configured with a secure listener. The SysOps administrator must ensure that the SSL/TLS certificate used by the listener automatically renews.

Which solution MOST efficiently meets these requirements?

  1. A

    Request a public certificate by using AWS Certificate Manager (ACM) and use Email validation. ACM will automatically renew the certificate.

  2. B

    Request a private certificate by using AWS Certificate Manager (ACM) and use DNS validation. ACM will automatically renew the certificate.

  3. C

    Request a public certificate by using AWS Certificate Manager (ACM) and use DNS validation. ACM will automatically renew the certificate.

  4. D

    Request a public certificate by using AWS Certificate Manager (ACM). Write an AWS Lambda function that automates the renewal of the certificate.

Xem giải thích

Đáp án

C — Yêu cầu chứng chỉ CÔNG KHAI qua AWS Certificate Manager (ACM) và dùng XÁC THỰC BẰNG DNS. ACM sẽ tự động gia hạn.

Vì sao đúng

Đề đòi tự động gia hạn với cách hiệu quả nhất, và chỉ tổ hợp "công khai + DNS validation" cho ra điều đó.

⚠ Điểm mấu chốt thứ nhất — vì sao phải là chứng chỉ CÔNG KHAI:

Ứng dụng HƯỚNG RA INTERNET
        ↓
    Trình duyệt người dùng phải TIN chứng chỉ
        ↓
    → cần chứng chỉ do một CA công cộng ký
        ↓
    Chứng chỉ RIÊNG (private CA)
        ↓
    → trình duyệt KHÔNG tin
    → hiện cảnh báo bảo mật
    → chỉ dùng cho nội bộ, nơi máy client
      đã cài CA gốc của công ty

⚠ Điểm mấu chốt thứ hai — DNS validation TỰ GIA HẠN được, EMAIL thì không:

DNS VALIDATION
        ↓
    Thêm một bản ghi CNAME vào hosted zone
        ↓
    Bản ghi đó nằm lại VĨNH VIỄN
        ↓
    → ACM tự kiểm tra lại khi tới hạn gia hạn
    → GIA HẠN HOÀN TOÀN TỰ ĐỘNG, không ai phải làm gì
        ↓
EMAIL VALIDATION
        ↓
    ACM gửi thư tới địa chỉ quản trị của tên miền
        ↓
    → PHẢI CÓ NGƯỜI BẤM LINK
    → tại thời điểm cấp, VÀ ở mỗi lần gia hạn
      nếu chứng chỉ không đang được dùng
        ↓
    → không phải "tự động" đúng nghĩa
    → và rất dễ bỏ lỡ thư

⚠ Và ACM còn có một điểm rất đáng nhớ:

Chứng chỉ ACM CÔNG KHAI
        ↓
    MIỄN PHÍ hoàn toàn
        ↓
    Nhưng CHỈ dùng được với các dịch vụ
    tích hợp sẵn:
      ALB / NLB / CloudFront / API Gateway
      Elastic Beanstalk / App Runner
        ↓
    → KHÔNG tải private key về được
    → KHÔNG cài lên EC2 được

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

  • A (chứng chỉ công khai + EMAIL validation) — đây là phương án gần nhất và chứng chỉ đúng loại, nhưng email validation cần thao tác thủ công ở mỗi lần gia hạn khi chứng chỉ không đang được sử dụng. Không thoả yêu cầu "tự động gia hạn" một cách đáng tin cậy.

  • B (chứng chỉ RIÊNG + DNS validation) — DNS validation thì đúng, nhưng chứng chỉ riêng không được trình duyệt tin. Ứng dụng hướng ra internet sẽ hiện cảnh báo với mọi người dùng.

  • D (chứng chỉ công khai + viết Lambda để tự gia hạn) — tự làm lại thứ ACM đã làm sẵn và miễn phí, kèm mã phải bảo trì và một điểm hỏng mới.

Ghi nhớ

⚠ Hai cách xác thực của ACM — bảng phải thuộc: | | DNS validation | Email validation | |---|---|---| | Tự gia hạn | HOÀN TOÀN TỰ ĐỘNG | cần thao tác tay | | Cách xác thực | thêm bản ghi CNAME | bấm link trong thư | | Với Route 53 | ACM tự tạo bản ghi giúp — một cú bấm | — | | Rủi ro | phải giữ nguyên bản ghi CNAME | bỏ lỡ thư là chứng chỉ hết hạn | | Khuyến nghị | LUÔN dùng DNS validation | |

Từ khoá nhận diện:

"tự động gia hạn" → ACM + DNS validation "chứng chỉ cho website công khai" → chứng chỉ CÔNG KHAI, miễn phí "chứng chỉ cho nội bộ, cho IoT" → AWS Private CA "cài chứng chỉ lên EC2" → ACM công khai KHÔNG làm được "chứng chỉ cho CloudFront" → BẮT BUỘC ở Region us-east-1

Điều kiện để ACM tự gia hạn Nội dung
Dùng DNS validation và bản ghi CNAME vẫn còn
Chứng chỉ ĐANG ĐƯỢC SỬ DỤNG gắn với ALB, CloudFront, API Gateway…
Thời điểm ACM bắt đầu gia hạn 60 ngày trước khi hết hạn
Chứng chỉ không dùng ở đâu ACM không tự gia hạn
Theo dõi EventBridge bắt sự kiện ACM Certificate Approaching Expiration
ACM công khai ↔ AWS Private CA Khác nhau
Công khai MIỄN PHÍ, trình duyệt tin, không tải private key được
Private CA CÓ PHÍ theo tháng, chỉ nội bộ tin, tải được chứng chỉ
Private CA dùng khi nội bộ, container, IoT, mTLS
Cả hai tự động gia hạn được
Bẫy về Region với chứng chỉ Nội dung
CloudFront BẮT BUỘC chứng chỉ ở us-east-1
ALB / NLB / API Gateway (regional) cùng Region với tài nguyên
Hậu quả chứng chỉ không hiện ra trong danh sách chọn nếu sai Region
Nhân rộng phải yêu cầu lại ở từng Region — không copy được
Cấu hình HTTPS cho ALB đầy đủ Bước
1 Yêu cầu chứng chỉ ACM với DNS validation
2 Tạo listener 443 trên ALB, gắn chứng chỉ
3 Chọn security policy (bộ cipher) — dùng bản khuyến nghị mới nhất
4 Listener 80 → redirect sang 443
5 Bản ghi ALIAS trong Route 53 trỏ tới ALB
6 Cân nhắc HSTS header ở tầng ứng dụng

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Chứng chỉ ở trạng thái nào | describe-certificate → Status và RenewalEligibility | | Bản ghi xác thực còn không | dig CNAME <ten-ban-ghi-xac-thuc> | | Sắp hết hạn chưa | EventBridge hoặc alarm trên DaysToExpiry |

Và một cảnh báo rất đáng dựng dù đã dùng DNS validation: EventBridge rule bắt sự kiện chứng chỉ sắp hết hạn. ACM gia hạn tự động trong hầu hết trường hợp, nhưng nếu ai đó lỡ xoá bản ghi CNAME xác thực trong lúc dọn dẹp hosted zone, việc gia hạn sẽ thất bại lặng lẽ — và bạn chỉ biết vào ngày chứng chỉ hết hạn, khi mọi trình duyệt cùng lúc từ chối kết nối.

Câu 407 AWS Analytics

A company uses third-party software to collect a large volume of application log files and store them in an Amazon S3 bucket. The company needs a fully managed service to search and analyze the log files and visualize the data using Kibana.

Which solution should the company use?

  1. A

    Create an Amazon DynamoDB table. Use an AWS Lambda function to load data from the S3 bucket to the table.

  2. B

    Create Elasticsearch cluster on Amazon EC2 instances and use AWS Lambda to process the data from the S3 bucket and stream it to the Elasticsearch domain.

  3. C

    Create an Amazon Kinesis Data Firehose delivery stream to ingest data from the S3 bucket and stream it to the Elasticsearch domain.

  4. D

    Create an Amazon Elasticsearch cluster and use AWS Lambda to process the data from the S3 bucket and stream it to the Elasticsearch domain.

Xem giải thích

Đáp án

D — Tạo cụm Amazon Elasticsearch (nay là Amazon OpenSearch Service) và dùng AWS Lambda xử lý dữ liệu từ bucket S3 rồi đẩy vào domain đó.

Vì sao đúng

Đề đòi dịch vụ ĐƯỢC QUẢN LÝ HOÀN TOÀN để tìm kiếm, phân tích log và trực quan hoá bằng Kibana.

⚠ Điểm mấu chốt — Kibana đi kèm sẵn với dịch vụ được quản lý:

Amazon OpenSearch Service
(tên cũ: Amazon Elasticsearch Service)
        ↓
    AWS lo: dựng cụm, vá lỗi, sao lưu,
    mở rộng, giám sát
        ↓
    Kibana / OpenSearch Dashboards
    ĐƯỢC CÀI SẴN, truy cập qua endpoint của domain
        ↓
    → không phải cài, không phải vận hành
    → đúng nghĩa "fully managed"

⚠ Đưa dữ liệu từ S3 vào bằng cách nào:

S3 event notification khi có tệp mới
        ↓
    Kích hoạt Lambda
        ↓
    Lambda đọc tệp, phân tích, chuẩn hoá
    rồi gọi API `_bulk` của domain
        ↓
    → xử lý được cả log định dạng lạ
    → và lọc bớt trước khi nạp (giảm chi phí)
        ↓
    Với dữ liệu đã có sẵn trong bucket:
      chạy Lambda hoặc AWS Batch một lần
      để nạp lại toàn bộ

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

Đề dùng tên Amazon Elasticsearch Service và Kibana. Từ tháng 9 năm 2021, dịch vụ này đã đổi tên thành Amazon OpenSearch Service, và Kibana được thay bằng OpenSearch Dashboards. Đây chỉ là đổi tên và đổi nhánh mã nguồn, không phải một dịch vụ khác.

Khoá đáp án không đổi: phương án D vẫn mô tả đúng kiến trúc — một cụm tìm kiếm được quản lý, kèm giao diện trực quan hoá có sẵn, được nạp dữ liệu từ S3 qua Lambda. Khi tra tài liệu hôm nay hãy tìm theo OpenSearch Service; khi làm đề, hãy hiểu "Amazon Elasticsearch Service" và "Amazon OpenSearch Service" là cùng một dịch vụ.

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

  • C (Kinesis Data Firehose lấy dữ liệu TỪ bucket S3 rồi đẩy sang domain) — đây là phương án gần nhất và Firehose thật sự đẩy được vào OpenSearch, nhưng S3 KHÔNG phải là NGUỒN của Firehose. Firehose nhận dữ liệu từ producer (SDK, Kinesis Data Streams, CloudWatch Logs…) và GHI RA S3, không đọc ngược lại.

  • B (dựng cụm Elasticsearch trên EC2) — KHÔNG phải dịch vụ được quản lý: bạn phải tự vá, tự mở rộng, tự sao lưu, tự cài Kibana. Trái thẳng yêu cầu của đề.

  • A (DynamoDB + Lambda nạp dữ liệu) — DynamoDB không phải công cụ tìm kiếm toàn văn, và không có Kibana.

Ghi nhớ

⚠ Chọn công cụ phân tích log — bảng phải thuộc: | Nhu cầu | Dịch vụ | |---|---| | Tìm kiếm toàn văn, dashboard phong phú | OpenSearch Service (Kibana/Dashboards) | | Truy vấn nhanh log trong CloudWatch | CloudWatch Logs Insights | | SQL trên khối lượng LỚN ở S3 | Athena | | Dashboard nghiệp vụ cho người không kỹ thuật | QuickSight | | ETL trước khi phân tích | Glue | | Đẩy log theo luồng | Kinesis Data Firehose |

Từ khoá nhận diện:

"Kibana / OpenSearch Dashboards" → OpenSearch Service "fully managed" → KHÔNG dựng trên EC2 "truy vấn SQL trên S3" → Athena "log đã ở CloudWatch" → Logs Insights "Firehose đọc từ S3" → luôn SAI — S3 là ĐÍCH, không phải nguồn

Nguồn và đích của Kinesis Data Firehose Nội dung
Nguồn SDK/agent, Kinesis Data Streams, CloudWatch Logs, IoT, WAF
Đích S3, OpenSearch, Redshift, Splunk, HTTP endpoint
S3 là gì ĐÍCH, không bao giờ là nguồn
Xử lý giữa đường gọi Lambda để chuyển đổi bản ghi
Đặc điểm không cần quản lý shard, tự co giãn
Kiến trúc nạp log vào OpenSearch Nguồn
Log ứng dụng trên EC2 CloudWatch agent → subscription filter → Firehose → OpenSearch
Tệp log trong S3 S3 event → Lambda → _bulk API ← đề này
Luồng thời gian thực Kinesis Data Streams → Firehose → OpenSearch
Log của Lambda subscription filter trên log group
VPC Flow Logs, WAF log Firehose → OpenSearch
Vận hành OpenSearch Service Nội dung
Chia dữ liệu theo INDEX ngày log-2026.09.02 — dễ xoá và dễ chuyển lớp
Index State Management (ISM) tự chuyển sang UltraWarm / Cold, tự xoá
UltraWarm rẻ hơn nhiều cho dữ liệu ít truy vấn
Dedicated master node cần cho cụm production — ổn định hơn
Mạng đặt trong VPC, không để endpoint công khai
Truy cập fine-grained access control, tích hợp Cognito cho Dashboards
Chi phí — nơi hay bị bất ngờ Nội dung
Node chạy 24/7 tính theo giờ, kể cả khi không truy vấn
Lưu trữ EBS của node theo GB
Cách giảm UltraWarm và Cold storage, ISM tự xoá index cũ
Cách giảm lọc bớt log trước khi nạp
So sánh với log ít truy vấn, S3 + Athena rẻ hơn nhiều

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Dữ liệu đã vào chưa | gọi _cat/indices trên domain | | Cụm có khoẻ không | chỉ số ClusterStatus.yellow/red, FreeStorageSpace | | Lambda có lỗi không | CloudWatch Logs của hàm, và chỉ số Errors |

Và một quyết định nên cân nhắc trước khi dựng cụm: log này có thật sự cần tìm kiếm toàn văn và dashboard không. OpenSearch mạnh nhưng tốn kém vì các node chạy liên tục — nếu nhu cầu chỉ là thỉnh thoảng truy vấn log lịch sử, thì giữ nguyên trong S3 và dùng Athena thường rẻ hơn cả một bậc, và cũng không cần ai vận hành cụm.

Câu 408 AWS Management & Governance

A company uses AWS Organizations with consolidated billing. A SysOps administrator would like to be alerted if the total billing for all accounts within the organization exceeds a specific threshold.

How can the administrator set this up?

  1. A

    Enable the Receive Billing Alerts preference in the payer account and setup a billing alarm in Amazon CloudWatch. Use SNS to send a notification based on the alarm.

  2. B

    Enable the Receive Billing Alerts preference in each member account and setup a billing alarm in AWS Config in the payer account. Use SNS to send a notification based on the alarm.

  3. C

    Enable the Receive Billing Alerts preference in the payer account and setup a billing alarm in AWS Config. Use SNS to send a notification based on the alarm.

  4. D

    Enable the Receive Billing Alerts preference in each member account and setup a billing alarm in Amazon CloudWatch in the payer account. Use SNS to send a notification based on the alarm.

Xem giải thích

Đáp án

A — Bật tuỳ chọn "Receive Billing Alerts" ở TÀI KHOẢN THANH TOÁN, đặt billing alarm trong Amazon CLOUDWATCH, và dùng SNS để gửi thông báo.

Vì sao đúng

Có hai chi tiết quyết định câu này: bật ở tài khoản nào, và đặt alarm ở dịch vụ nào.

⚠ Điểm mấu chốt thứ nhất — chỉ TÀI KHOẢN THANH TOÁN thấy tổng chi phí:

Trong AWS Organizations với consolidated billing
        ↓
    Chi phí của MỌI tài khoản thành viên
    gộp về TÀI KHOẢN QUẢN LÝ (payer)
        ↓
    Chỉ số billing chỉ được phát ra ở đó
        ↓
    Bật "Receive Billing Alerts" ở TÀI KHOẢN THÀNH VIÊN
        ↓
    → vô nghĩa, họ không có chi phí tổng
        ↓
    → phải bật ở TÀI KHOẢN THANH TOÁN

⚠ Điểm mấu chốt thứ hai — chỉ số billing chỉ có ở us-east-1:

Chỉ số EstimatedCharges
        ↓
    Namespace: AWS/Billing
    Region: CHỈ us-east-1 (N. Virginia)
        ↓
    → dù bạn dùng Region nào, alarm billing
      PHẢI tạo ở us-east-1
        ↓
    → đây là bẫy rất hay gặp
        ↓
    Cập nhật: mỗi 6 GIỜ một lần
    → không phải công cụ theo dõi thời gian thực

⚠ Và vì sao là CloudWatch chứ không phải Config:

CloudWatch  → theo dõi CHỈ SỐ, so với NGƯỠNG
        ↓
    → billing alarm là một CloudWatch alarm
      trên chỉ số EstimatedCharges

AWS Config  → theo dõi CẤU HÌNH tài nguyên
        ↓
    → hoàn toàn không có khái niệm chi phí

Xem thêm câu #11831 (lô 128): cùng nguyên tắc — trong tổ chức, thao tác về hoá đơn (kích hoạt cost allocation tag) chỉ làm được ở tài khoản quản lý.

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

  • D (bật ở TỪNG tài khoản thành viên, đặt alarm CloudWatch ở tài khoản thanh toán) — đây là phương án gần nhất và vế alarm hoàn toàn đúng, nhưng bật tuỳ chọn ở tài khoản thành viên là thừa và vô ích: chúng không có dữ liệu chi phí tổng của tổ chức.

  • C (bật ở tài khoản thanh toán, đặt alarm trong AWS CONFIG) — vế đầu đúng, nhưng AWS Config không đặt được alarm theo ngưỡng chi phí.

  • B (bật ở từng tài khoản thành viên, alarm trong AWS Config) — sai cả hai vế.

Ghi nhớ

⚠ Billing alarm — bảng phải thuộc: | Đặc điểm | Nội dung | |---|---| | Bật ở đâu | TÀI KHOẢN THANH TOÁN — Billing preferences → Receive Billing Alerts | | Chỉ số | EstimatedCharges, namespace AWS/Billing | | Region | CHỈ us-east-1 — bẫy kinh điển | | Tần suất cập nhật | khoảng 6 giờ một lần | | Dimension | Currency (bắt buộc), ServiceName, LinkedAccount | | Hành động | SNS |

Từ khoá nhận diện:

"cảnh báo khi chi phí vượt ngưỡng" → AWS Budgets (tốt hơn), hoặc billing alarm "billing alarm không hiện chỉ số" → chưa bật preference, hoặc sai Region "chi phí tăng bất thường" → Cost Anomaly Detection "vì sao chi phí tăng" → Cost Explorer "chi tiết theo giờ, theo tài nguyên" → Cost and Usage Report

⚠ AWS Budgets — thường là lựa chọn TỐT HƠN billing alarm: | Đặc điểm | Nội dung | |---|---| | Lọc được | theo tài khoản, dịch vụ, TAG, cost category | | Loại ngân sách | chi phí, mức dùng, RI/SP utilization và coverage | | Cảnh báo theo dự báo | báo khi DỰ BÁO sẽ vượt, chứ không đợi vượt thật | | Nhiều ngưỡng | ví dụ 50%, 80%, 100% | | Budget Actions | tự áp SCP hoặc dừng instance khi vượt | | Chi phí | 2 ngân sách đầu miễn phí, sau đó tính phí nhỏ |

Bốn công cụ chi phí — nhắc lại Việc
Cost Explorer phân tích, nhóm, dự báo, khuyến nghị mua sắm
Budgets cảnh báo và HÀNH ĐỘNG khi vượt ngưỡng
Cost Anomaly Detection phát hiện bất thường bằng học máy — miễn phí
Cost and Usage Report dữ liệu thô chi tiết nhất, đổ ra S3
Billing alarm cách cũ, đơn giản, chỉ theo tổng chi phí
Thiết lập cảnh báo chi phí đầy đủ Bước
1 Bật Receive Billing Alerts ở tài khoản thanh toán
2 Kích hoạt cost allocation tag để lọc theo dự án
3 Budgets cho tổng, và cho từng tài khoản/đội
4 Cost Anomaly Detection cho các đợt tăng bất thường
5 SNS tới đúng người chịu trách nhiệm, không chỉ tới một hộp thư chung
6 Xem lại ngưỡng mỗi quý
Quyền cần để xem dữ liệu chi phí Nội dung
Bật truy cập cho IAM Billing preferences → Activate IAM Access
Thiếu bước này kể cả người có AdministratorAccess cũng không vào được Billing
Chính sách aws-portal:ViewBilling, ce:*, budgets:*
Thực hành tốt tạo role chỉ đọc chi phí cho đội tài chính

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Chỉ số có tồn tại không | CloudWatch ở us-east-1 → namespace AWS/Billing | | Alarm có gửi được không | set-alarm-state --state-value ALARM rồi xem hộp thư | | Đăng ký SNS đã xác nhận chưa | list-subscriptions-by-topic |

Và một khuyến nghị nên nói rõ dù đề chọn billing alarm: với hệ thống mới, hãy dùng AWS Budgets thay vì billing alarm. Budgets lọc được theo tag và theo tài khoản, cảnh báo được theo dự báo chứ không đợi tới lúc đã vượt, và còn kích hoạt được hành động tự động — trong khi billing alarm chỉ nhìn được đúng một con số tổng, cập nhật sáu giờ một lần.

Câu 409 AWS Cost Management

A company’s management team need to view and track and the cost of separate projects within an AWS account. A SysOps administrator must setup the account so that this information can be viewed for each project in AWS Cost Explorer.

What must the administrator do to set this up?

  1. A

    Activate cost allocation tags. Tag resources based on the project they are associated with.

  2. B

    Use cost categories to define custom groups that are based on AWS cost and usage dimensions.

  3. C

    Create billing alerts in AWS Budgets that track the resources associated with each project.

  4. D

    Use AWS Organizations and enable consolidated billing. Create AWS Cost and Usage Reports.

Xem giải thích

Đáp án

A — KÍCH HOẠT cost allocation tag, và GẮN TAG cho tài nguyên theo dự án.

Vì sao đúng

Muốn Cost Explorer chia chi phí theo dự án thì phải làm đủ hai việc, và phương án A nêu đúng cả hai.

⚠ Điểm mấu chốt — hai bước, thiếu một là không thấy gì:

BƯỚC 1 — GẮN TAG lên tài nguyên
        ↓
    Project=Alpha, Project=Beta…
    trên EC2, RDS, S3, Lambda, EBS…
        ↓
    Công cụ: Tag Editor, CloudFormation, Terraform
        ↓
BƯỚC 2 — KÍCH HOẠT làm cost allocation tag
        ↓
    Billing → Cost Allocation Tags → Activate
        ↓
    Chưa kích hoạt → tag CÓ trên tài nguyên
    nhưng KHÔNG hiện trong Cost Explorer

⚠ Và một ràng buộc về thời gian phải nói rõ với ban quản lý:

Sau khi kích hoạt
        ↓
    Mất TỚI 24 GIỜ dữ liệu mới xuất hiện
        ↓
    Và KHÔNG áp ngược cho chi phí quá khứ
        ↓
    → chi phí của tháng trước sẽ KHÔNG BAO GIỜ
      chia được theo tag này
        ↓
    → kích hoạt càng sớm càng tốt

⚠ Xem kết quả ở đâu:

Cost Explorer → Group by → Tag → Project
        ↓
    → biểu đồ chi phí theo từng dự án
        ↓
    Muốn cảnh báo:  Budgets lọc theo tag đó
    Muốn chi tiết:  Cost and Usage Report

Xem thêm câu #11854 và #11831 (lô 128): cùng chùm cost allocation tag. #11831 bổ sung chi tiết quan trọng — trong tổ chức, bước kích hoạt chỉ làm được ở tài khoản quản lý.

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

  • B (dùng cost categories để định nghĩa nhóm tuỳ chỉnh dựa trên các chiều chi phí) — đây là phương án gần nhất và cost category là công cụ có thật, rất hữu ích, nhưng nó nhóm chi phí theo quy tắc trên các chiều đã có (tài khoản, dịch vụ, tag…). Nó vẫn cần tag làm dữ liệu đầu vào khi muốn chia theo dự án trong cùng một tài khoản. Là công cụ bổ trợ, không thay thế bước gắn và kích hoạt tag.

  • C (tạo billing alert trong AWS Budgets theo dõi tài nguyên của từng dự án) — Budgets cảnh báo khi vượt ngưỡng, không phân tích và trình bày chi phí. Và bản thân Budgets cũng cần tag đã kích hoạt mới lọc được theo dự án.

  • D (dùng Organizations, bật consolidated billing, tạo Cost and Usage Report) — consolidated billing gộp chi phí giữa các TÀI KHOẢN, trong khi đề nói rõ là chia theo dự án trong MỘT tài khoản.

Ghi nhớ

⚠ Bốn công cụ chi phí — bảng phải thuộc: | Công cụ | Việc | |---|---| | Cost Explorer | xem, lọc, nhóm, dự báo — 13 tháng lịch sử | | Cost and Usage Report | chi tiết nhất: theo GIỜ, theo từng tài nguyên | | Budgets | cảnh báo và hành động khi vượt ngưỡng | | Cost Anomaly Detection | phát hiện bất thường bằng học máy | | Cost Categories | nhóm chi phí theo quy tắc riêng của công ty |

Từ khoá nhận diện:

"chia chi phí theo dự án / phòng ban" → gắn tag + KÍCH HOẠT tag "nhóm nhiều tài khoản và dịch vụ thành một 'đơn vị kinh doanh'" → cost category "cảnh báo khi vượt ngân sách" → Budgets "chi phí tăng bất thường" → Cost Anomaly Detection "tag không hiện trong Cost Explorer" → chưa kích hoạt, hoặc chưa qua 24 giờ

Vì sao tag không hiện trong Cost Explorer Nguyên nhân
Chưa kích hoạt nguyên nhân số một
Chưa qua 24 giờ phải chờ
Kích hoạt sai tài khoản trong tổ chức phải làm ở tài khoản quản lý
Tài nguyên chưa được gắn tag Tag Editor kiểm tra được
Sai chính tả hoa thường Project khác project
Dịch vụ không hỗ trợ không phải dịch vụ nào cũng đưa tag vào hoá đơn
Hai loại cost allocation tag Nội dung
Do AWS sinh tiền tố aws: — aws:createdBy, aws:cloudformation:stack-name
Do người dùng định nghĩa tiền tố user: trong CUR
Sửa được không aws: không sửa, không xoá; user: toàn quyền
Đều phải KÍCH HOẠT mới dùng được
Ép gắn tag — ba tầng Cách
Tag Policy (Organizations) chuẩn hoá định dạng và giá trị
SCP với aws:RequestTag CHẶN tạo tài nguyên thiếu tag
Config required-tags phát hiện tài nguyên đã có mà thiếu
Hạ tầng dạng mã Terraform default_tags, CloudFormation
Bộ tag chuẩn nên có Ví dụ
Project hoặc CostCenter chia chi phí — cái đề này cần
Environment prod / staging / dev
Owner ai chịu trách nhiệm
Application ứng dụng nào
DataClassification mức nhạy cảm
Chốt sớm quy ước hoa thường và danh sách giá trị hợp lệ

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Tag đã kích hoạt chưa | Billing → Cost Allocation Tags — cột Status | | Tài nguyên nào chưa gắn tag | Tag Editor, lọc "tag không tồn tại" | | Dữ liệu đã về chưa | Cost Explorer → Group by → Tag |

Và một điều nên chốt trước khi gắn tag hàng loạt: quy ước về chữ hoa chữ thường. Cost Explorer coi Project, project và PROJECT là ba tag hoàn toàn khác nhau, nên chỉ cần vài người gõ khác nhau là báo cáo chi phí bị chẻ thành nhiều nhánh vô nghĩa — và Tag Policy của Organizations chính là công cụ để ép quy ước đó ngay từ đầu.

Câu 410 Chọn nhiều đáp án AWS Networking & Content Delivery

A company runs a web application that runs from Amazon EC2 instances in a VPC. The application is fronted by an Application Load Balancer (ALB) and an Amazon CloudFront distribution. The backend uses an Amazon DynamoDB table. A SysOps administrator needs to investigate HTTP Layer 7 status codes from the web application.

Which log sources contain the status codes? (Select TWO.)

  1. A

    Amazon DynamoDB logs

  2. B

    Amazon CloudTrail logs

  3. C

    CloudFront access logs

  4. D

    VPC Flow Logs

  5. E

    ALB access logs

Xem giải thích

Đáp án

C và E — CloudFront ACCESS LOG và ALB ACCESS LOG.

Vì sao đúng

Mã trạng thái HTTP là khái niệm của tầng 7, và trong kiến trúc này chỉ hai thành phần ghi lại chúng.

⚠ Điểm mấu chốt — đường đi của request và nơi có log tầng 7:

Người dùng
    │
    ▼
CLOUDFRONT  ──► access log: sc-status
    │           (200, 403, 502, 504…)
    ▼
ALB         ──► access log: elb_status_code
    │                     VÀ target_status_code
    ▼
EC2         ──► log ứng dụng (nếu có đẩy đi)
    │
    ▼
DYNAMODB    ──► không có khái niệm HTTP status
                của ứng dụng

⚠ ALB access log có HAI cột mã trạng thái — rất hữu ích:

elb_status_code     → ALB trả cho client
target_status_code  → EC2 trả cho ALB
        ↓
    So hai cột biết ngay lỗi ở đâu:
        ↓
    elb 502, target rỗng → EC2 không phản hồi,
                           hoặc phản hồi sai định dạng
    elb 503, target rỗng → KHÔNG CÓ target khoẻ mạnh
    elb 504, target rỗng → EC2 quá chậm (timeout)
    elb 500, target 500  → lỗi trong ỨNG DỤNG

⚠ CloudFront log phân biệt lỗi ở EDGE hay ở ORIGIN:

x-edge-result-type
        ↓
    Hit / Miss / RefreshHit  → cache
    Error                    → lỗi
    LimitExceeded            → chạm giới hạn
        ↓
x-edge-response-result-type
        ↓
    → đối chiếu với sc-status để biết
      CloudFront tự trả lỗi hay origin trả lỗi

Xem thêm câu #11887 (lô 129): gần như cùng một câu hỏi, cùng đáp án CloudFront access log + ALB access log, và cũng cùng chữ cái C và E. Khoá nhất quán.

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

  • D (VPC Flow Logs) — đây là phương án gần nhất vì cũng là log mạng, nhưng flow log ghi ở tầng 3/4: IP, cổng, giao thức, số byte, ACCEPT/REJECT. Không có mã HTTP nào.

  • B (CloudTrail logs) — ghi lời gọi API tới AWS, không ghi request HTTP của người dùng tới ứng dụng.

  • A (DynamoDB logs) — DynamoDB không có access log kiểu đó; hoạt động của nó được ghi qua CloudTrail data event, và cũng không phải mã HTTP của ứng dụng.

Ghi nhớ

⚠ Log ở tầng nào — bảng phải thuộc: | Nguồn | Tầng | Có mã HTTP | |---|---|---| | CloudFront access log | 7 | CÓ — sc-status | | ALB access log | 7 | CÓ — elb_status_code + target_status_code | | API Gateway access log | 7 | có | | NLB access log | 4 | KHÔNG | | VPC Flow Logs | 3/4 | KHÔNG — chỉ ACCEPT/REJECT | | CloudTrail | API | mã lỗi API, không phải HTTP |

Từ khoá nhận diện:

"mã trạng thái HTTP, lỗi 5xx" → ALB và CloudFront access log "gói tin bị chặn" → VPC Flow Logs "ai gọi API nào" → CloudTrail "truy vấn DynamoDB nào chậm" → CloudWatch metrics + Contributor Insights "phân tích khối lượng log lớn" → Athena trên S3

Mã 5xx của ALB — chẩn đoán nhanh Nguyên nhân
502 Bad Gateway target trả phản hồi sai định dạng, hoặc đóng kết nối
503 Service Unavailable KHÔNG CÓ target khoẻ mạnh
504 Gateway Timeout target không trả lời trong idle timeout
500 thường là lỗi từ chính ứng dụng
460 client đóng kết nối trước khi ALB trả lời
463 header X-Forwarded-For quá nhiều IP
Mã lỗi của CloudFront Nguyên nhân
502 không kết nối được origin, hoặc lỗi SSL với origin
503 origin quá tải
504 origin timeout — chỉnh Origin Response Timeout
403 bucket policy / OAC, hoặc WAF chặn, hoặc geo restriction
404 không có đối tượng ở origin
Bật và phân tích log Nội dung
ALB access log ghi ra S3, phải tự bật, cần bucket policy riêng
CloudFront access log ra S3, hoặc real-time log vào Kinesis
Phân tích Athena — tài liệu AWS có sẵn DDL mẫu
Vòng đời lifecycle rule để log không tích tụ vô hạn
Nhanh hơn CloudWatch Logs Insights nếu đã đẩy vào CloudWatch
Chỉ số nên nhìn cùng với log Nội dung
ALB HTTPCode_ELB_5XX_Count ↔ HTTPCode_Target_5XX_Count
ALB TargetResponseTime, HealthyHostCount
CloudFront 5xxErrorRate, OriginLatency, CacheHitRate
DynamoDB ThrottledRequests, SystemErrors, UserErrors
Cách dùng chỉ số để biết CÓ vấn đề, log để biết vấn đề GÌ

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Lỗi ở ALB hay ở ứng dụng | so HTTPCode_ELB_5XX với HTTPCode_Target_5XX | | Lỗi ở edge hay ở origin | CloudFront log, cột x-edge-result-type | | Request cụ thể nào lỗi | Athena trên log ALB, lọc elb_status_code >= 500 |

Và một điều nên kiểm tra sớm khi backend là DynamoDB: chỉ số ThrottledRequests. Nếu bảng bị giới hạn thông lượng, ứng dụng sẽ trả 500 hoặc 503 lên ALB, và bạn sẽ thấy target_status_code = 500 trong log — nhưng nguyên nhân thật nằm ở tầng dữ liệu, không phải ở mã ứng dụng, và chỉ chỉ số của DynamoDB mới chỉ ra điều đó.