Ngân hàng đề — AWS Certified Solutions Architect Professional

Tìm thấy 1221 câu.

Câu 681 Chọn nhiều đáp án AWS Analytics

An application generates around 15 GB of statistical data each day and this is expected to increase over time. A Solutions Architect plans to store the data in Amazon S3 and use Amazon Athena to analyze the data. The data will be analyzed using date ranges.

Which combination of steps will ensure optimal performance as the data grows? (Select TWO.)

  1. A

    Store the data using Apache Hive partitioning in Amazon S3 using a key that includes a date.

  2. B

    Store each object in Amazon S3 with a key that uses a random string.

  3. C

    Store the data in Amazon S3 using Apache Parquet or Apache ORC formats.

  4. D

    Store the data in Amazon S3 compressed files less than 10 MB in size.

  5. E

    Store the data in separate buckets for each date range.

Xem giải thích

Đáp án

A, C — hai bước đảm bảo hiệu năng Athena khi dữ liệu lớn dần:

  • A — Lưu dữ liệu trong S3 theo phân vùng kiểu Apache Hive với khoá chứa ngày.
  • C — Lưu dữ liệu ở định dạng Apache Parquet hoặc Apache ORC.

Vì sao đúng

Athena tính tiền và tính thời gian theo số byte quét. Hai bước đúng là hai cách giảm con số đó mạnh nhất.

Kỹ thuật Mức giảm điển hình
Phân vùng theo ngày vài chục tới vài trăm lần
Định dạng cột (Parquet/ORC) 5–10 lần

⚠ Điểm mấu chốt: đề nói "dữ liệu được phân tích theo khoảng ngày" — nên phân vùng theo ngày là đòn bẩy lớn nhất:

Truy vấn có WHERE ngay BETWEEN ... AND ...
        ↓
    Athena đọc metadata phân vùng trong Glue Data Catalog
        ↓
    Loại ngay mọi thư mục ngoài khoảng ngày — không mở tệp nào trong đó
        ↓
    → chỉ quét đúng phần dữ liệu liên quan
    → chi phí gần như không tăng dù dữ liệu tích luỹ nhiều năm

Cấu trúc tiền tố kiểu Hive để Athena tự nhận phân vùng:

s3://du-lieu/nam=2026/thang=09/ngay=02/du-lieu.parquet
CREATE EXTERNAL TABLE thong_ke (...)
PARTITIONED BY (nam string, thang string, ngay string)
STORED AS PARQUET
LOCATION 's3://du-lieu/';

MSCK REPAIR TABLE thong_ke;

⚠ Cột phân vùng phải xuất hiện trong WHERE thì mới có tác dụng:

Bảng đã phân vùng nhưng truy vấn không lọc theo cột phân vùng
        ↓
    Athena không loại được thư mục nào
        ↓
    → quét toàn bộ, chậm như cũ, và KHÔNG có cảnh báo nào

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

  • E (lưu dữ liệu trong các bucket riêng cho từng khoảng ngày) — đây là phương án gần nhất và nó cũng tách dữ liệu theo thời gian, nên về nguyên tắc cũng giảm được lượng quét. Nhưng nó tệ hơn phân vùng theo mọi mặt: mỗi bucket thành một bảng riêng, nên truy vấn xuyên nhiều khoảng ngày phải UNION thủ công; số bucket trong một tài khoản có giới hạn; và việc quản lý quyền, lifecycle, replication phải lặp lại cho từng bucket. Phân vùng đạt cùng mục tiêu trong một bảng duy nhất.

  • B (lưu mỗi object với khoá dùng chuỗi ngẫu nhiên) — đây từng là lời khuyên cũ để phân tán tải trên S3, nhưng S3 đã tự động mở rộng theo tiền tố từ năm 2018 nên nó không còn cần thiết. Tệ hơn, khoá ngẫu nhiên phá huỷ khả năng phân vùng — không còn cấu trúc nào để Athena loại bỏ thư mục.

  • D (lưu các tệp nén nhỏ hơn 10 MB) — sai hướng. Quá nhiều tệp nhỏ làm Athena chậm vì chi phí liệt kê và mở từng tệp lấn át. Khuyến nghị là gộp thành các tệp cỡ 128 MB trở lên.

Ghi nhớ

⚠ Bốn cách giảm byte quét trong Athena — bảng phải thuộc, theo thứ tự hiệu quả: | Cách | Mức giảm | |---|---| | Phân vùng | lớn nhất — phải khớp cách truy vấn hay lọc | | Định dạng cột (Parquet/ORC) | 5–10 lần | | Nén (Snappy, GZIP) | 3–5 lần | | Gộp tệp nhỏ | tránh chi phí liệt kê |

Từ khoá nhận diện:

"analyzed using date ranges" → phân vùng theo ngày "optimal performance as data grows" → phân vùng + định dạng cột "khoá ngẫu nhiên" → lời khuyên đã lỗi thời, và phá phân vùng "tệp nhỏ hơn 10 MB" → SAI, tệp nhỏ làm chậm Athena "bucket riêng cho mỗi khoảng ngày" → phân mảnh, khó truy vấn xuyên khoảng

Kích thước tệp khuyến nghị Giá trị
Tối ưu 128 MB trở lên
Quá nhỏ chi phí liệt kê và mở tệp lấn át
Quá lớn giảm khả năng đọc song song
Parquet so với ORC Khác
Cả hai dạng cột, nén tốt, có thống kê theo khối
Parquet phổ biến hơn trong hệ sinh thái Spark
ORC nén tốt hơn chút với một số kiểu dữ liệu
Đều tốt hơn CSV/JSON rất nhiều —
Nạp phân vùng vào catalog Cách
MSCK REPAIR TABLE tiền tố dạng Hive khoa=giatri/
ALTER TABLE ADD PARTITION tiền tố không theo dạng Hive
Partition projection khi phân vùng rất nhiều, nạp metadata cũng chậm

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Truy vấn quét bao nhiêu | cột Data scanned trong lịch sử Athena | | Pruning có chạy không | so byte quét khi có và không có lọc phân vùng | | Phân vùng đã nạp chưa | SHOW PARTITIONS ten_bang; |

Và một lời khuyên: hãy so con số "Data scanned" trước và sau khi tối ưu, đừng chỉ nhìn thời gian chạy. Thời gian chạy dao động theo tải chung của dịch vụ nên rất dễ đánh lừa; byte quét thì tất định. Quan trọng hơn: nếu bạn phân vùng xong mà truy vấn quên đặt cột phân vùng vào WHERE, nó vẫn chạy đúng và trả kết quả đúng — chỉ là quét toàn bộ như cũ. Không có lỗi, không có cảnh báo, hoá đơn không đổi, và bạn tin rằng mình đã tối ưu xong.

Câu 682 AWS Management & Governance

A company is planning a move to the AWS Cloud and is creating an account strategy. There are various teams in the company and each team prefers to keep their resources isolated from other teams. The Finance team would like each team’s resource usage separated for billing purposes. The Security team will provide permissions to each team using the principle of least privilege.

Which account strategy will meet all of these requirements?

  1. A

    Create a new AWS account and use AWS CloudFormation to provides teams with the resources they require. Use cost allocation tags and a third-party billing solution to provide the Finance team with a breakdown of costs based on tags. Use IAM policies to control access to resources and grant the Security team full access.

  2. B

    Use AWS Organizations to create a management account. Create groups in Active Directory and assign them to roles in AWS to grant federated access. Apply tags to the resources for each team and separate bills based on tags. Control access to resources through IAM granting the minimum required privileges.

  3. C

    Use AWS Organizations to create a management account and create each team’s account from the management account. Create a security account for cross-account access. Apply service control policies on each account and grant the security team cross-account access to all accounts. The Security team will create IAM policies to provide least privilege access.

  4. D

    Create a separate AWS account for each team. Assign the security account as the management account and enable consolidated billing for all other accounts. Create a cross-account role for security to manage accounts.

Xem giải thích

Đáp án

C — Dùng AWS Organizations tạo management account và tạo tài khoản cho từng đội từ đó; tạo một tài khoản bảo mật cho truy cập liên tài khoản; áp SCP cho từng tài khoản và cho đội bảo mật quyền truy cập liên tài khoản tới mọi tài khoản; đội bảo mật tạo IAM policy theo quyền tối thiểu.

Vì sao đúng

Đề có ba yêu cầu từ ba nhóm khác nhau, và chiến lược tài khoản phải thoả cả ba.

Yêu cầu Cách đáp ứng
Mỗi đội cách ly tài nguyên mỗi đội một tài khoản riêng
Tách chi phí theo đội ranh giới tài khoản = ranh giới hoá đơn
Bảo mật cấp quyền tối thiểu tài khoản security với cross-account access

⚠ Điểm mấu chốt: ranh giới tài khoản cho ba thứ cùng lúc — cách ly, hoá đơn, và giới hạn sự cố:

