Ngân hàng đề — AWS Certified CloudOps Engineer Associate

Tìm thấy 585 câu.

Câu 341 AWS Security, Identity, & Compliance

The security team has notified a SysOps Administrator that there may be a vulnerable version of software installed on some Amazon EC2 instances. How can the Administrator verify if the vulnerable software is installed on the EC2 instances with the LEAST operational overhead?

  1. A

    Write some custom code that uses AWS Lambda to check the instances.

  2. B

    Use AWS CloudTrail to verify Amazon EC2 API activity in the account.

  3. C

    Create and run an Amazon Inspector assessment template.

  4. D

    Connect to each instance using SSH and check the software version.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề đặt ra tình huống: security team báo rằng có thể một phiên bản phần mềm dính lỗ hổng đang được cài trên một số EC2 instance, và SysOps Administrator cần xác minh xem phần mềm đó có thực sự nằm trên các instance hay không.

Có hai cụm từ quyết định:

  • "software installed on some Amazon EC2 instances" — thứ cần nhìn là những gì nằm bên trong hệ điều hành của instance (danh sách gói, phiên bản), chứ không phải hoạt động ở tầng API hay tầng hạ tầng. Cụm này loại thẳng mọi phương án chỉ nhìn được từ bên ngoài instance.
  • "with the LEAST operational overhead" — đây là ràng buộc phân biệt các phương án cùng làm được việc. Nhiều phương án trong danh sách về lý thuyết đều dẫn tới câu trả lời, nhưng đề không hỏi "cách nào khả thi", mà hỏi cách nào tốn ít công vận hành nhất. Khi gặp cụm này, hãy ưu tiên dịch vụ quản lý sẵn (managed service) làm đúng việc đang cần, thay vì thứ phải tự viết hoặc tự làm tay.

Ghép hai ràng buộc lại: cần một công cụ quét được nội dung bên trong EC2 instance và có sẵn, không phải tự dựng.

✅ Vì sao đáp án đúng là đúng

Đáp án đúng theo tệp là C — Create and run an Amazon Inspector assessment template.

Amazon Inspector là dịch vụ đánh giá bảo mật tự động của AWS: nó dùng các security rule để phân tích tài nguyên AWS và phát hiện vấn đề bảo mật tiềm ẩn, đồng thời thu thập dữ liệu hành vi (telemetry) về tài nguyên đó — trong đó có phần mềm đang chạy trên EC2 instance.

Quy trình sử dụng đúng như đề gợi ý:

  1. Tạo assessment target — tập hợp các tài nguyên AWS muốn Inspector phân tích (ở đây là nhóm EC2 instance nghi ngờ).
  2. Tạo assessment template — bản thiết kế cấu hình cho lần đánh giá.
  3. Dùng template để khởi động một assessment run — quá trình theo dõi và phân tích, kết thúc bằng một tập findings.

Đây chính xác là công việc đang cần: hỏi "phần mềm dính lỗ hổng có nằm trên các instance này không" và nhận về danh sách findings, mà không phải viết một dòng code nào cũng không phải đăng nhập vào từng máy. Vì Inspector là dịch vụ có sẵn, phần việc của Administrator chỉ là cấu hình và chạy — đúng tinh thần LEAST operational overhead.

❌ Vì sao các phương án còn lại sai

A — Write some custom code that uses AWS Lambda to check the instances. Đây là phương án gần đúng nhất và cũng là cái dễ chọn nhầm: về mặt kỹ thuật nó làm được, Lambda hoàn toàn có thể được viết để đi kiểm tra các instance. Chỗ nó hỏng là ở ràng buộc của đề: Administrator phải tự thiết kế, tự viết, tự kiểm thử và tự bảo trì đoạn code đó — tốn thời gian hơn hẳn so với việc chỉ cần tạo và chạy một Inspector template có sẵn. Đề hỏi ít overhead nhất, không hỏi có khả thi không, nên "làm được nhưng tốn công hơn" vẫn là đáp án sai.

B — Use AWS CloudTrail to verify Amazon EC2 API activity in the account. Sai về bản chất, không phải sai vì tốn công. CloudTrail ghi lại hoạt động API trong tài khoản: ai gọi RunInstances, ai gọi TerminateInstances, từ đâu, lúc nào. Việc cài một gói phần mềm bên trong hệ điều hành của instance không phải là một lời gọi API tới AWS, nên nó không để lại dấu vết nào trong CloudTrail. Dù có đọc hết log API cũng không thể suy ra phần mềm nào đang được cài trên máy — sai đối tượng quan sát.

D — Connect to each instance using SSH and check the software version. Phương án này thực ra cho ra đúng câu trả lời — nhìn trực tiếp vào máy thì chắc chắn biết phiên bản phần mềm. Nhưng nó vi phạm thẳng ràng buộc của đề: đây là cách làm hoàn toàn thủ công, phải lặp lại cho từng instance một. Số instance càng nhiều thì công sức càng tăng tuyến tính, chưa kể phải quản lý khoá SSH và quyền truy cập. Đúng kết quả nhưng sai tiêu chí lựa chọn.

📌 Điểm cần nhớ

  • Amazon Inspector là câu trả lời mặc định cho các câu hỏi dạng "quét lỗ hổng bảo mật / phần mềm dính lỗ hổng trên EC2 instance" mà không muốn tự dựng công cụ. Nhớ chuỗi khái niệm của nó: assessment target → assessment template → assessment run → findings.
  • Cụm "LEAST operational overhead" (hoặc "least administrative effort") là tín hiệu chọn managed service thay vì code tự viết (Lambda) hay thao tác tay (SSH). Khi nhiều phương án đều làm được, cụm này mới là thứ phân định.
  • CloudTrail nhìn tầng API, không nhìn bên trong OS. Câu nào hỏi về nội dung/cấu hình/phần mềm bên trong instance thì CloudTrail luôn là bẫy. Ngược lại, câu hỏi "ai đã làm gì với tài nguyên AWS" mới là địa hạt của nó.
  • Phân biệt hai kiểu sai trong cùng một câu: có phương án sai vì nhầm đối tượng (B — không bao giờ ra kết quả) và có phương án sai vì nhầm tiêu chí (A, D — ra kết quả nhưng tốn công hơn). Đọc kỹ ràng buộc trong đề để biết mình đang bị loại theo kiểu nào.
Câu 342 AWS Compute

A company run an application on a single Amazon EC2 instance in a single Availability Zone (AZ). The company requires that the application is made highly available. A SysOps Administrator has created an Application Load Balancer (ALB) and a launch configuration from the running instance. The Administrator needs to create an Auto Scaling group for the launch configuration.

How should the Auto Scaling group be configured to make the application highly available?

  1. A

    Use at least 2 regions with a minimum size of 1, desired capacity of 1, and a maximum size of 1.

  2. B

    Use at least 3 Availability Zones with a minimum size of 2, desired capacity of 2, and a maximum of 2.

  3. C

    Use at least 3 regions with a minimum size of 2, desired capacity of 2, and a maximum size of 2.

  4. D

    Use at least 2 Availability Zones with a minimum size of 1, desired capacity of 1, and a maximum size of 1.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một ứng dụng đang chạy trên một EC2 instance duy nhất, trong một Availability Zone duy nhất. Người quản trị đã tạo sẵn Application Load Balancer và launch configuration, việc còn lại là cấu hình Auto Scaling group.

Cụm từ quyết định đáp án là "made highly available" (làm cho ứng dụng có tính sẵn sàng cao). Đây không phải câu hỏi về scaling theo tải, cũng không phải về tối ưu chi phí — mọi phương án đều khoá min = desired = max nên không có phương án nào co giãn theo tải cả. Vì vậy tiêu chí duy nhất để phân biệt là: cấu hình nào chịu được sự cố mất một AZ mà ứng dụng vẫn còn instance phục vụ?