Mỗi đội một tài khoản
        ↓
    Cách ly: đội A không thấy tài nguyên của đội B
    Hoá đơn: consolidated billing tách chi phí theo từng tài khoản, không cần tag
    Hạn mức: mỗi tài khoản có service quota riêng, không giành nhau
    Sự cố: một tài khoản bị xâm nhập không lan sang tài khoản khác

Đây là lý do tách tài khoản mạnh hơn tách bằng tag hay bằng IAM policy trong một tài khoản.

Vì sao cần tài khoản bảo mật riêng. Đội bảo mật cần nhìn được vào mọi tài khoản, nhưng không nên có danh tính nằm rải rác ở từng nơi. Một tài khoản security với cross-account role là mẫu chuẩn:

// Trong tài khoản của mỗi đội
{
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::<tai-khoan-security>:root"},
  "Action": "sts:AssumeRole"
}

⚠ SCP đặt trần, IAM policy cấp quyền — hai tầng bổ sung cho nhau:

SCP (do management account áp)
        ↓
    Giới hạn tối đa đội đó được dùng dịch vụ nào
        ↓
IAM policy (do đội bảo mật viết)
        ↓
    Cấp quyền cụ thể trong phạm vi trần đó
        ↓
    → quyền hiệu dụng = giao của cả hai

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

  • B (Organizations với management account; nhóm trong Active Directory gán vào IAM role để truy cập liên kết; gắn tag cho tài nguyên của từng đội và tách hoá đơn theo tag; IAM cấp quyền tối thiểu) — đây là phương án gần nhất và liên kết danh tính từ AD là thực hành tốt. Nhưng nó không tách tài khoản cho từng đội, nên yêu cầu đầu tiên — "mỗi đội muốn cách ly tài nguyên khỏi đội khác" — không đạt: mọi đội vẫn ở chung một tài khoản, chỉ được ngăn bằng IAM policy. Và tách chi phí bằng tag mong manh hơn nhiều so với ranh giới tài khoản: tài nguyên thiếu tag sẽ rơi vào mục không phân loại được.

  • D (tài khoản riêng cho mỗi đội; chỉ định tài khoản security làm management account; bật consolidated billing; tạo cross-account role cho bảo mật) — gần đúng nhưng đặt sai vai trò: tài khoản security không nên là management account. Management account có quyền đặc biệt (không bị SCP ràng buộc, quản lý toàn tổ chức) và nên được giữ trống, tách khỏi mọi khối lượng công việc kể cả công việc bảo mật.

  • A (một tài khoản duy nhất, dùng CloudFormation cấp tài nguyên; cost allocation tag và công cụ bên thứ ba để tách chi phí; IAM policy kiểm soát, cấp cho bảo mật quyền đầy đủ) — không cách ly được các đội, phụ thuộc công cụ ngoài để tách hoá đơn, và cấp quyền đầy đủ cho đội bảo mật đi ngược nguyên tắc quyền tối thiểu mà chính đề nêu.

Ghi nhớ

⚠ Mô hình tài khoản khuyến nghị của AWS — bảng phải thuộc: | Tài khoản | Vai trò | |---|---| | Management | chỉ quản lý tổ chức — giữ trống nhất có thể | | Log Archive | nhận log từ mọi tài khoản, không ai xoá được | | Audit / Security | quyền đọc để điều tra, chạy Security Hub và GuardDuty | | Workload | mỗi đội, mỗi môi trường một tài khoản |

Từ khoá nhận diện:

"mỗi đội cách ly tài nguyên" → tài khoản riêng cho từng đội "tách chi phí theo đội" → ranh giới tài khoản, không cần tag "tách chi phí bằng tag" khi có thể tách bằng tài khoản → mong manh hơn "security account làm management account" → không nên, giữ management trống "cấp quyền đầy đủ cho đội bảo mật" → trái nguyên tắc quyền tối thiểu

Ba lợi ích của ranh giới tài khoản Nội dung
Cách ly bảo mật sự cố không lan sang tài khoản khác
Tách chi phí consolidated billing tự tách theo tài khoản
Hạn mức riêng service quota không giành nhau giữa các đội
Công cụ dựng sẵn mô hình này Nội dung
AWS Control Tower dựng landing zone với OU, log archive, audit account, guardrail
Account Factory tạo tài khoản mới theo chuẩn đã định
Đội bảo mật nên có quyền gì Nguyên tắc
SecurityAudit đọc cấu hình bảo mật, không sửa
ReadOnlyAccess rộng hơn, đọc cả dữ liệu
Không nên quyền quản trị đầy đủ ở mọi tài khoản

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Chi phí có tách đúng không | Cost Explorer nhóm theo Linked Account | | Đội bảo mật vào được mọi tài khoản chưa | thử assume role vào từng tài khoản | | SCP có áp đúng không | thử hành động bị chặn trong tài khoản thành viên |

Và một lời khuyên: hãy giữ management account gần như trống và bật MFA phần cứng cho root của nó. Đây là tài khoản duy nhất trong tổ chức không bị SCP ràng buộc, và nó có quyền tạo, đóng, và di chuyển mọi tài khoản khác. Đặt bất kỳ khối lượng công việc nào vào đó — kể cả một công cụ bảo mật, kể cả một hàm Lambda nhỏ — là mở rộng bề mặt tấn công của thứ có quyền lực nhất mà bạn sở hữu. Nguyên tắc là: nếu một thứ có thể chạy ở tài khoản khác, nó nên chạy ở tài khoản khác.

Câu 683 AWS Networking & Content Delivery

A company has connected their on-premises data center to AWS using a single AWS Direct Connect (DX) connection using a private virtual interface. The company is hosting the front end for a business-critical application in an Amazon VPC. The back end is hosted on-premises and the company requires consistent, reliable, and redundant connectivity between the front end and back end of the application.

Which design would provide the MOST resilient connectivity between AWS and the on-premises data center?

  1. A

    Add an additional physical connection for the existing DX connection using the same network carrier and join the connections to a link aggregation group (LAG) on the same private virtual interface.

  2. B

    Install a second DX connection from a different network carrier and attach it to the same virtual private gateway as the first DX connection.

  3. C

    Create an AWS Managed VPN connection that uses the public internet and attach it to the same virtual private gateway as the DX connection.

  4. D

    Use multiple IPSec VPN connections to separate virtual private gateways and configure BGP to prioritize the DX connection.

Xem giải thích

Đáp án

B — Lắp một kết nối Direct Connect thứ hai từ nhà mạng KHÁC và gắn nó vào cùng virtual private gateway với kết nối đầu tiên.

Vì sao đúng

Đề đòi kết nối bền bỉ nhất cho một ứng dụng quan trọng. Nguyên tắc là loại bỏ từng điểm hỏng đơn lẻ, và nhà mạng là một trong số đó.

Điểm hỏng Cách loại bỏ
Một sợi cáp đứt kết nối thứ hai
Một thiết bị hỏng kết nối thứ hai
Một nhà mạng gặp sự cố nhà mạng khác

⚠ Điểm mấu chốt: dùng cùng một nhà mạng nghĩa là hai kết nối chia sẻ chung một điểm hỏng vô hình:

Hai kết nối, cùng một nhà mạng
        ↓
    Có thể đi chung một tuyến cáp, chung một thiết bị tổng hợp,
    chung một sự cố định tuyến của nhà mạng đó
        ↓
    → mất cả hai cùng lúc
        ↓
Hai kết nối, hai nhà mạng khác nhau
        ↓
    Đường đi vật lý và hạ tầng định tuyến độc lập
        ↓
    → đây là mức bền bỉ cao nhất trong bốn phương án

Vì sao gắn vào cùng virtual private gateway. Cả hai kết nối tới cùng VGW nghĩa là chúng cùng phục vụ một VPC, và BGP tự chọn đường còn sống — không cần thao tác gì khi một đường đứt.

⚠ AWS khuyến nghị hai kết nối tại HAI ĐỊA ĐIỂM Direct Connect riêng biệt cho mức SLA cao nhất:

Hai kết nối cùng một địa điểm DX
        ↓
    Sự cố cả toà nhà (mất điện, cháy) → mất cả hai
        ↓
Hai kết nối, hai địa điểm, hai nhà mạng
        ↓
    → mức bền bỉ tối đa mà Direct Connect cung cấp

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

  • A (thêm một kết nối vật lý nữa với CÙNG nhà mạng và gộp chúng vào một link aggregation group trên cùng private VIF) — đây là phương án gần nhất và LAG là công cụ có thật, hữu ích: nó gộp nhiều kết nối thành một đường logic để tăng băng thông. Nhưng nó không phải giải pháp cho tính bền bỉ: LAG đòi các kết nối phải kết thúc ở cùng một thiết bị AWS và cùng một địa điểm, nên nó không loại bỏ được sự cố thiết bị hay sự cố địa điểm. Và cùng nhà mạng nghĩa là vẫn chung điểm hỏng. LAG tăng thông lượng, không tăng khả năng chịu lỗi.

  • C (tạo VPN có quản lý qua Internet và gắn vào cùng virtual private gateway) — đây là mẫu dự phòng hợp lệ và phổ biến, nhưng nó cho mức bền bỉ thấp hơn một kết nối DX thứ hai: đường lùi chạy trên Internet công cộng, băng thông thấp hơn và độ trễ dao động. Nó là lựa chọn tiết kiệm, không phải lựa chọn "MOST resilient".

  • D (nhiều kết nối IPSec VPN tới các virtual private gateway riêng biệt, dùng BGP ưu tiên DX) — phức tạp và vẫn dựa trên Internet cho phần dự phòng. Việc dùng nhiều VGW riêng biệt còn làm rối định tuyến: mỗi VGW gắn với một VPC, nên nhiều VGW nghĩa là nhiều VPC — không khớp với mô tả của đề.

Ghi nhớ

⚠ Bốn mức bền bỉ của Direct Connect — bảng phải thuộc: | Mức | Cấu hình | |---|---| | Thấp nhất | một kết nối | | Cơ bản | một DX + một VPN dự phòng | | Cao | hai DX, cùng địa điểm | | Tối đa | hai DX, HAI địa điểm, hai nhà mạng, hai thiết bị router |

Từ khoá nhận diện:

"MOST resilient" → hai kết nối, hai nhà mạng, hai địa điểm "link aggregation group" → tăng BĂNG THÔNG, không tăng khả năng chịu lỗi "VPN qua Internet làm dự phòng" → hợp lệ nhưng bền bỉ thấp hơn DX thứ hai cùng nhà mạng → chung điểm hỏng vô hình cần băng thông lớn hơn → lúc đó LAG mới là công cụ đúng

LAG — điều cần nhớ Nội dung
Việc gộp nhiều kết nối thành một đường logic
Điều kiện cùng băng thông, cùng thiết bị AWS, cùng địa điểm
Tối đa 4 kết nối (hoặc 2 với cổng 100 Gbps)
Không phải giải pháp cho tính sẵn sàng
Đường lùi bằng VPN Đặc điểm
Chi phí rẻ hơn nhiều so với DX thứ hai
Băng thông mỗi tunnel giới hạn khoảng 1,25 Gbps
Độ trễ dao động theo Internet
Cấu hình BGP với AS path prepending để ưu tiên DX
Kiểm chứng dự phòng thật sự Cách
Rút thử đường chính trong cửa sổ bảo trì phép thử duy nhất đáng tin
Kiểm tuyến quảng bá đường dự phòng phải quảng bá đủ tuyến
Kiểm băng thông đường dự phòng có gánh nổi toàn bộ tải không

Ba việc kiểm chứng: | Việc | Cách | |---|---| | BGP có lên trên cả hai không | describe-virtual-interfaces, xem bgpPeers | | Đường dự phòng có nhận tải không | rút đường chính và quan sát | | Có dùng chung hạ tầng không | hỏi nhà mạng về đường đi vật lý |

Và một lời khuyên: hãy hỏi nhà mạng về đường đi vật lý thật của hai kết nối, đừng chỉ tin rằng hai hợp đồng khác nhau nghĩa là hai đường khác nhau. Đây là chỗ dự phòng trông hoàn hảo trên giấy mà không tồn tại trong thực tế: hai nhà mạng có thể thuê lại dung lượng trên cùng một tuyến cáp, hoặc cùng đi qua một điểm tập trung duy nhất trong thành phố. Cả hai kết nối đều xanh, BGP đều thiết lập, mọi chỉ số đều đẹp — cho tới ngày một chiếc máy xúc cắt đứt cả hai cùng lúc. Câu hỏi cần đặt ra với nhà cung cấp là "hai kết nối này có đi chung đoạn cáp nào không", và câu trả lời đôi khi gây bất ngờ.

Câu 684 AWS Security, Identity, & Compliance

The security department of a large company with several AWS accounts wishes to centralize the management of identities and AWS permissions. The design should also synchronize authentication credentials with the company’s existing on-premises identity management provider (IdP).

Which solution will meet the security department’s requirements?

  1. A

    Deploy the required IAM users, groups, roles, and policies in every AWS account. Create an AWS Organization and federate the on-premises identity management provider and the AWS accounts.

  2. B

    Create an AWS Organization with a management account that defines the SCPs for member accounts. Create a SAML-based identity management provider in each account and map users in the on-premises IdP groups to IAM roles.

  3. C

    Create a SAML-based identity management provider in a central account and map IAM roles that provide the necessary permissions for users. Create a centralized AWS Lambda function that replicates the identities in the on-premises IdP groups to the AWS accounts.

  4. D

    Create a SAML-based identity management provider in a central account and map IAM roles that provide the necessary permissions for users. Map users in the on-premises IdP groups to IAM roles. Use cross-account access to the other AWS accounts.

Xem giải thích

Đáp án

D — Tạo SAML-based identity provider trong một tài khoản trung tâm và ánh xạ các IAM role cấp quyền cần thiết; ánh xạ người dùng trong nhóm của IdP tại chỗ sang các IAM role; dùng cross-account access tới các tài khoản AWS khác.

Vì sao đúng

Đề đòi hai thứ: quản lý tập trung danh tính và quyền, và đồng bộ với IdP tại chỗ đang có.

Yêu cầu Cách đáp ứng
Dùng IdP tại chỗ SAML federation
Tập trung một chỗ một identity provider ở tài khoản trung tâm
Truy cập nhiều tài khoản cross-account role

⚠ Điểm mấu chốt: liên kết SAML nghĩa là KHÔNG tạo IAM user — danh tính vẫn nằm ở IdP tại chỗ:

Người dùng đăng nhập vào IdP của công ty
        ↓
    IdP phát SAML assertion, trong đó có thuộc tính Role
        ↓
    Gọi sts:AssumeRoleWithSAML
        ↓
    Nhận thông tin đăng nhập TẠM THỜI của IAM role
        ↓
    → không có IAM user nào để tạo, để xoá, để xoay vòng mật khẩu
    → nhân viên nghỉ việc: vô hiệu hoá ở IdP là mất quyền ở mọi tài khoản AWS

Đây là điều làm cho phương án D "đồng bộ" thật sự — không phải bằng cách sao chép danh tính, mà bằng cách không nhân bản chúng.

Vì sao dựng ở một tài khoản trung tâm rồi cross-account. Nó giữ điểm vào duy nhất: một chỗ để cấu hình IdP, một chỗ để kiểm toán, và các tài khoản khác chỉ cần tin tài khoản đó.

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

  • C (tạo SAML IdP ở tài khoản trung tâm và ánh xạ role — đúng; nhưng dùng một Lambda tập trung để NHÂN BẢN các danh tính từ IdP tại chỗ sang các tài khoản AWS) — đây là phương án gần nhất và nửa đầu của nó chính xác bằng đáp án đúng. Nhưng nửa sau đi ngược lại chính mục đích của liên kết danh tính: nhân bản danh tính nghĩa là tạo IAM user ở từng tài khoản, và từ đó bạn phải đồng bộ chúng mãi mãi. Mỗi lần nhân viên đổi nhóm hay nghỉ việc, Lambda phải chạy đúng ở mọi tài khoản — và mỗi lần nó chạy sai, bạn có một danh tính mồ côi còn quyền truy cập. Liên kết SAML tồn tại chính là để không phải làm việc đó.

  • B (Organization với SCP; tạo SAML IdP trong TỪNG tài khoản và ánh xạ nhóm IdP sang role ở mỗi nơi) — chạy được nhưng không tập trung: cấu hình IdP phải lặp lại ở mọi tài khoản, và mỗi lần đổi chứng chỉ ký của IdP thì phải cập nhật tất cả. Nó cũng gán cho SCP vai trò không đúng: SCP đặt trần, không quản lý danh tính.

  • A (triển khai IAM user, group, role, policy ở MỌI tài khoản; tạo Organization và liên kết IdP với các tài khoản) — mâu thuẫn nội tại: nếu đã liên kết IdP thì không cần IAM user; và tạo user ở mọi tài khoản là điều ngược hẳn với "quản lý tập trung".

Ghi nhớ

⚠ Bốn cách quản lý danh tính đa tài khoản — bảng phải thuộc: | Cách | Đặc điểm | |---|---| | IAM Identity Center | khuyến nghị hiện nay — permission set, tích hợp IdP sẵn | | SAML federation + cross-account role | mẫu cổ điển, vẫn đúng | | Tài khoản identity với IAM user | không dùng IdP ngoài | | IAM user ở từng tài khoản | không tập trung được |

Từ khoá nhận diện:

"đồng bộ với IdP tại chỗ" → SAML federation, KHÔNG nhân bản danh tính "centralize identities and permissions" → một chỗ cấu hình, cross-account role "Lambda nhân bản danh tính" → đi ngược mục đích của liên kết "tạo IdP trong từng tài khoản" → không tập trung, khó bảo trì "SCP để quản lý quyền" → SCP đặt trần, không cấp quyền