Từ đó rút ra hai ràng buộc phải thoả cùng lúc:

  1. Phải trải trên nhiều hơn một Availability Zone — vì rủi ro trong đề chính là "single AZ".
  2. Phải có từ 2 instance trở lên đang chạy, tức desired capacity ≥ 2 — trải nhiều AZ mà chỉ chạy 1 instance thì instance đó vẫn nằm gọn trong đúng một AZ.

Một chi tiết nữa cũng có tính loại trừ: Auto Scaling group là tài nguyên phạm vi region. Nó chọn được các subnet/AZ bên trong một region, chứ không "chọn nhiều region".

✅ Vì sao đáp án đúng là đúng

Đáp án đúng là B — dùng ít nhất 3 Availability Zones, min 2, desired 2, max 2.

Phương án này thoả cả hai ràng buộc: nó nói về AZ (đúng đơn vị mà ASG làm việc được), và nó giữ 2 instance chạy thường trực. Khi ASG có nhiều AZ, nó phân bổ instance sao cho cân bằng giữa các AZ, nên 2 instance sẽ nằm ở hai AZ khác nhau. Mất trọn một AZ thì instance ở AZ còn lại vẫn phục vụ, ALB tiếp tục điều hướng traffic tới target còn khoẻ — ứng dụng không đứt.

Ngoài ra, đặt min = 2 còn có ý nghĩa: nếu một instance chết, ASG buộc phải thay thế để quay về đúng số lượng tối thiểu, chứ không nằm im ở 1 instance.

Lưu ý cách diễn đạt trong đề: "at least 3 Availability Zones" — con số 3 ở đây là mức tối thiểu được nêu, và nó vẫn thoả yêu cầu "nhiều hơn một AZ". Điều làm phương án này đúng nằm ở chỗ AZ + desired 2, chứ không phải ở việc con số 3 là bắt buộc.

❌ Vì sao các phương án còn lại sai

A — ít nhất 2 regions, min 1, desired 1, max 1. Sai ở hai tầng. Thứ nhất, không thể cấu hình một Auto Scaling group trải qua nhiều region: ASG hoạt động trong phạm vi một region và chọn AZ/subnet bên trong region đó. Thứ hai, kể cả bỏ qua điểm đó thì desired = 1 vẫn để lại đúng một instance duy nhất — mất nó là mất luôn dịch vụ, đúng vấn đề mà đề đang muốn khắc phục.

C — ít nhất 3 regions, min 2, desired 2, max 2. Đây là phương án dễ chọn nhầm nhất vì phần con số (min/desired/max = 2) hoàn toàn đúng với yêu cầu HA. Nhưng nó hỏng ở đúng một chỗ: đơn vị là region chứ không phải AZ. ASG không cho chọn nhiều region, nên cấu hình này đơn giản là không tạo được. Đây là kiểu bẫy hay gặp — phần số liệu đúng nhưng phạm vi tài nguyên sai.

D — ít nhất 2 Availability Zones, min 1, desired 1, max 1. Cũng là phương án gần đúng: nó dùng đúng đơn vị AZ và đúng ý "trải nhiều AZ". Nhưng với desired = 1, tại một thời điểm chỉ có một instance duy nhất đang chạy, và nó nằm trong đúng một AZ. Khai báo nhiều AZ chỉ cho ASG quyền đặt instance ở AZ nào, chứ không tự nhân bản instance ra các AZ còn lại. AZ chứa instance đó sập là ứng dụng gián đoạn — ASG sẽ khởi tạo instance mới ở AZ khác, nhưng khoảng thời gian chờ đó chính là downtime, tức chưa đạt "highly available".

📌 Điểm cần nhớ

  • Auto Scaling group là tài nguyên trong phạm vi một region. Bất kỳ phương án nào nói "chọn nhiều region cho ASG" đều loại được ngay, bất kể các con số min/desired/max trông hợp lý đến đâu.
  • HA cần cả hai vế: nhiều AZ và desired capacity ≥ 2. Chỉ khai nhiều AZ mà giữ 1 instance thì instance đó vẫn nằm trong một AZ duy nhất — số AZ khai báo không tạo ra thêm bản sao nào.
  • Đặt min bằng số instance muốn duy trì (không để min = 1 khi cần 2) thì ASG mới bắt buộc phải thay thế instance hỏng để quay về mức đó.
  • Khi các phương án chỉ khác nhau ở đơn vị phạm vi (AZ hay region) và ở con số capacity, hãy kiểm tra hai thứ đó tách bạch: một phương án đúng số nhưng sai đơn vị vẫn là phương án sai.
Câu 343 AWS Compute

A legacy application is deployed on an Amazon EC2 m1.large instance and the CPU utilization is over 90% resulting in high latency. The application can only be scaled vertically. How can a SysOps Administrator resolve the performance issues?

  1. A

    Add additional m1.large instances to the application.

  2. B

    Upgrade to a compute-optimized instance.

  3. C

    Change the Amazon EBS volume to Provisioned IOPS.

  4. D

    Add a read replica to offload queries from the instance.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một ứng dụng cũ (legacy) chạy trên một EC2 instance loại m1.large, CPU utilization vượt 90% và hậu quả là latency cao. Câu hỏi: SysOps Administrator xử lý vấn đề hiệu năng thế nào?

Có hai cụm từ quyết định, phải đọc cùng lúc thì mới loại được các phương án gần giống nhau:

  1. "CPU utilization is over 90%" — nút thắt cổ chai nằm ở CPU, không phải disk I/O, không phải database. Mọi cách chữa không đụng tới CPU đều lạc đề.
  2. "The application can only be scaled vertically" — đây là ràng buộc mạnh nhất của câu. Ứng dụng legacy không chạy được nhiều bản song song (không stateless, không chia tải được), nên mọi hướng scale out (thêm instance, chia bớt tải sang chỗ khác) bị loại thẳng theo đề, bất kể kỹ thuật đó có hợp lý ở tình huống khác hay không.

Thêm một chi tiết nền: m1.large thuộc dòng general purpose thế hệ cũ, tỷ lệ CPU trên mỗi đơn vị bộ nhớ thấp — nó không phải instance family sinh ra để gánh workload nặng CPU.

✅ Vì sao đáp án đúng là đúng

B — Upgrade to a compute-optimized instance.

Scale vertically nghĩa là giữ nguyên một instance nhưng đổi sang instance type mạnh hơn, đúng thứ EC2 cho phép làm: stop instance, đổi instance type, start lại. Đây là cách duy nhất trong danh sách vừa tăng được năng lực xử lý vừa nằm trong ràng buộc "chỉ scale dọc".

Chọn compute-optimized (dòng C — C5, C6, C7…) thay vì chỉ nhảy lên một size lớn hơn của cùng family là vì đó là family được thiết kế cho workload CPU-bound: với cùng một mức tài nguyên, nó dành phần lớn cho vCPU và processor có hiệu năng trên mỗi core cao hơn. Bottleneck là CPU, nên đổi sang family thiên về CPU là cách khớp trực tiếp nhất giữa triệu chứng và cách chữa. Ngoài ra chuyển từ thế hệ m1 rất cũ sang thế hệ hiện tại còn được lợi thêm về hiệu năng phần cứng nói chung.

❌ Vì sao các phương án còn lại sai