Ba mắt xích của liên kết SAML Nội dung
SAML provider trong IAM tải lên metadata của IdP
Trust policy của role principal là SAML provider đó
Attribute mapping ở IdP ánh xạ người dùng/nhóm sang role ARN
Thuộc tính SAML bắt buộc Nội dung
.../SAML/Attributes/Role <role-arn>,<provider-arn> — cả hai, ngăn bằng dấu phẩy
.../SAML/Attributes/RoleSessionName tên hiển thị trong CloudTrail
Vì sao IAM Identity Center tốt hơn Nội dung
Không cần cấu hình SAML ở từng tài khoản một lần cho cả tổ chức
Permission set gán nhóm vào tài khoản bằng vài cú bấm
Cổng đăng nhập một chỗ để vào mọi tài khoản

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Assertion có đúng không | giải mã SAMLResponse, đọc thuộc tính Role | | Ai đã đăng nhập | CloudTrail, sự kiện AssumeRoleWithSAML | | Nhân viên nghỉ việc có mất quyền không | vô hiệu hoá ở IdP rồi thử đăng nhập |

Và một lời khuyên: hãy kiểm chứng rằng vô hiệu hoá một tài khoản ở IdP thật sự cắt được quyền truy cập AWS ngay lập tức. Đây là lợi ích lớn nhất của liên kết danh tính và cũng là thứ dễ bị phá vỡ nhất mà không ai để ý: nếu ở đâu đó còn tồn tại một IAM user, một bộ access key dài hạn, hay một role có trust policy quá rộng, thì người đã nghỉ việc vẫn vào được — và quy trình offboarding của bộ phận nhân sự, vốn chỉ chạm tới IdP, sẽ không phát hiện điều đó. Phép thử tốn năm phút và trả lời một câu hỏi mà mọi cuộc kiểm toán đều hỏi.

Câu 685 AWS Networking & Content Delivery

A healthcare company has developed a series of microservices for processing patient data, hosted on AWS. These microservices are accessed through REST APIs managed by Amazon API Gateway. To comply with healthcare regulations, the company needs to ensure that these APIs are only accessible from their internal application, which runs on an Amazon EC2 instance within their AWS VPC. The application must securely access these APIs without exposing them to the public internet.

Which step should a solutions architect take to ensure that the REST APIs are securely accessible by the internal application, while complying with the healthcare regulations?

  1. A

    Create an interface VPC endpoint for API Gateway in the VPC. Enable private DNS naming for the VPC endpoint and configure an API resource policy that allows access from the VPC endpoint. Use the API endpoint's DNS names to access the API from the EC2 instance.

  2. B

    Set up an Elastic Load Balancer (ELB) in front of the API Gateway and restrict access to the ELB from the EC2 instance's security group.

  3. C

    Deploy a reverse proxy server in the VPC and configure it to forward requests to the API Gateway. Restrict access to the proxy server from the EC2 instance only.

  4. D

    Configure the API Gateway with a resource policy that restricts access to the IP range of the VPC in which the EC2 instance is running. Ensure the EC2 instance accesses the API Gateway using its public DNS name.

Xem giải thích

Đáp án

A — Tạo interface VPC endpoint cho API Gateway trong VPC; bật private DNS cho endpoint và cấu hình API resource policy cho phép truy cập từ endpoint đó; dùng tên DNS của API endpoint để gọi từ EC2.

Vì sao đúng

Đề đòi API chỉ truy cập được từ ứng dụng nội bộ trong VPC, và không phơi ra Internet. API Gateway có một kiểu endpoint dành riêng cho việc đó.

Yêu cầu Cách đáp ứng
Không phơi ra Internet private API endpoint + interface VPC endpoint
Chỉ VPC này gọi được resource policy với aws:SourceVpce
Gọi bằng tên DNS quen thuộc bật private DNS cho endpoint

⚠ Điểm mấu chốt: private API endpoint KHÔNG có địa chỉ công cộng — nó chỉ tồn tại bên trong VPC:

Regional hoặc edge-optimized endpoint
        ↓
    Có tên DNS công cộng, ai cũng gọi tới được (rồi bị resource policy chặn)
        ↓
Private endpoint
        ↓
    Chỉ phân giải và định tuyến được từ VPC có interface endpoint
        ↓
    → không có bề mặt công khai nào để mà tấn công
    → đây là điều kiện tuân thủ mà đề yêu cầu
// Resource policy của API
{
  "Effect": "Deny",
  "Principal": "*",
  "Action": "execute-api:Invoke",
  "Resource": "execute-api:/*",
  "Condition": {"StringNotEquals": {"aws:SourceVpce": "vpce-0abc123"}}
}

⚠ Bật private DNS là thứ cho phép gọi bằng tên chuẩn của API:

Không bật private DNS
        ↓
    Phải gọi bằng tên dài của endpoint kèm header Host
        ↓
Bật private DNS
        ↓
    Tên execute-api chuẩn phân giải về IP riêng của endpoint
        ↓
    → ứng dụng gọi như bình thường, không cần sửa mã
        ↓
    → điều kiện: VPC bật enableDnsSupport và enableDnsHostnames

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

  • D (resource policy giới hạn theo dải IP của VPC; EC2 gọi API bằng tên DNS CÔNG CỘNG) — đây là phương án gần nhất và resource policy thật sự lọc được truy cập. Nhưng nó không đạt yêu cầu cốt lõi: API vẫn có endpoint công khai, ai cũng gửi request tới được (dù bị từ chối), nên nó vẫn "exposed to the public internet" theo nghĩa mà quy định y tế quan tâm. Ngoài ra, lọc theo dải IP riêng của VPC không hoạt động khi request đi qua Internet — địa chỉ nguồn lúc đó là IP công cộng của NAT gateway, không phải dải riêng.

  • B (đặt ELB trước API Gateway và giới hạn truy cập ELB theo security group của EC2) — sai kiến trúc. Không đặt được ELB trước API Gateway theo cách này; API Gateway là dịch vụ có endpoint riêng, không phải target của load balancer. Và nó không giải quyết việc API vẫn phơi ra công khai.

  • C (dựng một reverse proxy trong VPC chuyển tiếp request tới API Gateway) — chạy được nhưng thêm một máy chủ phải vận hành, vá lỗi và làm cho sẵn sàng cao — trong khi interface endpoint là dịch vụ có quản lý làm đúng việc đó. Và API Gateway vẫn phơi ra công khai phía sau proxy.

Ghi nhớ

⚠ Ba kiểu endpoint của API Gateway — bảng phải thuộc: | Kiểu | Truy cập từ | |---|---| | Edge-optimized | Internet, qua mạng CloudFront của AWS | | Regional | Internet, từ một Region | | Private | CHỈ từ VPC qua interface endpoint |

Từ khoá nhận diện:

"không phơi ra Internet" + API Gateway → private endpoint + interface VPC endpoint "chỉ VPC này gọi được" → resource policy với aws:SourceVpce "resource policy theo dải IP riêng của VPC" → không hoạt động qua Internet "ELB trước API Gateway" → SAI kiến trúc "reverse proxy" khi có interface endpoint → thêm việc vận hành không cần thiết

Bốn bước dựng private API Thứ tự
1 tạo API với endpointConfiguration.types = PRIVATE
2 tạo interface VPC endpoint cho execute-api
3 bật private DNS cho endpoint
4 gắn resource policy giới hạn aws:SourceVpce
Điều kiện của private DNS Nội dung
VPC enableDnsSupport và enableDnsHostnames đều bật
Security group của endpoint cho phép cổng 443 từ nguồn cần dùng
Nhiều AZ tạo endpoint ở mọi AZ có tài nguyên
Private API không hỗ trợ Nội dung
Custom domain name hạn chế hơn so với Regional
Truy cập từ ngoài VPC kể cả qua Direct Connect thì vẫn phải qua interface endpoint

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Tên có phân giải về IP riêng không | dig <api-id>.execute-api.<region>.amazonaws.com từ EC2 | | Từ ngoài có gọi được không | thử từ máy ngoài VPC — phải không phân giải được | | Resource policy có chặn đúng không | thử từ một VPC endpoint khác |

Và một lời khuyên: hãy luôn gắn resource policy cho private API, đừng dựa vào việc nó "riêng tư" là đủ. Private endpoint giới hạn ai tới được API, nhưng nếu nhiều VPC hoặc nhiều tài khoản cùng có interface endpoint trỏ tới nó, tất cả đều gọi được — và với dữ liệu y tế, "trong mạng nội bộ" không đồng nghĩa với "được phép". Resource policy với aws:SourceVpce là thứ biến một ranh giới mạng thành một ranh giới cho phép tường minh, và nó là bằng chứng bạn đưa ra được khi có người hỏi ai truy cập được API đó.

Câu 686 AWS Storage

A company needs to close a data center and must migrate data to AWS urgently. The data center has a 1 Gbps internet connection and a 500 Mbps AWS Direct Connect link. The company must transfer 25 TB of data from the data center to an Amazon S3 bucket.

What is the FASTEST method of transferring the data?

  1. A

    Use the AWS Direct Connect link to upload the data to S3.

  2. B

    Copy the data to an 80 TB AWS Snowball device.

  3. C

    Upload the data to the S3 bucket using S3 Transfer Acceleration.

  4. D

    Use AWS DataSync to migrate the data to S3.

Xem giải thích

Đáp án

C — Tải dữ liệu lên bucket S3 bằng S3 Transfer Acceleration.

Vì sao đúng

Câu này giải bằng một phép tính. 25 TB với các đường truyền mà đề cho:

Đường Băng thông Thời gian (hiệu suất ~70%)
Internet 1 Gbps khoảng 3 ngày
Direct Connect 500 Mbps khoảng 6 ngày
Internet + Transfer Acceleration 1 Gbps, tối ưu đường đi nhanh hơn 3 ngày
Snowball — vận chuyển mất khoảng một tuần

⚠ Điểm mấu chốt: 1 Gbps là đường nhanh nhất đang có, và Transfer Acceleration làm cho nó nhanh hơn nữa:

Direct Connect chỉ 500 Mbps — chậm hơn Internet 1 Gbps
        ↓
    Nên dùng đường Internet
        ↓
Transfer Acceleration
        ↓
    Đưa dữ liệu vào mạng AWS tại điểm biên gần nhất
    Phần còn lại đi trên xương sống AWS thay vì Internet công cộng
        ↓
    → giảm mất gói và độ trễ, tăng thông lượng thực tế

Vì sao Snowball chậm hơn ở đây. Snowball là lựa chọn đúng khi băng thông không đủ — nhưng nó có độ trễ cố định không rút ngắn được: đặt thiết bị, chờ gửi tới, chép dữ liệu, gửi trả, AWS nhập vào S3. Tổng cộng thường khoảng một tuần, dài hơn ba ngày truyền qua mạng.

aws s3api put-bucket-accelerate-configuration \
  --bucket du-lieu --accelerate-configuration Status=Enabled

aws s3 cp ./du-lieu s3://du-lieu/ --recursive \
  --endpoint-url https://s3-accelerate.amazonaws.com

⚠ Transfer Acceleration không phải lúc nào cũng nhanh hơn — hãy đo trước:

Lợi ích lớn khi nguồn ở XA Region của bucket
        ↓
    Nếu trung tâm dữ liệu nằm ngay cạnh Region đó, mức cải thiện có thể không đáng kể
        ↓
    → AWS có công cụ so tốc độ chính thức; chạy nó trước khi trả thêm phí

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

  • A (dùng đường Direct Connect 500 Mbps để tải lên S3) — đây là phương án gần nhất và Direct Connect thường là lựa chọn tốt hơn về độ ổn định. Nhưng ở đây nó chậm hơn một nửa: 500 Mbps so với 1 Gbps của đường Internet. Đề hỏi cách NHANH NHẤT, và con số quyết định.

  • B (chép dữ liệu vào một thiết bị Snowball 80 TB) — đúng dung lượng nhưng chậm hơn vì thời gian vận chuyển. Snowball thắng khi băng thông quá thấp — ví dụ 25 TB qua 50 Mbps mất hai tháng — nhưng ở đây mạng đủ nhanh.

  • D (dùng AWS DataSync để chuyển dữ liệu sang S3) — DataSync là công cụ tốt cho việc chuyển dữ liệu có lịch, tự xác minh và chuyển phần thay đổi. Nhưng nó vẫn dùng chính đường truyền đang có — nó không tạo thêm băng thông. Với một lần chuyển duy nhất và tiêu chí là tốc độ, Transfer Acceleration tối ưu đường đi còn DataSync thì không.

Ghi nhớ

⚠ Phép tính băng thông — bảng phải thuộc: | Băng thông | Thời gian chuyển 25 TB (hiệu suất ~70%) | |---|---| | 50 Mbps | khoảng 60 ngày | | 500 Mbps | khoảng 6 ngày | | 1 Gbps | khoảng 3 ngày | | 10 Gbps | khoảng 8 giờ |

Công thức: thời gian ≈ dung lượng ÷ (băng thông × hiệu suất).

Từ khoá nhận diện:

"FASTEST method" → tính thời gian cho từng đường, chọn con số nhỏ nhất băng thông đủ → truyền qua mạng, Transfer Acceleration nếu ở xa băng thông không đủ → Snow Family "DataSync" → dùng chính đường truyền hiện có, không tăng băng thông Direct Connect chậm hơn Internet → so con số, đừng mặc định DX luôn tốt hơn

Khi nào chọn Snow Family Điều kiện
Thời gian truyền qua mạng dài hơn thời gian vận chuyển thường khi băng thông dưới ~100 Mbps với hàng chục TB
Không có kết nối đủ ổn định vùng xa, tàu biển
Cần chuyển một lần, khối lượng rất lớn hàng trăm TB trở lên
Transfer Acceleration Chi tiết
Cơ chế vào mạng AWS tại điểm biên CloudFront gần nhất
Endpoint <bucket>.s3-accelerate.amazonaws.com
Yêu cầu tên bucket không được chứa dấu chấm
Chi phí tính thêm phí mỗi GB
Đo trước công cụ so tốc độ chính thức của AWS
DataSync mạnh ở đâu Nội dung
Chuyển theo lịch, lặp lại tự chuyển phần thay đổi
Tự xác minh dữ liệu checksum
Không không tăng băng thông sẵn có

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Băng thông thực tế | đo bằng iperf ngoài giờ cao điểm | | Transfer Acceleration có nhanh hơn không | công cụ so tốc độ của AWS | | Đã chuyển đủ chưa | so số tệp và dung lượng hai đầu |

Và một lời khuyên: hãy đo băng thông thực tế trước khi cam kết một mốc thời gian, và dùng multipart upload cho mọi tệp lớn. Con số trên hợp đồng đường truyền hiếm khi là con số bạn nhận được: có giới hạn của nhà mạng, có lưu lượng nền, và với các luồng TCP đường dài thì cửa sổ truyền cũng ảnh hưởng đáng kể. Multipart upload giải quyết vế thứ hai — nó tải nhiều phần song song nên tận dụng được băng thông tốt hơn nhiều so với một luồng đơn, và khi một phần lỗi thì chỉ phải tải lại phần đó thay vì cả tệp.

Câu 687 AWS Compute

A company is planning to migrate 30 small applications to AWS. The applications run on a mixture of Node.js and Python across a cluster of virtual servers on-premises. The company must minimize costs and standardize on a single deployment methodology for all applications. The applications have various usage patterns but generally have a low number of concurrent users. The applications use an average usage of 1 GB of memory with up to 3 GB during peak processing periods which can last several hours.

What is the MOST cost effective solution for these requirements?

  1. A

    Migrate the applications to Amazon EC2 instances in Auto Scaling groups. Create separate target groups for each application behind an Application Load Balancer and use host-based routing. Configure Auto Scaling to scale based on memory utilization and set the threshold to 75%.

  2. B

    Migrate the applications to separate AWS Elastic Beanstalk environments. Enable Auto Scaling to ensure there are sufficient resources during peak processing periods. Monitor each AWS Elastic Beanstalk deployment with using CloudWatch alarms.

  3. C

    Migrate the applications to run on AWS Lambda with a separate function for each application. Use AWS CloudTrail logs and Amazon CloudWatch alarms to verify completion of important processes.

  4. D

    Migrate the applications to Docker containers on Amazon ECS. Create a separate ECS task and service for each application. Enable service Auto Scaling based on memory utilization and set the threshold to 75%. Monitor services and hosts by using Amazon CloudWatch.

Xem giải thích

Đáp án

D — Chuyển các ứng dụng sang container Docker trên Amazon ECS; tạo ECS task và service riêng cho mỗi ứng dụng; bật service Auto Scaling theo mức sử dụng bộ nhớ với ngưỡng 75%; giám sát bằng CloudWatch.

Vì sao đúng

Đề có ba dữ kiện quyết định: 30 ứng dụng nhỏ, chuẩn hoá một phương pháp triển khai duy nhất, và 1 GB bộ nhớ thường xuyên, lên tới 3 GB trong nhiều giờ khi cao điểm.

Yêu cầu Cách đáp ứng
Một phương pháp cho mọi ứng dụng container — Node.js và Python đều đóng gói được như nhau
30 ứng dụng nhỏ, ít người dùng nhiều container chia sẻ chung một cụm
Đỉnh 3 GB kéo dài nhiều giờ co giãn theo bộ nhớ
Chi phí thấp nhất gói nhiều ứng dụng lên cùng hạ tầng

⚠ Điểm mấu chốt: "peak processing periods which can last several hours" là thứ loại Lambda:

Lambda tối đa 15 phút mỗi lời gọi
        ↓
    Đề nói giai đoạn xử lý cao điểm kéo dài NHIỀU GIỜ
        ↓
    → nếu đó là các tác vụ chạy dài, Lambda không chạy nổi
        ↓
Container trên ECS
        ↓
    Chạy bao lâu cũng được, co giãn theo bộ nhớ