A — Add additional m1.large instances to the application. Đây là phương án gần đúng nhất và cũng là bẫy chính. Thêm instance rồi chia tải là cách xử lý CPU cao rất kinh điển — nhưng nó là horizontal scaling (scale out), đúng thứ đề đã nói rõ ứng dụng không làm được. Đề đã tự chặn hướng này. Hỏng thêm ở chỗ nữa: kể cả có scale out được thì thêm chính loại m1.large đang nghẹt CPU cũng chỉ nhân bản một cấu hình không phù hợp với workload.

C — Change the Amazon EBS volume to Provisioned IOPS. Provisioned IOPS (io1/io2) giải quyết bottleneck storage I/O: disk latency cao, IOPS bị giới hạn, queue depth dài. Trong đề không có bất kỳ dấu hiệu nào về I/O — chỉ số duy nhất được nêu là CPU trên 90%. Nâng IOPS cho một máy đang nghẹt CPU thì latency vẫn y nguyên, chỉ tốn thêm tiền. Đây là lỗi kinh điển: chữa đúng kỹ thuật nhưng sai tài nguyên đang thắt cổ chai.

D — Add a read replica to offload queries from the instance. Sai ở hai tầng. Thứ nhất, read replica là khái niệm của database service (như Amazon RDS), còn đây là một application chạy trên EC2 — không có cơ chế "thêm read replica" cho một EC2 instance đang chạy app. Thứ hai, kể cả nếu có, việc san bớt truy vấn sang một node khác về bản chất vẫn là chia tải ra ngoài instance hiện tại, tức là scale out — lại vướng đúng ràng buộc "only scaled vertically" của đề.

📌 Điểm cần nhớ

  • Đọc ràng buộc trước, đọc triệu chứng sau. Câu nào có "can only be scaled vertically" thì mọi phương án thêm instance / chia tải / offload đều bị loại ngay, kể cả khi chúng là best practice trong đời thật. Ngược lại, thấy "scale horizontally" hay "highly available" thì hướng đổi instance type lại là hướng sai.
  • Khớp instance family với đúng loại tài nguyên đang nghẽn. CPU cao → compute-optimized (C family). Nghẽn RAM → memory-optimized (R family). Nghẽn disk I/O → storage-optimized hoặc đổi loại EBS volume. Nhận sai bottleneck là chọn sai family.
  • Provisioned IOPS chỉ chữa bottleneck I/O. Chỉ chọn khi đề nêu tín hiệu về disk: IOPS/throughput chạm trần, disk queue dài, latency đọc ghi ổ đĩa — không chọn khi chỉ số duy nhất được nêu là CPU.
  • Read replica gắn với database service, không gắn với EC2. Thấy "read replica" trong phương án mà đề không nói tới RDS hay một database managed nào, gần như chắc chắn đó là distractor.
  • Đề nhắc thế hệ instance cũ (m1, t1, c1…) thường là gợi ý ngầm rằng cách chữa nằm ở việc đổi sang instance type/thế hệ mới hơn.
Câu 344 AWS Management & Governance

A corporation has a collection of AWS accounts under AWS Organizations. As part of a security audit, they need to inspect the Virtual Private Cloud (VPC) settings in the AWS accounts assigned to their developers. The auditor, who has a separate AWS account, is responsible for conducting this inspection.

What would be the most secure approach to achieve this objective?

  1. A

    The security administrator should log into each developer account using the root user credentials to review the VPC configurations.

  2. B

    The security administrator should assume an IAM role in the developer AWS accounts that has the read-only permissions to review VPC configurations.

  3. C

    The security administrator should create IAM users in each developer account with full access permissions to review VPC configurations.

  4. D

    The security administrator should use the AWS Management Console of his own account to directly access and review the VPC configurations of the developer accounts.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Bối cảnh: một tập đoàn có nhiều AWS account nằm trong AWS Organizations. Người kiểm toán (auditor / security administrator) có một AWS account riêng, cần xem cấu hình VPC trong các account của đội developer. Đề hỏi cách làm an toàn nhất.

Ba cụm từ trong đề quyết định đáp án:

  • "who has a separate AWS account" — người kiểm toán đứng ở một account khác. Trong AWS, mỗi account là một ranh giới bảo mật độc lập: identity và quyền không tự động chảy từ account này sang account kia. Muốn với sang account khác phải có một cơ chế cross-account tường minh.
  • "inspect / review" — công việc chỉ là đọc. Đây là ràng buộc lọc ra phương án nào cấp quyền vượt nhu cầu.
  • "most secure approach" — đề không hỏi "cách nào chạy được", mà hỏi cách nào ít quyền thừa nhất và ít rủi ro credential nhất. Nhiều phương án dưới đây "chạy được", nhưng chỉ một phương án thoả cả hai tiêu chí đó.

Ghép ba ràng buộc lại: cần một cách vượt ranh giới account + chỉ quyền đọc + không phát tán credential dài hạn.

✅ Vì sao đáp án đúng là đúng

Đáp án B: security administrator assume một IAM role trong các developer account, role đó chỉ có quyền read-only để xem cấu hình VPC.

IAM role chính là cơ chế được thiết kế đúng cho tình huống này:

  • Role giải quyết ranh giới account. Role nằm trong developer account, trust policy của nó chỉ định account của auditor là bên được phép assume. Auditor gọi sts:AssumeRole và nhận về credential tạm thời để thao tác trong account đó. Không cần tạo thêm identity thường trú ở mỗi account.
  • Credential là tạm thời. Khác với access key của IAM user, credential từ assume role có thời hạn và tự hết hiệu lực. Auditor chỉ giữ quyền trong khoảng thời gian thực sự làm việc — lộ credential thì thiệt hại cũng bị giới hạn theo thời gian.
  • Không ai phải chia sẻ mật khẩu hay access key. Quyền truy cập được cấp bằng chính sách, không bằng việc trao tay bí mật.
  • Read-only đúng với principle of least privilege. Công việc là kiểm tra cấu hình VPC, nên quyền dừng ở mức đọc. Auditor không thể vô ý (hoặc cố ý) sửa gì trong môi trường developer.

Đây cũng là mô hình cross-account access chuẩn mà tài liệu IAM hướng dẫn, và hợp gu với môi trường AWS Organizations nhiều account.

❌ Vì sao các phương án còn lại sai

A — Đăng nhập từng developer account bằng root user credentials. Sai nặng nhất trong bốn phương án. Root user có quyền không giới hạn trên toàn bộ account, trong khi việc cần làm chỉ là đọc cấu hình VPC — chênh lệch quyền là cực đại. Tệ hơn, cách này bắt buộc phải chia sẻ credential root giữa nhiều người, làm mất khả năng truy vết ai đã làm gì và biến root thành credential dùng chung. Root credential đúng ra phải được khoá kỹ và gần như không dùng cho việc thường ngày.

C — Tạo IAM user ở mỗi developer account với quyền full access. Đây là phương án gần đúng nhất, và cần chỉ rõ nó hỏng ở đâu vì nó thật sự chạy được. Hai lỗi:

  1. Quyền vượt xa nhu cầu. "Full access" cho một công việc chỉ đọc là vi phạm thẳng principle of least privilege. Auditor có thể xoá hoặc sửa tài nguyên của developer.
  2. Credential dài hạn, nhân bản theo số account. Mỗi IAM user kéo theo password/access key tồn tại vô thời hạn cho tới khi có người chủ động xoay vòng hoặc thu hồi. Nhân lên nhiều developer account thì thành một tập credential rải rác, khó theo dõi và khó dọn khi cuộc kiểm toán kết thúc.

Nếu sửa C thành "IAM user với quyền read-only" thì nó vẫn thua B ở điểm credential thường trú — nhưng ở dạng đề ghi, C sai ở cả hai vế.