Vì sao container tiết kiệm nhất với 30 ứng dụng nhỏ. Mỗi ứng dụng chỉ dùng 1 GB bộ nhớ và có ít người dùng — nghĩa là một EC2 instance đủ lớn có thể chứa nhiều ứng dụng cùng lúc. Với EC2 riêng cho từng ứng dụng (phương án A) hay Elastic Beanstalk riêng cho từng cái (phương án B), bạn trả tiền cho 30 hạ tầng gần như nhàn rỗi.

⚠ Co giãn theo bộ nhớ đòi chỉ số tuỳ chỉnh với EC2, nhưng ECS có sẵn:

ECS service Auto Scaling
        ↓
    Có sẵn chỉ số MemoryUtilization ở mức service
        ↓
    → khai ngưỡng 75% là xong
        ↓
Auto Scaling group của EC2
        ↓
    KHÔNG có chỉ số bộ nhớ mặc định — phải cài CloudWatch agent

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

  • B (mỗi ứng dụng một môi trường Elastic Beanstalk riêng, bật Auto Scaling, giám sát bằng CloudWatch alarm) — đây là phương án gần nhất và Elastic Beanstalk thật sự là cách triển khai đơn giản, chuẩn hoá, hỗ trợ cả Node.js lẫn Python. Nhưng với 30 môi trường riêng, mỗi cái có ít nhất một EC2 chạy liên tục, chi phí cao hơn hẳn so với việc gói 30 container lên một cụm chung. Đề nhấn mạnh MOST cost effective, và đó là điểm quyết định.

  • A (mỗi ứng dụng một Auto Scaling group, target group riêng sau một ALB với host-based routing, co giãn theo bộ nhớ ngưỡng 75%) — cùng vấn đề chi phí như B, và nặng hơn về vận hành: 30 Auto Scaling group, 30 target group. Ngoài ra Auto Scaling group của EC2 không có chỉ số bộ nhớ sẵn — phải cài và cấu hình CloudWatch agent cho mọi máy.

  • C (chuyển sang Lambda, mỗi ứng dụng một hàm, dùng CloudTrail và CloudWatch alarm để xác nhận tiến trình hoàn thành) — vướng trần 15 phút với các giai đoạn xử lý kéo dài nhiều giờ. Nó cũng đòi viết lại ứng dụng theo mô hình hàm, trong khi đề chỉ nói chuyển lên AWS. Và CloudTrail không ghi việc ứng dụng hoàn thành tiến trình — nó ghi lời gọi API.

Ghi nhớ

⚠ Bốn lựa chọn tính toán theo hình thái tải — bảng phải thuộc: | Hình thái | Lựa chọn | |---|---| | Theo sự kiện, dưới 15 phút | Lambda | | Nhiều ứng dụng nhỏ, chạy liên tục | container trên ECS/EKS — gói chung hạ tầng | | Một ứng dụng, cần đơn giản | Elastic Beanstalk | | Cần kiểm soát máy | EC2 + Auto Scaling |

Từ khoá nhận diện:

"30 ứng dụng nhỏ" + "MOST cost effective" → container, gói chung cụm "standardize on a single deployment methodology" → container hoặc Beanstalk "peak periods last several hours" → loại Lambda "mỗi ứng dụng một môi trường Beanstalk" → 30 hạ tầng riêng, đắt co giãn theo bộ nhớ trên EC2 → cần CloudWatch agent, không có sẵn

Ba tầng Auto Scaling của ECS Việc
Service Auto Scaling số task của một service
Cluster Auto Scaling số container instance trong cụm
Fargate không cần quản instance, chỉ chỉnh task
Chỉ số có sẵn cho ECS service scaling Danh sách
ECSServiceAverageCPUUtilization CPU
ECSServiceAverageMemoryUtilization bộ nhớ — dùng cho bài này
ALBRequestCountPerTarget số request mỗi target
ECS trên EC2 so với Fargate Chọn
EC2 gói nhiều container lên một máy — rẻ hơn khi mật độ cao
Fargate không quản máy, trả theo task — đơn giản hơn, đắt hơn ở mật độ cao

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Mật độ container | số task đang chạy chia số instance | | Có bị thiếu bộ nhớ không | task bị dừng với mã thoát 137 | | Co giãn có kích hoạt không | lịch sử scaling của service |

Và một lời khuyên: hãy đặt memoryReservation (soft limit) thấp hơn memory (hard limit) trong task definition. Đây là thứ quyết định mật độ container mà bạn đạt được: soft limit là mức ECS dùng để quyết định xếp bao nhiêu task lên một máy, còn hard limit là trần mà container không được vượt. Nếu đặt cả hai bằng 3 GB — mức đỉnh — thì mỗi ứng dụng chiếm chỗ như thể nó luôn ở đỉnh, và bạn mất phần lớn lợi ích chi phí của việc dùng container. Đặt soft limit ở 1 GB (mức thường dùng) và hard limit ở 3 GB cho phép gói nhiều ứng dụng hơn, mà vẫn cho từng cái bung lên khi cần.

Câu 688 Chọn nhiều đáp án AWS Security, Identity, & Compliance

A business is transitioning its website from an on-premises setup to AWS, aiming to adopt a containerized microservice architecture for enhanced availability and cost efficiency. In line with the company's stringent security policies, which emphasize minimal privilege for network permissions and privileges, a solutions architect has already deployed the application on an Amazon ECS cluster.

To align with these security requirements post-deployment, what two actions should be taken? (Select TWO.)

  1. A

    Set up the tasks using the awsvpc network mode for enhanced network isolation and control.

  2. B

    Configure the tasks to operate in the bridge network mode within the ECS environment.

  3. C

    Assign security groups directly to the tasks and inject IAM credentials into the containers at startup for resource access.

  4. D

    Attach security groups to the individual tasks and utilize IAM roles specifically designed for tasks to access other AWS resources.

  5. E

    Implement security groups at the EC2 instance level and assign IAM roles to these instances for accessing other AWS resources.

Xem giải thích

Đáp án

A, D — hai bước để đạt quyền tối thiểu ở tầng mạng và tầng danh tính cho ECS:

  • A — Cấu hình task dùng network mode awsvpc để có cách ly mạng ở mức task.
  • D — Gắn security group cho từng task và dùng IAM role dành riêng cho task để truy cập tài nguyên AWS.

Vì sao đúng

Đề đòi quyền tối thiểu cho cả quyền mạng lẫn quyền truy cập tài nguyên. Hai bước đúng lo đúng hai tầng đó.

Tầng Cách đáp ứng
Mạng awsvpc — mỗi task một ENI riêng, security group riêng
Danh tính task role — mỗi task một bộ quyền riêng

⚠ Điểm mấu chốt: awsvpc cho mỗi task một ENI riêng — đó là điều kiện để gắn security group ở mức task:

Network mode bridge (phương án B)
        ↓
    Mọi container chia sẻ ENI của host
        ↓
    Security group áp cho CẢ MÁY, không phân biệt được task nào
        ↓
    → không đạt được quyền mạng tối thiểu

Network mode awsvpc
        ↓
    Mỗi task có ENI riêng với IP riêng trong subnet
        ↓
    → security group riêng cho từng task
    → task A không nói chuyện được với task B nếu bạn không cho phép

Vì sao task role chứ không phải instance role (điểm phân biệt với E). Instance role áp cho cả máy, nghĩa là mọi container trên máy đó đều có cùng quyền — vi phạm quyền tối thiểu. Task role cho mỗi task một bộ quyền riêng.

{
  "networkMode": "awsvpc",
  "taskRoleArn": "arn:aws:iam::111122223333:role/TaskDonHang",
  "executionRoleArn": "arn:aws:iam::111122223333:role/ecsTaskExecutionRole"
}

⚠ Đừng bao giờ nhúng thông tin đăng nhập vào container (phương án C):

Inject IAM credentials vào container lúc khởi động
        ↓
    Thông tin đăng nhập dài hạn nằm trong biến môi trường hoặc tệp
        ↓
    Hiện trong `docker inspect`, trong log, trong ảnh chụp container
        ↓
    → task role cấp thông tin đăng nhập TẠM THỜI, tự xoay vòng, không lộ ra

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

  • E (áp security group ở mức EC2 instance và gán IAM role cho instance để truy cập tài nguyên) — đây là phương án gần nhất và nó là cách làm mặc định nếu không dùng awsvpc. Nhưng nó vi phạm quyền tối thiểu ở cả hai tầng: security group của instance áp cho mọi container trên máy, và instance role cấp quyền cho mọi container — nên một container bị xâm nhập có toàn bộ quyền mà máy đó có, kể cả quyền của các dịch vụ khác đang chạy cùng.

  • C (gắn security group cho task — đúng; nhưng inject IAM credentials vào container lúc khởi động) — nửa đầu đúng, nửa sau là một lỗi bảo mật nghiêm trọng. Nhúng thông tin đăng nhập nghĩa là chúng dài hạn, lộ ra trong nhiều nơi, và phải tự xoay vòng. Task role giải quyết trọn vẹn vấn đề đó bằng thông tin đăng nhập tạm thời.

  • B (dùng network mode bridge) — không cho phép gắn security group ở mức task, nên không đạt được cách ly mạng mà đề yêu cầu.