D — Dùng AWS Management Console của chính account auditor để truy cập thẳng VPC của developer account. Phương án này không hoạt động, chứ không chỉ là kém an toàn. Trong AWS, mỗi account là một thực thể tách biệt; identity và permission không được chia sẻ mặc định giữa các account. Có quyền trong account của mình không có nghĩa là có quyền đó ở account khác. Muốn nhìn sang account khác từ console, vẫn phải thiết lập một cơ chế cross-account — mà cơ chế đó chính là cross-account IAM role, tức là quay về đáp án B. Nói cách khác, D mô tả kết quả mong muốn mà bỏ qua cơ chế bắt buộc để đạt được nó.

📌 Điểm cần nhớ

  • Cross-account access trong AWS = IAM role. Thấy đề nhắc "một account cần với sang account khác", phản xạ đầu tiên là assume role, không phải tạo user hay dùng credential dùng chung.
  • Role cấp credential tạm thời, IAM user cấp credential dài hạn. Với truy cập không thường xuyên (audit, hỗ trợ, vận hành theo phiên), credential tạm thời luôn là lựa chọn an toàn hơn.
  • Bám sát principle of least privilege. Đề nói "review/inspect" thì quyền phải dừng ở read-only; bất kỳ phương án nào ghi "full access" hay "root" gần như chắc chắn là bẫy.
  • Root user không phải công cụ vận hành hằng ngày. Phương án nào yêu cầu đăng nhập bằng root hoặc chia sẻ root credential thì loại ngay, không cần đọc tiếp.
  • Quyền không tự lan qua ranh giới account — đừng chọn phương án ngầm giả định rằng đăng nhập vào account của mình là thấy được tài nguyên account khác.
Câu 345 AWS Security, Identity, & Compliance

A company has deployed a new web application. Following the release, penetration testing revealed a cross-site scripting vulnerability that could expose user data.
Which AWS service will mitigate this issue?

  1. A

    AWS WAF

  2. B

    AWS KMS

  3. C

    AWS Shield Standard

  4. D

    Amazon GuardDuty

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một ứng dụng web vừa phát hành, và đợt penetration testing phát hiện lỗ hổng cross-site scripting (XSS) có thể làm lộ dữ liệu người dùng. Câu hỏi: dịch vụ AWS nào mitigate được vấn đề này?

Cụm từ quyết định đáp án là "cross-site scripting vulnerability" đi kèm với động từ "mitigate". Hai chi tiết này phải đọc chung với nhau:

  • "cross-site scripting" khoanh vùng lớp tấn công: đây là một web exploit ở tầng ứng dụng (layer 7), kẻ tấn công nhét đoạn script độc vào request/nội dung để nó chạy trong trình duyệt nạn nhân. Nó không phải tấn công cạn kiệt băng thông, cũng không phải chuyện dữ liệu lưu trữ bị đọc trộm.
  • "mitigate" nghĩa là phải chặn được traffic độc hại, chứ không phải chỉ phát hiện hay cảnh báo. Đây chính là ràng buộc tách phương án A khỏi phương án D — một dịch vụ chỉ phân tích log và báo cáo thì không đáp ứng được từ "mitigate".

Ghép lại: cần một dịch vụ kiểm tra nội dung request HTTP/HTTPS ở tầng ứng dụng và chặn được request khớp mẫu tấn công XSS.

✅ Vì sao đáp án đúng là đúng

A — AWS WAF là đáp án đúng.

AWS WAF là một web application firewall: nó đứng trước ứng dụng web hoặc API và cho phép bạn viết các security rule quyết định traffic nào được đi tiếp, traffic nào bị chặn. Điểm mấu chốt là WAF làm việc ở tầng ứng dụng — nó đọc được nội dung request (URI, query string, header, body, cookie), nên nó nhìn thấy đúng chỗ mà payload XSS nằm.

WAF có sẵn các rule chống những common web exploit, trong đó cross-site scripting và SQL injection là hai kiểu được nêu đích danh. Bạn cũng tự định nghĩa được rule lọc các mẫu traffic riêng của mình. Vì WAF chặn request khớp rule chứ không chỉ ghi nhận, nó thoả đúng yêu cầu "mitigate" trong đề.

Đây là dịch vụ phù hợp nhất để giảm thiểu các tấn công web dùng kỹ thuật cross-site scripting.

❌ Vì sao các phương án còn lại sai

B — AWS KMS. KMS là dịch vụ tạo và quản lý encryption key. Nó phục vụ việc mã hoá dữ liệu (at rest, hoặc dữ liệu do ứng dụng tự mã hoá) và kiểm soát quyền dùng key. Đề có nhắc "expose user data" nên phương án này trông có vẻ liên quan tới bảo vệ dữ liệu — nhưng đó là bẫy từ khoá. XSS làm lộ dữ liệu bằng cách chạy script trong phiên trình duyệt của chính người dùng hợp lệ; lúc đó dữ liệu đã được giải mã và hiển thị bình thường. Mã hoá không ngăn được một script chạy dưới danh nghĩa nạn nhân. KMS nằm hoàn toàn ngoài đường đi của request HTTP nên không mitigate được gì ở đây.

C — AWS Shield Standard. Đây là phương án gần đúng nhất và cũng dễ nhầm nhất, vì Shield hay được nhắc chung một cặp với WAF trong tài liệu bảo mật. Nhưng Shield dùng để chống Distributed Denial of Service (DDoS) — tức là các tấn công nhắm vào tính sẵn sàng, làm ngập hệ thống bằng lưu lượng. Nó không thanh tra nội dung request để tìm đoạn script độc. Chỗ nó hỏng là sai lớp tấn công: đề nói lộ dữ liệu qua XSS, không nói ứng dụng bị làm cho ngừng phục vụ. Shield Standard đúng khi câu hỏi có từ khoá DDoS / volumetric / flood, không đúng ở đây.

D — Amazon GuardDuty. GuardDuty là dịch vụ phát hiện mối đe doạ, hoạt động bằng cách phân tích và xử lý các nguồn log: VPC Flow Logs, CloudTrail management event log, CloudTrail S3 data event log và DNS log. Hai điểm khiến nó sai: thứ nhất, nó chỉ phát hiện và sinh finding, không chặn traffic — trái với yêu cầu "mitigate"; thứ hai, các nguồn log nó đọc là log hạ tầng và log API, không phải nội dung request HTTP tầng ứng dụng, nên payload XSS vốn không xuất hiện trong tầm nhìn của nó. Đây là phương án gần đúng theo nghĩa "cũng là dịch vụ bảo mật", nhưng sai cả về vai trò lẫn về dữ liệu đầu vào.

📌 Điểm cần nhớ

  • Thấy từ khoá cross-site scripting hoặc SQL injection — hai tấn công web tầng ứng dụng kinh điển — thì phản xạ đầu tiên là AWS WAF.
  • Phân biệt WAF và Shield theo lớp tấn công: WAF lo web exploit ở layer 7 (nội dung request), Shield lo DDoS (tính sẵn sàng). Đề nói "lộ dữ liệu" → WAF; đề nói "ngập lưu lượng, không truy cập được" → Shield.
  • Phân biệt chặn (mitigate/prevent/block) với phát hiện (detect/alert/monitor). GuardDuty thuộc nhóm phát hiện dựa trên log; nếu đề đòi ngăn chặn ngay trên đường đi của request thì GuardDuty luôn là phương án loại.
  • Đừng chọn dịch vụ chỉ vì đề có chữ "data". KMS là quản lý encryption key, giải quyết chuyện dữ liệu bị đọc khi lưu trữ hoặc truyền, không liên quan tới lỗ hổng trong chính mã ứng dụng web.
Câu 346 AWS Security, Identity, & Compliance

A company is implementing cross-account access from a production account to a development account. An IAM role must be created and a permissions policy must be attached.

According to the AWS shared responsibility model, who is responsible for creating the IAM role and attaching the policy?

  1. A

    AWS is responsible for creating the role, and a SysOps Administrator is responsible for attaching the policy to the role.

  2. B

    A SysOps Administrator is responsible for creating the role, and AWS is responsible for attaching the policy to the role.

  3. C

    AWS is responsible for creating the role and attaching the policy.

  4. D

    A SysOps Administrator is responsible for creating the role and attaching the policy.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một tình huống rất quen: công ty thiết lập cross-account access từ production account sang development account, cần tạo một IAM role và gắn permissions policy vào role đó. Nhưng câu hỏi thật sự không hỏi làm thế nào để cấu hình cross-account access — nó hỏi ai chịu trách nhiệm.

Cụm từ quyết định nằm ở dòng thứ hai: "According to the AWS shared responsibility model, who is responsible...". Toàn bộ phần mô tả cross-account phía trên chỉ là bối cảnh; nó không thay đổi ranh giới trách nhiệm chút nào. Cụm từ thứ hai đáng chú ý là "creating the IAM role and attaching the policy" — cả hai đều là hành động cấu hình IAM, tức là thao tác trong đám mây, không phải vận hành bản thân đám mây.

Bốn phương án là bốn tổ hợp của hai câu hỏi con: ai tạo role, và ai gắn policy. Chỉ cần xác định đúng một nguyên tắc là loại được ba phương án cùng lúc.

✅ Vì sao đáp án đúng là đúng

Đáp án đúng theo tệp là D — A SysOps Administrator is responsible for creating the role and attaching the policy.

Trong shared responsibility model, AWS chịu trách nhiệm "security of the cloud": hạ tầng vật lý, trung tâm dữ liệu, phần cứng, tầng ảo hoá, và bản thân sự vận hành của các dịch vụ được quản lý — bao gồm cả việc giữ cho dịch vụ IAM chạy và thực thi đúng những gì khách hàng khai báo. Khách hàng chịu trách nhiệm "security in the cloud": dữ liệu của mình, cấu hình của mình, và quản lý danh tính cùng quyền truy cập.

Tạo IAM role và gắn permissions policy nằm trọn trong vế thứ hai. AWS cung cấp công cụ IAM, nhưng chỉ khách hàng mới biết production account nên cho development account làm được những gì, trust policy nên tin ai, và permissions policy nên rộng tới đâu. AWS không có cách nào — và cũng không có quyền — tự quyết định điều đó thay khách hàng. Vì vậy cả hai hành động đều thuộc về SysOps Administrator, tức người vận hành phía khách hàng.

❌ Vì sao các phương án còn lại sai

A — AWS tạo role, SysOps Administrator gắn policy. Sai ở vế đầu. AWS không tạo IAM role thay khách hàng. Role là một thực thể do khách hàng định nghĩa, kèm trust policy chỉ rõ principal nào được assume nó — ở đây là production account. Phương án này đúng được một nửa (vế gắn policy), nên nó dễ dụ người đọc lướt, nhưng chỉ cần một vế sai là cả phương án sai.

B — SysOps Administrator tạo role, AWS gắn policy. Đây là phương án gần đúng nhất và cũng nguy hiểm nhất, vì vế đầu chính xác. Chỗ hỏng nằm ở vế sau: AWS không gắn permissions policy vào role của khách hàng. Nội dung policy là một quyết định về bảo mật và nghiệp vụ — quyền nào được cấp, tài nguyên nào được chạm tới — và đó luôn là phần "in the cloud". Việc AWS có sẵn các managed policy để chọn cũng không đổi được điều này: khách hàng vẫn là người chọn và người thực hiện thao tác attach.

C — AWS tạo role và gắn policy. Sai ở cả hai vế, cùng lý do đã nêu ở A và B. Đây là cách hiểu sai phổ biến rằng "dịch vụ được quản lý nghĩa là AWS lo hết". Managed chỉ áp dụng cho hạ tầng và sự vận hành của dịch vụ, không áp dụng cho nội dung cấu hình mà khách hàng khai báo bên trong dịch vụ đó.

📌 Điểm cần nhớ

  • Ranh giới cốt lõi: AWS lo security of the cloud, khách hàng lo security in the cloud. Mọi câu hỏi về shared responsibility model đều quy về một câu này.
  • Mọi thao tác IAM — user, group, role, trust policy, permissions policy — đều thuộc trách nhiệm khách hàng. AWS chỉ vận hành dịch vụ IAM, không quyết định nội dung quyền.
  • Với phương án chia làm hai vế, phải kiểm tra cả hai. Chỉ một vế sai là loại; nhiều phương án bẫy được dựng bằng cách để một vế đúng cho quen mắt.
  • Bối cảnh kỹ thuật trong đề (ở đây là cross-account access) đôi khi chỉ là lớp vỏ. Đọc kỹ câu hỏi cuối cùng để biết đề đang kiểm tra khái niệm hay kiểm tra cách cấu hình.
Câu 347 Chọn nhiều đáp án AWS Compute

An AWS SysOps administrator has been tasked with the configuration of a high-performance computing (HPC) application, which is intended to operate on a resilient tier of Amazon EC2 instances. To ensure the smooth running of the application, it is critical that the latency between nodes is kept to a bare minimum.

How should the SysOps administrator proceed to achieve this? (Select TWO.)

  1. A

    Launch the EC2 instances in an Auto Scaling group within a single subnet.

  2. B

    Launch the EC2 instances in an Auto Scaling group across Availability Zones.

  3. C

    Launch the EC2 instances into a spread placement group.

  4. D

    Deploy the EC2 instances across multiple subnets to distribute the load.

  5. E

    Configure the EC2 instances in a cluster placement group.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một ứng dụng HPC (high-performance computing) chạy trên một tầng EC2 instances có tính resilient, và yêu cầu chọn HAI hành động.

Cụm từ quyết định đáp án là: "it is critical that the latency between nodes is kept to a bare minimum" — độ trễ giữa các node phải thấp nhất có thể. Đây là ràng buộc mạnh nhất trong đề, và nó đứng đối lập trực tiếp với cách bố trí hạ tầng thông thường vì mục tiêu sẵn sàng cao.

Cụm thứ hai cần để ý: "a resilient tier of Amazon EC2 instances" — nghĩa là vẫn phải giữ được số lượng instance mong muốn khi có instance chết. Chính chữ này giải thích vì sao Auto Scaling group xuất hiện trong đáp án.

Điểm mấu chốt: trong bộ phương án, mọi lựa chọn trải instance ra rộng hơn (nhiều Availability Zone, nhiều subnet, spread placement group) đều làm tăng khoảng cách vật lý giữa các node, tức là tăng latency. Chỉ những lựa chọn gom instance lại gần nhau mới thỏa yêu cầu. "Resilient" ở đây được đáp ứng bằng Auto Scaling, chứ không phải bằng cách rải qua nhiều AZ.

✅ Vì sao đáp án đúng là đúng

A — Launch the EC2 instances in an Auto Scaling group within a single subnet. Một subnet luôn nằm gọn trong một Availability Zone duy nhất. Ràng buộc instance vào một subnet duy nhất tức là ràng chúng vào cùng một AZ, nên lưu lượng giữa các node không phải đi qua liên kết giữa các AZ — đó là cách giữ latency ở mức thấp nhất. Đồng thời, Auto Scaling group vẫn duy trì đúng số instance mong muốn: instance nào hỏng sẽ được thay thế tự động, đáp ứng chữ "resilient" trong đề mà không phải hy sinh độ trễ.