Ghi nhớ

⚠ Bốn network mode của ECS — bảng phải thuộc: | Mode | Đặc điểm | |---|---| | awsvpc | mỗi task một ENI, IP riêng, security group riêng — bắt buộc với Fargate | | bridge | dùng cầu Docker trên host, chia sẻ ENI của máy | | host | container dùng thẳng mạng của host | | none | không có mạng ngoài |

Từ khoá nhận diện:

"least privilege" cho mạng trong ECS → awsvpc + security group theo task "least privilege" cho quyền truy cập AWS → task role "security group ở mức instance" → áp cho mọi container, quá rộng "instance role" cho quyền của ứng dụng → quá rộng "inject credentials vào container" → LUÔN SAI

Ba loại IAM role trong ECS Ai dùng
Task role mã trong container — gọi S3, DynamoDB...
Task execution role agent ECS — kéo image, ghi log, lấy secret
Container instance role EC2 host — đăng ký cụm
Đánh đổi của awsvpc Nội dung
Được cách ly mạng ở mức task, security group riêng
Mất mỗi task tiêu một địa chỉ IP trong subnet
Hệ quả subnet phải đủ lớn; có giới hạn số ENI mỗi instance
Giảm nhẹ bật ENI trunking để tăng số task mỗi máy
Lấy bí mật vào container Cách đúng
secrets trong task definition trỏ tới Secrets Manager hoặc SSM Parameter Store
Cơ chế ECS lấy giá trị lúc khởi động task, không nằm trong image
Không hard-code trong image hoặc biến môi trường tĩnh

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Task đang mang danh tính gì | aws sts get-caller-identity từ trong container | | Task có ENI riêng không | describe-tasks, xem attachments | | Subnet còn IP không | AvailableIpAddressCount |

Và một lời khuyên: hãy kiểm tra AvailableIpAddressCount của subnet trước khi chuyển sang awsvpc ở quy mô lớn. Đây là hệ quả dễ bị bỏ qua nhất của network mode này: mỗi task tiêu một địa chỉ IP trong subnet, nên một service co giãn lên vài trăm task có thể làm cạn subnet — và khi đó task mới không khởi động được, với một thông báo lỗi nói về ENI chứ không nói về địa chỉ IP. Sự cố xuất hiện đúng vào lúc bạn đang cần co giãn nhất, và nó ảnh hưởng cả những service khác dùng chung subnet đó.

Câu 689 AWS Security, Identity, & Compliance

A new employee is joining a security team. The employee initially requires access to manage Amazon DynamoDB, Amazon RDS, and Amazon CloudWatch. All security team members are added to the security team IAM group that provides additional permissions to manage all other AWS services.

The team lead wants to limit the permissions the new employee has access to until the employee takes on additional responsibilities, and then be able to easily add permissions as required, eventually providing the same access as all other security team employees.

How can the team lead limit the permissions assigned to the new user account whilst minimizing complexity?

  1. A

    Create an IAM account for the new employee in a dedicated account. Use cross-account access to manage resources. Limit the permissions on the cross-account access role to only allow management of Amazon DynamoDB, Amazon RDS, and Amazon CloudWatch. When the employee takes on new management responsibilities, add permissions to the cross-account access IAM role.

  2. B

    Create an IAM account for the new employee and add the account to the security team IAM group. Set a permissions boundary that grants access to manage Amazon DynamoDB, Amazon RDS, and Amazon CloudWatch. When the employee takes on new management responsibilities, add the additional services to the permissions boundary IAM policy.

  3. C

    Create an IAM account for the new employee and add the account to the security team IAM group. Use a Service Control Policy (SCP) to limit the maximum available permissions to Amazon DynamoDB, Amazon RDS, and Amazon CloudWatch. When the employee takes on new management responsibilities, remove the SCP.

  4. D

    Create an IAM account for the new employee. Create a new IAM group for the employee and add a permissions policy that grants access to manage Amazon DynamoDB, Amazon RDS, and Amazon CloudWatch. When the employee takes on new management responsibilities, add the additional services to the IAM policy.

Xem giải thích

Đáp án

B — Tạo IAM account cho nhân viên mới và thêm vào IAM group của đội bảo mật; đặt permissions boundary cấp quyền quản lý DynamoDB, RDS và CloudWatch; khi nhân viên nhận thêm trách nhiệm thì thêm dịch vụ vào policy làm permissions boundary.

Vì sao đúng

Đề đòi giới hạn quyền của một người trong khi họ vẫn thuộc group chung, và mở rộng dần một cách đơn giản. Permissions boundary sinh ra đúng cho việc đó.

Yêu cầu Cách đáp ứng
Vẫn ở trong group của đội thêm vào group như mọi người
Nhưng quyền bị giới hạn permissions boundary đặt trần cho riêng người này
Mở rộng dần thêm dịch vụ vào boundary policy
Cuối cùng bằng mọi người gỡ boundary là có đủ quyền của group

⚠ Điểm mấu chốt: permissions boundary đặt TRẦN cho một IAM entity — quyền hiệu dụng là giao của boundary và policy:

Group cấp quyền quản lý mọi dịch vụ
        ↓
    Permissions boundary chỉ cho DynamoDB, RDS, CloudWatch
        ↓
    Quyền hiệu dụng = GIAO của hai cái
        ↓
    → người này chỉ quản được ba dịch vụ đó
    → mọi người khác trong group không bị ảnh hưởng gì

Đây là điều làm cho B đơn giản nhất: không phải tạo group mới, không phải viết policy riêng, không phải đổi cấu trúc gì. Và khi người đó sẵn sàng nhận thêm trách nhiệm, bạn chỉ sửa một policy; cuối cùng gỡ boundary đi là họ có đúng quyền như mọi thành viên khác.

aws iam put-user-permissions-boundary --user-name nhan-vien-moi \
  --permissions-boundary arn:aws:iam::111122223333:policy/GioiHanNhanVienMoi

⚠ Permissions boundary KHÔNG cấp quyền — nó chỉ giới hạn:

Chỉ có boundary, không có policy nào cấp quyền
        ↓
    Quyền hiệu dụng = rỗng
        ↓
    → boundary luôn phải đi cùng một nguồn cấp quyền (group hoặc policy)

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

  • D (tạo IAM account cho nhân viên; tạo một IAM group MỚI cho riêng họ với policy cấp quyền ba dịch vụ; sau này thêm dịch vụ vào policy đó) — đây là phương án gần nhất và nó thật sự đạt được kết quả mong muốn. Nhưng nó tạo ra một nhánh riêng phải bảo trì: khi người đó cuối cùng cần quyền như mọi thành viên khác, bạn phải nhớ chuyển họ sang group của đội và xoá group tạm — một bước dễ quên, và nếu quên thì họ vĩnh viễn có bộ quyền lệch với đồng nghiệp. Với boundary, người đó đã ở đúng group ngay từ đầu; việc "cấp đủ quyền" chỉ là gỡ một hạn chế.

  • C (thêm vào group của đội; dùng SCP giới hạn quyền tối đa; sau này gỡ SCP) — sai đơn vị áp dụng. SCP áp cho cả TÀI KHOẢN hoặc OU, không áp cho một IAM user. Dùng SCP để giới hạn một người nghĩa là giới hạn luôn mọi người trong tài khoản đó — hậu quả rộng hơn rất nhiều so với ý định.

  • A (tạo IAM account trong một tài khoản riêng, dùng cross-account access, giới hạn quyền trên role liên tài khoản) — quá phức tạp cho một yêu cầu đơn giản: tạo hẳn một tài khoản AWS và một mô hình truy cập liên tài khoản chỉ để giới hạn quyền của một nhân viên mới. Đề nói rõ "minimizing complexity".

Ghi nhớ

⚠ Bốn tầng quyết định quyền hiệu dụng — bảng phải thuộc: | Tầng | Phạm vi | |---|---| | SCP | tài khoản hoặc OU | | Permissions boundary | một IAM user hoặc role | | Identity policy | user, group, role | | Resource policy | trên chính tài nguyên |

Quyền hiệu dụng = giao của tất cả.

Từ khoá nhận diện:

"giới hạn quyền của MỘT người, vẫn ở trong group" → permissions boundary "minimizing complexity" → không tạo group hay tài khoản mới "SCP để giới hạn một user" → SAI đơn vị, SCP áp cho cả tài khoản "tạo tài khoản riêng" cho một nhân viên → quá phức tạp "tạo group riêng" → chạy được nhưng để lại nhánh phải dọn