E — Configure the EC2 instances in a cluster placement group. Trong các kiểu placement group, cluster placement group là kiểu cho latency thấp nhất và hiệu năng mạng (packet-per-second) cao nhất. Nó đạt được điều đó bằng cách đặt các instance sát nhau bên trong cùng một Availability Zone. Đây chính là kiểu bố trí AWS khuyến nghị cho các workload cần thông lượng mạng cao và độ trễ thấp giữa các node, đúng như ứng dụng HPC trong đề.

Hai phương án này bổ trợ nhau: E lo phần đặt instance sát nhau về mặt hạ tầng mạng, A lo phần giữ chúng trong cùng một subnet/AZ và tự động duy trì số lượng.

❌ Vì sao các phương án còn lại sai

B — Launch the EC2 instances in an Auto Scaling group across Availability Zones. Đây là phương án gần đúng nhất và dễ chọn nhầm nhất, vì trải qua nhiều AZ là thói quen mặc định trong hầu hết câu hỏi AWS về tính sẵn sàng. Nó thật sự tăng fault tolerance. Nhưng lưu lượng đi giữa các AZ phải vượt qua khoảng cách vật lý lớn hơn nhiều so với trong cùng một AZ, nên latency giữa các node tăng lên — đi ngược đúng ràng buộc "bare minimum latency" của đề. Ở câu này, latency được ưu tiên hơn khả năng chịu lỗi ở mức AZ.

C — Launch the EC2 instances into a spread placement group. Cũng là một phương án gần đúng vì nó vẫn là placement group, đúng "họ" giải pháp. Nhưng spread placement group phục vụ mục tiêu ngược lại: nó đặt các instance lên phần cứng riêng biệt để giảm rủi ro nhiều instance cùng chết một lúc. Tách rời phần cứng làm tăng tính chịu lỗi, nhưng không đảm bảo độ trễ tối thiểu giữa các node — thứ mà HPC cần. Chọn đúng loại placement group mới là chỗ phân biệt; chỉ nhớ "placement group" thôi là chưa đủ.

D — Deploy the EC2 instances across multiple subnets to distribute the load. Trải instance qua nhiều subnet, đặc biệt khi các subnet đó nằm ở các Availability Zone khác nhau, làm phát sinh thêm latency, trái với yêu cầu của ứng dụng HPC. Ngoài ra, mục tiêu mà phương án này nêu ra — "distribute the load" — không phải điều đề bài đang hỏi; đề hỏi cách giảm độ trễ giữa các node, không phải cách phân tán tải.

📌 Điểm cần nhớ

  • Đề nhắc "HPC" + "latency thấp nhất giữa các node" → nghĩ ngay tới cluster placement group. Đây là kiểu placement group cho latency thấp nhất và hiệu năng mạng cao nhất, nhờ đặt instance sát nhau trong cùng một AZ.
  • Phân biệt ba kiểu placement group theo mục tiêu, không theo tên: cluster = gom sát nhau để tối ưu mạng; spread = tách ra phần cứng riêng để giảm rủi ro hỏng đồng thời. Hai cái này loại trừ nhau về mục đích.
  • Một subnet luôn thuộc đúng một Availability Zone. Vì vậy "trong một subnet duy nhất" đồng nghĩa với "trong một AZ duy nhất" — đây là mẹo đọc đề rất hay dùng.
  • "Resilient" không mặc nhiên bằng "multi-AZ". Khi đề đặt latency lên trên hết, tính resilient được đáp ứng bằng Auto Scaling group tự thay instance hỏng, còn việc trải qua nhiều AZ thì bị loại vì làm tăng độ trễ.
Câu 348 AWS Management & Governance

An application is deployed on three separate environments using AWS CloudFormation. The environments, development, test, and production, each require unique credentials to access external services.

Which option provides a secure means for providing the required credentials with a MINIMUM of operational overhead?

  1. A

    Use parameters to pass the credentials to the CloudFormation template. Use the user data script to insert the parameterized credentials into the EC2 instances.

  2. B

    Use a separate CloudFormation template for each environment. In the Resources section, include a user data script for each EC2 instance. Use the user data script to insert the proper credentials for the environment into the EC2 instances.

  3. C

    Use AWS Systems Manager Parameter Store to store the credentials as secure strings. Pass an environment tag as a parameter to the CloudFormation template. Use the user data script to insert the environment tag in the EC2 instances.

  4. D

    Use separate Amazon Machine Images (AMIs) for each environment with the required credentials. Pass the environment tag as a parameter to the CloudFormation template and us mappings to map the environment tag to the proper AMI.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề mô tả một ứng dụng được triển khai bằng AWS CloudFormation trên ba môi trường tách biệt — development, test và production — mỗi môi trường cần một bộ credentials riêng để gọi dịch vụ bên ngoài.

Câu hỏi có hai ràng buộc chồng lên nhau, và phải thoả cả hai:

  • "a secure means for providing the required credentials" — cách cung cấp credentials phải an toàn. Đây là cụm loại bỏ mạnh nhất: bất kỳ phương án nào để credentials nằm ở dạng đọc được (trong template, trong user data, hay nướng sẵn vào AMI) đều rớt.
  • "with a MINIMUM of operational overhead" — chữ MINIMUM viết hoa trong đề là tín hiệu quen thuộc: khi còn nhiều phương án cùng "chạy được", cái nào ít việc phải duy trì thủ công nhất sẽ thắng. Nhân bản template hay nhân bản AMI theo từng môi trường đều là nhân ba khối lượng bảo trì.

Cụm quyết định là "secure" + "MINIMUM operational overhead" áp lên bối cảnh ba môi trường dùng chung một ứng dụng. Lời giải đúng phải giữ một template duy nhất, và để credentials nằm ngoài template.

✅ Vì sao đáp án đúng là đúng

Đáp án đúng theo tệp là C: lưu credentials trong AWS Systems Manager Parameter Store dưới dạng secure string, truyền environment tag làm parameter cho CloudFormation template, rồi dùng user data script đưa tag môi trường đó vào EC2 instance.

Cơ chế hoạt động:

  1. Parameter Store là nơi lưu trữ dữ liệu cấu hình và secrets theo cấu trúc phân cấp — password, chuỗi kết nối database, AMI ID, license code đều lưu được. Kiểu SecureString cho phép giữ giá trị ở dạng mã hoá thay vì chữ thô.
  2. Parameters trong CloudFormation cho phép truyền giá trị tuỳ biến vào template mỗi lần tạo hoặc cập nhật stack. Ở đây giá trị truyền vào không phải credentials, mà chỉ là tên môi trường — một chuỗi vô hại kiểu dev/test/prod.
  3. User data script nhận tên môi trường đó và, lúc khởi động, EC2 instance tự gọi Parameter Store để lấy credentials tương ứng với môi trường của mình.

Điểm mấu chốt: credentials không bao giờ đi qua template, qua parameter, hay qua user data. Thứ đi qua chỉ là cái nhãn chỉ đường. Và vì đường dẫn tham số được suy ra từ nhãn môi trường, một template duy nhất phục vụ được cả ba môi trường — đúng vế "MINIMUM operational overhead". Xoay vòng credentials sau này cũng chỉ là cập nhật giá trị trong Parameter Store, không đụng tới template.

❌ Vì sao các phương án còn lại sai