Permissions boundary dùng để Nội dung
Giới hạn một user hoặc role cụ thể mà không đổi policy chung
Uỷ quyền tạo IAM an toàn cho developer tạo role, nhưng không vượt được trần
Không dùng để cấp quyền — nó chỉ giới hạn
Ba cách giới hạn hay bị lẫn Phạm vi
SCP mọi principal trong tài khoản/OU
Permissions boundary một IAM entity
Session policy một phiên AssumeRole cụ thể
Kịch bản dùng boundary phổ biến nhất Nội dung
Cho developer tự tạo role cho ứng dụng nhưng bắt buộc gắn boundary
Kết quả role họ tạo không bao giờ vượt quá trần bạn đặt
Cơ chế điều kiện iam:PermissionsBoundary trong policy của họ

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Boundary đã gắn chưa | aws iam get-user --query 'User.PermissionsBoundary' | | Quyền hiệu dụng là gì | aws iam simulate-principal-policy | | Có bị chặn nhầm không | CloudTrail, lọc AccessDenied cho user đó |

Và một lời khuyên: hãy nhớ rằng permissions boundary không hiện ra khi bạn chỉ đọc các policy đính kèm. Đây là nguyên nhân của những cuộc gỡ lỗi rất dài: người quản trị mở trang IAM của user, thấy họ thuộc group có quyền quản trị đầy đủ, và kết luận rằng lỗi AccessDenied là không thể xảy ra. Boundary nằm ở một trường riêng mà giao diện không làm nổi bật, và nó lặng lẽ cắt đi phần lớn những gì group cấp. Lệnh get-user hiển thị nó trong một dòng, và thường kết thúc cuộc điều tra ngay lập tức.

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

A rapidly growing company has registered 10 new domain names for multiple applications soon to be productionized. The company uses the domains for online marketing. The company needs a solution that will redirect online visitors to a specific URL and route combination for each domain. The URL and route combinations are defined in a JSON document. All DNS records are managed by Amazon Route 53. They also need to accept HTTP and HTTPS requests.

Which combination of steps should a solutions architect take to meet these requirements with the LEAST amount of operational effort? (Select THREE.)

  1. A

    Create an Amazon CloudFront distribution and deploy a Lambda@Edge function.

  2. B

    Create an AWS Lambda function that uses the event message and specified JSON document to look up and respond with a redirect URL.

  3. C

    Use an Amazon API Gateway API with a custom domain to publish an AWS Lambda function.

  4. D

    Create a dynamic webpage and host it on an Amazon EC2 instance. Configure the webpage to use the JSON document in combination with the event message to look up and respond with a redirect URL.

  5. E

    Create an SSL certificate by using AWS Certificate Manager (ACM). Include the domains as Subject Alternative Names.

  6. F

    Create an Application Load Balancer that includes HTTP and HTTPS listeners.

Xem giải thích

Đáp án

A, E, F — ba bước để chuyển hướng 10 tên miền tới các URL đích với ít công vận hành nhất:

  • F — Tạo Application Load Balancer có listener cho cả HTTP và HTTPS.
  • E — Tạo chứng chỉ SSL bằng ACM, đưa các tên miền vào làm Subject Alternative Name.
  • A — Tạo CloudFront distribution và triển khai một Lambda@Edge function.

Vì sao đúng

Đề đòi chuyển hướng theo bảng ánh xạ trong một tài liệu JSON, cho 10 tên miền, chấp nhận cả HTTP và HTTPS, với ít công vận hành nhất.

Yêu cầu Bước nào lo
Nhận cả HTTP và HTTPS F — hai listener trên ALB
10 tên miền trên một chứng chỉ E — SAN certificate từ ACM
Tra JSON rồi chuyển hướng A — Lambda@Edge tại điểm biên

⚠ Điểm mấu chốt: một chứng chỉ ACM với nhiều SAN phục vụ được cả 10 tên miền — không cần 10 chứng chỉ:

Tạo một chứng chỉ, khai 10 tên miền vào Subject Alternative Names
        ↓
    ACM cấp miễn phí và tự gia hạn
        ↓
    → một chứng chỉ gắn vào ALB và CloudFront
    → không có việc theo dõi ngày hết hạn của 10 chứng chỉ

Vì sao Lambda@Edge chứ không phải Lambda thường (điểm phân biệt với B). Chuyển hướng nên xảy ra tại điểm biên, trước khi request đi xa hơn:

exports.handler = async (event) => {
  const request = event.Records[0].cf.request;
  const host = request.headers.host[0].value;
  const dich = BANG_ANH_XA[host] || 'https://congty.vn';
  return {
    status: '301',
    headers: { location: [{ key: 'Location', value: dich + request.uri }] }
  };
};

⚠ Chuyển hướng trả về ngay tại biên — không cần chạm tới origin:

Lambda@Edge ở viewer request trả về phản hồi 301 luôn
        ↓
    Request KHÔNG đi tiếp tới ALB hay bất kỳ origin nào
        ↓
    → nhanh nhất, rẻ nhất, và không có hạ tầng nào phải chịu tải

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

  • B (tạo một Lambda function dùng event message và tài liệu JSON để tra và trả về URL chuyển hướng) — đây là phương án gần nhất và logic của nó chính xác bằng đáp án đúng: tra bảng rồi trả URL. Nhưng nó thiếu chỗ để chạy: một Lambda thường cần một thứ gọi nó — API Gateway, ALB target, hoặc một sự kiện. Bản thân nó không nhận được request HTTP từ người dùng. Trong bộ ba đã chọn, Lambda@Edge (phương án A) vừa là nơi chạy vừa là logic, nên B trở nên thừa và không hoàn chỉnh.

  • C (API Gateway API với custom domain để publish một Lambda function) — chạy được nhưng nhiều việc hơn: phải cấu hình custom domain cho từng tên miền, quản base path mapping, và chịu chi phí API Gateway cho mỗi request chuyển hướng. Với việc chỉ trả về một header Location, đó là hạ tầng thừa.

  • D (dựng một trang web động trên EC2 để tra JSON và trả về URL chuyển hướng) — nhiều việc vận hành nhất: một máy chủ phải vá, giám sát, làm cho sẵn sàng cao và co giãn — cho một tác vụ chỉ là trả về một header.

Ghi nhớ

⚠ Bốn cách chuyển hướng URL trên AWS — bảng phải thuộc, theo thứ tự ít việc nhất: | Cách | Việc vận hành | |---|---| | S3 static website redirect | gần như bằng 0 — nhưng chỉ chuyển hướng đơn giản | | ALB listener rule với redirect action | thấp — không cần mã, nhưng luật tĩnh | | CloudFront Function / Lambda@Edge | thấp — logic tuỳ ý, chạy tại biên | | EC2 hoặc container | cao nhất |

Từ khoá nhận diện:

"redirect theo bảng ánh xạ trong JSON" → cần logic → Lambda@Edge hoặc CloudFront Function "nhiều tên miền, một chứng chỉ" → ACM với Subject Alternative Names "HTTP và HTTPS" → hai listener, hoặc CloudFront với redirect-to-https "Lambda thường" để nhận request HTTP → cần một thứ gọi nó "EC2 cho việc chuyển hướng" → quá nặng

ACM — điều cần nhớ Nội dung
Chi phí miễn phí cho chứng chỉ dùng với dịch vụ AWS
Tự gia hạn có, nếu xác thực bằng DNS
Số SAN tới 10 tên miền mặc định, xin thêm được
Với CloudFront chứng chỉ phải ở us-east-1
Với ALB chứng chỉ ở cùng Region với ALB
CloudFront Functions so với Lambda@Edge Chọn
CloudFront Function viết lại URL, chuyển hướng đơn giản — dưới 1 ms, rẻ hơn nhiều
Lambda@Edge cần gọi mạng, xử lý thân request, bảng ánh xạ lớn

Với bài này, nếu bảng ánh xạ đủ nhỏ để nhúng vào mã, CloudFront Function còn rẻ hơn — nhưng nó không có trong danh sách phương án.

Mã chuyển hướng Khi nào
301 chuyển vĩnh viễn — trình duyệt và công cụ tìm kiếm ghi nhớ
302 tạm thời
Chọn 301 cho marketing để giữ giá trị SEO của tên miền cũ

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Chuyển hướng có đúng không | curl -I https://ten-mien — xem header Location | | Chứng chỉ có phủ đủ tên miền không | kiểm danh sách SAN trong ACM | | Lambda@Edge có chạy không | log nằm ở Region gần điểm biên, không phải Region gốc |

Và một lời khuyên: hãy tạo chứng chỉ ACM cho CloudFront ở us-east-1, bất kể ứng dụng của bạn nằm ở Region nào. Đây là ràng buộc cứng và là nguyên nhân của rất nhiều phút bối rối: bạn tạo chứng chỉ ở Region của ALB, mọi thứ hợp lệ, chứng chỉ ở trạng thái Issued — nhưng khi cấu hình CloudFront thì nó không xuất hiện trong danh sách chọn, và giao diện không giải thích vì sao. CloudFront là dịch vụ toàn cầu và chỉ đọc chứng chỉ từ us-east-1. Nếu bạn cần dùng cùng bộ tên miền cho cả ALB lẫn CloudFront, hãy tạo hai chứng chỉ giống nhau ở hai Region.