A. Truyền credentials làm parameter của CloudFormation, rồi user data script chèn vào EC2. Đây là phương án gần đúng nhất về mặt vận hành — nó vẫn giữ một template chung, không nhân bản gì cả. Nhưng nó hỏng ở vế bảo mật: credentials được nhập trực tiếp và truyền đi ở dạng không được bảo vệ. User data thì bất kỳ ai có quyền đọc metadata của instance hoặc mô tả stack đều có thể chạm tới. Cách đúng là để credentials trong một dịch vụ chuyên lưu secret như Parameter Store, chứ không tự tay bưng chúng qua template.

B. Một CloudFormation template riêng cho mỗi môi trường, mỗi cái có user data script cắm sẵn credentials của môi trường đó. Hỏng cả hai vế. Về bảo mật: vẫn là đưa credentials qua user data script, vốn không được mã hoá — y hệt lỗi của A. Về vận hành: giờ có ba template phải giữ đồng bộ, mỗi lần sửa ứng dụng là sửa ba chỗ, và credentials nằm cứng trong file template. Đây là phương án đi ngược lại chữ MINIMUM rõ nhất.

C. — đáp án đúng, đã phân tích ở trên.

D. AMI riêng cho từng môi trường có sẵn credentials, truyền environment tag làm parameter rồi dùng mappings ánh xạ tag sang AMI đúng. Phần cơ chế của D thực ra khá tinh vi — dùng parameter môi trường cộng với section Mappings để chọn tài nguyên là kỹ thuật CloudFormation hợp lệ, và nó cũng giữ được một template chung. Chỗ chết nằm ở chỗ khác: credentials được nướng thẳng vào AMI. Một AMI là ảnh đĩa, ai có quyền khởi tạo instance từ nó là có credentials. Ngoài ra mỗi lần đổi credentials là phải dựng lại AMI cho cả ba môi trường — overhead cao chứ không thấp. Đừng để phần "mappings" trông chuyên nghiệp che mất chỗ hỏng thật.

📌 Điểm cần nhớ

  • Credentials không bao giờ được đi qua CloudFormation parameter, user data script, hay AMI. Ba chỗ này đều đọc được ở dạng chữ thô đối với người có quyền tương ứng. Thấy phương án nào làm vậy là loại ngay, kể cả khi phần còn lại của nó nghe hợp lý.
  • Mẫu chuẩn cho nhiều môi trường: truyền nhãn môi trường, không truyền bí mật. Instance dùng nhãn đó để tự tra secret từ Parameter Store lúc khởi động. Đây là mô hình lặp đi lặp lại trong đề thi AWS.
  • "MINIMUM operational overhead" gần như luôn nghiêng về một artifact dùng chung, không nghiêng về nhân bản template/AMI theo môi trường. Cứ thấy phương án nào bắt duy trì N bản song song là nghi ngờ ngay.
  • Parameter Store kiểu SecureString là câu trả lời mặc định cho "lưu credentials có mã hoá, ít công vận hành" — nó lưu được password, chuỗi kết nối DB, AMI ID, license code theo cấu trúc phân cấp, rất hợp để tổ chức theo từng môi trường.
Câu 349 AWS Storage

A SysOps Administrator needs to know the number of objects in an Amazon S3 bucket and noticed a discrepancy between an Amazon CloudWatch report and the output of the AWS CLI.

Which S3 feature can the Administrator use to get a definitive answer?

  1. A

    AWS Management Console

  2. B

    Object tags

  3. C

    Amazon S3 inventory

  4. D

    Amazon S3 analytics

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề đặt ra một tình huống rất cụ thể: SysOps Administrator cần biết số lượng object trong một S3 bucket, và đang thấy con số từ CloudWatch không khớp với kết quả chạy AWS CLI. Câu hỏi là: dùng feature nào của S3 để có được câu trả lời dứt khoát?

Cụm từ quyết định là "definitive answer" (câu trả lời dứt khoát), đi kèm với bối cảnh "discrepancy" giữa hai nguồn số liệu. Đây chính là ràng buộc phân biệt các phương án.

Vì sao cụm này quan trọng: metric NumberOfObjects trong CloudWatch là storage metric ghi mỗi ngày một lần, tức là ảnh chụp có độ trễ chứ không phải số thời gian thực. Còn aws s3 ls của CLI thì liệt kê theo thời điểm chạy lệnh, và với bucket lớn còn phụ thuộc vào việc phân trang có chạy hết hay không, có bật versioning hay không. Hai nguồn lệch nhau là chuyện bình thường. Đề không hỏi "cách nào nhanh nhất" hay "cách nào rẻ nhất" mà hỏi cách nào cho ra một bản kê có thẩm quyền, đầy đủ, kiểm chứng được — nên phải chọn feature sinh ra được một danh sách object đầy đủ dưới dạng báo cáo.

✅ Vì sao đáp án đúng là đúng

Đáp án đúng theo tệp là C — Amazon S3 inventory.

S3 inventory tạo ra file báo cáo liệt kê các object trong bucket kèm metadata tương ứng, xuất ra định dạng CSV, Apache ORC hoặc Apache Parquet, theo lịch hằng ngày hoặc hằng tuần, áp cho cả bucket hoặc cho một prefix được chỉ định.

Điểm mấu chốt: kết quả là một danh sách liệt kê từng object, không phải một con số ước lượng do dịch vụ giám sát tổng hợp lại. Administrator chỉ cần đếm số dòng trong file inventory là ra con số chính xác, và quan trọng hơn — con số đó kiểm chứng được, vì đi kèm là danh sách chi tiết chứ không phải một điểm dữ liệu duy nhất. Đúng như đề yêu cầu: "definitive answer".

❌ Vì sao các phương án còn lại sai

A — AWS Management Console

Đây là phương án gần đúng nhất và cũng là bẫy dễ mắc, vì Console rõ ràng có hiển thị nội dung bucket. Nhưng Console không cho ra một con số tổng số object của bucket; nó hiển thị nội dung theo từng trang, theo từng prefix. Với bucket có hàng triệu object, cuộn tay qua giao diện không thể gọi là "definitive answer" — nó vừa không đầy đủ vừa không dùng lại được. Console là công cụ để duyệt và thao tác, không phải công cụ kiểm kê.

B — Object tags

Tag là cặp key–value gắn lên object, phục vụ phân loại, phân quyền theo tag, lọc trong lifecycle rule hoặc phân bổ chi phí. Bản thân tag không hề đếm cái gì cả. Muốn biết bao nhiêu object mang một tag nào đó thì vẫn phải có một cơ chế khác liệt kê chúng ra. Tag hoàn toàn không giải quyết bài toán của đề.

C — Amazon S3 inventory — đáp án đúng, đã giải thích ở trên.

D — Amazon S3 analytics

Đây là phương án gây nhầm nhiều nhất vì tên nghe rất giống "phân tích để ra số liệu". Nhưng S3 analytics (Storage Class Analysis) phục vụ đúng một mục đích: phân tích pattern truy cập dữ liệu để gợi ý storage class phù hợp — chẳng hạn dữ liệu nào ít truy cập và nên chuyển sang lớp lưu trữ rẻ hơn. Nó trả lời câu hỏi "dữ liệu này nên nằm ở đâu", không trả lời câu hỏi "bucket này có bao nhiêu object". Nhầm lẫn ở đây là nhầm giữa phân tích hành vi truy cập và kiểm kê nội dung.

📌 Điểm cần nhớ

  • Thấy từ khoá "definitive answer" / "list of objects" / "audit" / "kiểm kê" đi cùng S3 → nghĩ ngay tới S3 inventory. Nó cho ra file liệt kê (CSV/ORC/Parquet) chạy theo lịch ngày hoặc tuần.
  • Phân biệt hai cái tên dễ lẫn: S3 inventory = liệt kê object có gì, còn S3 analytics = phân tích access pattern để chọn storage class. Chỉ khác một chữ nhưng mục đích không liên quan gì nhau.
  • CloudWatch storage metric của S3 là số liệu ghi định kỳ, không phải số thời gian thực, nên lệch với kết quả aws s3 ls là điều bình thường — bản thân sự lệch đó không phải lỗi cần sửa, mà là dấu hiệu cần một nguồn kiểm kê có thẩm quyền hơn.
  • Object tags dùng để phân loại, phân quyền và lọc trong lifecycle rule — đừng chọn nó cho bất kỳ câu nào hỏi về đếm, thống kê hay báo cáo số lượng.
Câu 350 AWS Storage

A manager has requested that all Amazon S3 buckets must have logging enabled due to compliance requirements. A SysOps Administrator needs to ensure that the compliance requirements are met whilst allowing teams to continue to create S3 buckets.

How can this be achieved for both existing and new S3 buckets?

  1. A

    Create an AWS Lambda function to automatically delete any Amazon S3 buckets if logging is not enabled.

  2. B

    Create an IAM policy that restricts the ability to create new buckets to specific teams.

  3. C

    Auto remediate any non-compliant S3 buckets with the AWS Config managed rule S3_BUCKET_LOGGING_ENABLED.

  4. D

    Create a CloudWatch Alarm that notifies the Administrator when a bucket is created without logging enabled.

Xem giải thích

🧩 Phân tích nội dung câu hỏi

Đề đặt ra một yêu cầu tuân thủ: mọi S3 bucket đều phải bật logging (server access logging). SysOps Administrator phải bảo đảm yêu cầu này được đáp ứng.

Có hai cụm từ quyết định đáp án, và phải thoả cả hai:

  • "for both existing and new S3 buckets" — giải pháp phải xử lý được cả bucket đã tồn tại từ trước lẫn bucket tạo mới sau này. Một cơ chế chỉ phản ứng với sự kiện tạo bucket sẽ bỏ sót toàn bộ bucket cũ.
  • "whilst allowing teams to continue to create S3 buckets" — không được chặn hay hạn chế quyền tạo bucket của các nhóm. Đây là cụm từ loại thẳng phương án đi theo hướng siết quyền.

Ngoài ra, yêu cầu là ensure compliance — tức là đưa tài nguyên về trạng thái tuân thủ, chứ không phải chỉ báo cho ai đó biết là đang vi phạm.

✅ Vì sao đáp án đúng là đúng

C — Auto remediate với AWS Config managed rule S3_BUCKET_LOGGING_ENABLED.

AWS Config đánh giá cấu hình tài nguyên so với các quy tắc (rule). Managed rule S3_BUCKET_LOGGING_ENABLED kiểm tra xem bucket có bật logging hay không và đánh dấu bucket nào là NON_COMPLIANT.

Điểm khớp với từng ràng buộc của đề:

  • Config quét toàn bộ bucket đang có trong phạm vi được ghi hình, không chỉ bucket mới — nên phần "existing" được phủ. Đồng thời rule tiếp tục đánh giá lại khi có bucket mới hoặc khi cấu hình thay đổi, nên phần "new" cũng được phủ. Một cơ chế duy nhất lo cả hai vế.
  • Phần auto remediation mới là thứ biến "phát hiện" thành "bảo đảm": Config gắn hành động khắc phục vào rule, tài nguyên nào không tuân thủ thì được sửa lại cho bật logging, không cần con người can thiệp từng bucket.
  • Không đụng gì tới quyền IAM của các nhóm — họ vẫn tạo bucket bình thường, chỉ là bucket nào thiếu logging thì bị sửa cho đúng chuẩn.

Đây chính là mô hình detective control + remediation mà AWS Config sinh ra để làm.

❌ Vì sao các phương án còn lại sai

A — Lambda tự động xoá bucket nào không bật logging.

Hỏng ở hai chỗ. Thứ nhất, phương án chỉ nói "tạo một Lambda function" mà không nêu cơ chế nhận diện hay trigger nào để gọi nó — không có nguồn sự kiện thì hàm đó không tự chạy. Thứ hai, và nặng hơn: hành động khắc phục ở đây là phá huỷ dữ liệu. Yêu cầu tuân thủ là "phải có logging", cách đáp ứng đúng là bật logging lên, không phải xoá bucket cùng toàn bộ object bên trong. Làm vậy sẽ gây sự cố cho các nhóm đang dùng, đi ngược tinh thần "để các nhóm tiếp tục làm việc bình thường" của đề.

B — IAM policy giới hạn quyền tạo bucket cho một số nhóm nhất định.

Đây là phương án đụng thẳng vào cụm từ khoá: đề nói rõ vẫn phải cho phép các team tạo bucket, còn phương án này lại đi cắt bớt quyền đó. Ngoài ra, giới hạn ai được tạo bucket hoàn toàn không liên quan tới việc bucket đó có bật logging hay không — một nhóm được phép tạo bucket vẫn có thể tạo ra bucket thiếu logging. Và phương án này không hề chạm tới các bucket đã tồn tại, tức là bỏ luôn nửa phạm vi mà đề yêu cầu.

D — CloudWatch Alarm báo cho Administrator khi có bucket được tạo mà không bật logging.

Đây là phương án gần đúng nhất về mặt "giám sát", nên cần nói rõ nó hỏng ở đâu:

  • CloudWatch Alarm hoạt động trên metric — nó theo dõi giá trị số vượt ngưỡng. Nó không phải công cụ để đánh giá trạng thái cấu hình của một tài nguyên, càng không phải để bắt sự kiện "một bucket vừa được tạo với cấu hình như thế này". Việc đánh giá cấu hình tài nguyên là địa hạt của AWS Config.
  • Kể cả nếu dựng được cảnh báo, nó chỉ thông báo chứ không khắc phục. Đề đòi "ensure the compliance requirements are met"; một cái email gửi tới Administrator chưa làm bucket nào tuân thủ cả — vẫn cần người vào sửa tay từng cái.
  • Cách diễn đạt "when a bucket is created" cho thấy nó chỉ nhắm vào bucket mới, bỏ qua toàn bộ bucket đã có từ trước.

📌 Điểm cần nhớ

  • Thấy đề hỏi về tuân thủ cấu hình tài nguyên (bật logging, bật encryption, chặn public access…) và yêu cầu phủ cả tài nguyên cũ lẫn mới → nghĩ ngay tới AWS Config managed rule, vì Config đánh giá toàn bộ tài nguyên hiện có chứ không chỉ phản ứng theo sự kiện tạo mới.
  • Phân biệt "phát hiện" với "bảo đảm/khắc phục": rule của Config chỉ đánh dấu NON_COMPLIANT; muốn tự động đưa về đúng chuẩn thì phải gắn thêm auto remediation. Đề dùng chữ "ensure" là dấu hiệu cần vế thứ hai này.
  • CloudWatch Alarm dựa trên metric, không dùng để đánh giá trạng thái cấu hình của tài nguyên; và bản chất nó chỉ thông báo, không sửa. Phương án "gửi cảnh báo cho admin" hầu như luôn thua phương án "tự động khắc phục" khi đề yêu cầu đảm bảo tuân thủ.
  • Cẩn thận với các phương án giới hạn quyền (IAM) hoặc xoá tài nguyên: nếu đề đã nói rõ người dùng phải tiếp tục làm việc bình thường thì đó là những phương án phá vỡ ràng buộc, dù chúng nghe có vẻ "chặt chẽ" về mặt bảo mật.