Ngân hàng đề — AWS Certified SysOps Administrator Associate
Tìm thấy 936 câu.
A new systems administrator has joined a large healthcare services company recently. As part of his onboarding, the IT department is conducting a review of the checklist for tasks related to AWS Identity and Access Management.
Which best practices would you recommend? (Select two)?
-
A
Grant maximum privileges to avoid assigning privileges again
-
B
Enable MFA for privileged users
-
C
Use user credentials to provide access specific permissions for Amazon EC2 instances
-
D
Configure AWS CloudTrail to log all IAM actions
-
E
Create a minimum number of accounts and share these account credentials among employees
Xem giải thích
Đáp án
B, D — hai thực hành tốt cần khuyến nghị:
- B — Bật MFA cho người dùng có đặc quyền.
- D — Cấu hình AWS CloudTrail để ghi lại mọi thao tác IAM.
Vì sao đúng
Với một công ty dịch vụ y tế (chịu ràng buộc HIPAA), hai biện pháp này nằm ở hai trụ cột khác nhau và đều bắt buộc.
⚠ Điều B — MFA là lớp phòng thủ chống mất chứng chỉ:
Mật khẩu bị lộ (lừa đảo, dùng lại mật khẩu, rò rỉ)
↓
Không có MFA → kẻ tấn công vào được ngay
↓
Có MFA → còn cần thiết bị vật lý hoặc ứng dụng sinh mã
↓
→ chặn được đại đa số vụ chiếm tài khoản
↓
Bắt buộc nhất: MFA cho TÀI KHOẢN GỐC (root)
Có thể ép bằng chính sách IAM:
{
"Effect": "Deny",
"NotAction": ["iam:CreateVirtualMFADevice", "iam:EnableMFADevice",
"iam:ListMFADevices", "sts:GetSessionToken"],
"Resource": "*",
"Condition": {
"BoolIfExists": {"aws:MultiFactorAuthPresent": "false"}
}
}
⚠ Điều D — CloudTrail là nền tảng của mọi kiểm toán:
CloudTrail ghi mọi lời gọi API, trong đó có IAM:
CreateUser, AttachUserPolicy, CreateAccessKey,
PutRolePolicy, DeleteUser...
↓
→ biết AI đã cấp quyền cho AI, LÚC NÀO
↓
Management event MIỄN PHÍ một bản sao
↓
→ không có lý do gì để không bật
Với HIPAA, đây không chỉ là thực hành tốt mà là yêu cầu về nhật ký kiểm toán.
Vì sao các phương án khác sai
-
C (dùng chứng chỉ của user để cấp quyền cho EC2 instance) — đây là phương án gần nhất vì nó nghe như một cách "cấp quyền cụ thể" hợp lý. Nhưng nó vi phạm nguyên tắc quan trọng nhất về chứng chỉ: EC2 phải dùng IAM role (instance profile), không bao giờ nhúng access key. Khoá dài hạn nằm trên máy là khoá dài hạn có thể bị đánh cắp, và nó không tự xoay.
-
A (cấp quyền tối đa để khỏi phải cấp lại) — trái thẳng nguyên tắc quyền tối thiểu (least privilege), và là công thức dẫn tới sự cố bảo mật.
-
E (tạo ít tài khoản rồi dùng chung chứng chỉ giữa các nhân viên) — phá huỷ hoàn toàn khả năng kiểm toán: CloudTrail sẽ ghi lại tên tài khoản dùng chung, nên không bao giờ biết được ai thật sự đã làm gì. Với HIPAA thì đây là vi phạm nghiêm trọng.
Ghi nhớ
⚠ Danh sách thực hành tốt về IAM — bảng phải thuộc: | Thực hành | Nội dung | |---|---| | Bật MFA, đặc biệt cho root | bắt buộc | | Không dùng root cho việc hằng ngày | và xoá access key của root | | Quyền tối thiểu | cấp vừa đủ, mở rộng khi cần | | Dùng ROLE thay cho ACCESS KEY | cho EC2, Lambda, ECS, và cho cả con người | | Mỗi người một danh tính riêng | không dùng chung tài khoản | | Bật CloudTrail | nhật ký kiểm toán | | Xoay và thu hồi chứng chỉ | dùng Credential Report | | Permissions boundary / SCP | trần quyền | | IAM Access Analyzer | tìm quyền thừa và tài nguyên lộ ra ngoài |
Từ khoá nhận diện:
"chống mất chứng chỉ" → MFA "ai đã làm gì" → CloudTrail "cấp quyền cho EC2" → IAM role, KHÔNG BAO GIỜ dùng access key "chia sẻ tài khoản cho tiện" → LUÔN SAI "quyền tối đa cho đỡ phiền" → LUÔN SAI "quản lý danh tính cho nhiều tài khoản" → IAM Identity Center
| Các công cụ rà soát IAM | Việc |
|---|---|
| Credential Report | CSV: ai có MFA, khoá bao lâu chưa dùng, mật khẩu bao lâu chưa đổi |
| Access Advisor | dịch vụ nào một principal THỰC SỰ đã dùng — nền tảng để cắt quyền thừa |
| IAM Access Analyzer | tài nguyên nào lộ ra ngoài tài khoản/tổ chức |
| Access Analyzer policy generation | sinh chính sách từ lịch sử CloudTrail |
| Policy Simulator | thử trước khi áp |
| Các kiểu MFA | Nội dung |
|---|---|
| Virtual MFA | ứng dụng trên điện thoại |
| FIDO security key | khoá phần cứng — chống lừa đảo tốt nhất |
| Hardware TOTP token | thiết bị sinh mã riêng |
| Multi-MFA cho root | AWS cho đăng ký tối đa 8 thiết bị cho một danh tính |
| Thay thế access key cho con người | Nội dung |
|---|---|
| IAM Identity Center | đăng nhập một lần, chứng chỉ tạm thời |
| CLI | aws sso login — không lưu khoá dài hạn |
| Với hệ thống ngoài AWS | IAM Roles Anywhere, hoặc OIDC (GitHub Actions) |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Ai chưa bật MFA | Credential Report, cột mfa_active | | Khoá nào lâu không dùng | cùng báo cáo, cột access_key_last_used | | Quyền nào đang thừa | Access Advisor cho từng role |
Và một thói quen đáng xây dựng ngay từ đầu: hãy tải Credential Report mỗi tháng và xử lý mọi dòng bất thường. Báo cáo này miễn phí, tạo trong vài giây, và nó phơi bày chính xác những thứ tích tụ âm thầm trong mọi tài khoản AWS — access key của một người đã nghỉ việc từ năm ngoái, một tài khoản quản trị chưa bật MFA, một khoá được tạo ra để thử nghiệm rồi không ai thu hồi.
A data analytics company uses AWS CloudFormation templates to provision their AWS infrastructure for Amazon EC2, Amazon VPC, and Amazon S3 resources. Using cross-stack referencing, a systems administrator creates a stack called NetworkStack which will export the subnetId that can be used when creating EC2 instances in another stack.
To use the exported value in another stack, which of the following functions must be used?
-
A
!GetAtt -
B
!ImportValue -
C
!Ref -
D
!Sub
Xem giải thích
Đáp án
B — !ImportValue (Fn::ImportValue).
Vì sao đúng
Cross-stack reference là một cặp hai bước, và đề hỏi đúng vế thứ hai: nhận giá trị ở stack đích.
⚠ Điểm mấu chốt — mỗi vế một hàm, ở một stack:
NetworkStack (nguồn) — đã làm xong theo mô tả của đề
Outputs:
SubnetId:
Value: !Ref SubnetUngDung
Export:
Name: NetworkStack-SubnetId
↓
Stack ứng dụng (đích) — vế mà đề đang hỏi
Resources:
MayChu:
Type: AWS::EC2::Instance
Properties:
SubnetId: !ImportValue NetworkStack-SubnetId
⚠ Vì sao !Ref không dùng được ở đây:
!Ref chỉ tham chiếu được:
- tài nguyên khai TRONG CÙNG template
- tham số (Parameters) của chính stack đó
- pseudo parameter (AWS::Region, AWS::AccountId...)
↓
→ nó KHÔNG biết gì về stack khác
↓
!ImportValue mới là hàm tra vào danh sách EXPORT
của tài khoản + Region hiện tại
⚠ Và ba ràng buộc của cơ chế export/import:
1. Tên export DUY NHẤT trong một tài khoản + một Region
2. KHÔNG dùng chéo Region, KHÔNG dùng chéo tài khoản
3. KHÔNG xoá/sửa được export đang có stack khác import
↓
→ muốn đổi thì phải sửa stack ĐÍCH trước
Xem thêm câu #11657 và #11668: cùng cơ chế nhưng hỏi ở vế khác — #11657 hỏi trường nào để cung cấp giá trị (
Export), #11668 hỏi cả cặp hai bước.
Vì sao các phương án khác sai
-
C (
!Ref) — đây là phương án gần nhất và là hàm được dùng nhiều nhất trong CloudFormation, nên rất dễ chọn theo phản xạ. Nhưng phạm vi của nó chỉ trong một stack. -
A (
!GetAtt) — lấy thuộc tính của một tài nguyên, ví dụ!GetAtt DB.Endpoint.Address. Cũng chỉ hoạt động trong cùng stack. (Nó thường được dùng ở vếOutputscủa stack nguồn để lấy giá trị đem đi export.) -
D (
!Sub) — thay biến vào một chuỗi, ví dụ!Sub "${AWS::StackName}-SubnetId". Nó thường đi cùng!ImportValue(để dựng tên export động), nhưng bản thân nó không nhập giá trị nào.
Ghi nhớ
⚠ Bốn hàm nội tại hay gặp — bảng phải thuộc: | Hàm | Việc | Phạm vi | |---|---|---| | !Ref | tài nguyên hoặc tham số | cùng stack | | !GetAtt | thuộc tính của tài nguyên | cùng stack | | !ImportValue | giá trị export từ stack khác | cùng tài khoản + Region | | !Sub | thay biến vào chuỗi | mọi nơi |
Từ khoá nhận diện:
"nhận giá trị từ stack khác" →
!ImportValue"cung cấp giá trị cho stack khác" →ExporttrongOutputs"lấy endpoint của RDS, ARN của bucket" →!GetAtt"tham chiếu tài nguyên trong cùng template" →!Ref"chéo Region hoặc chéo tài khoản" → SSM Parameter Store, không phải import/export
!Ref trả về gì tuỳ loại tài nguyên |
Ví dụ |
|---|---|
| EC2 instance | instance id |
| S3 bucket | tên bucket |
| VPC, Subnet | id |
| IAM role | tên role (ARN thì dùng !GetAtt Role.Arn) |
| Parameter | giá trị người dùng nhập |
Kết hợp !Sub với !ImportValue |
Nội dung |
|---|---|
| Dựng tên export động | !ImportValue + !Sub "${TenMoiTruong}-SubnetId" |
| Lợi ích | một template dùng cho nhiều môi trường |
| Lưu ý cú pháp | !ImportValue !Sub "..." — YAML không cho hai tag rút gọn lồng nhau, phải viết dạng đầy đủ: Fn::ImportValue: !Sub "..." |
| Ba cách chia sẻ giá trị giữa các stack | Nội dung |
|---|---|
| Export + ImportValue | gốc của CloudFormation, tạo ràng buộc cứng |
| SSM Parameter Store | linh hoạt nhất, chéo Region được |
| Nested stack | cha truyền cho con qua Parameters |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Có những export nào | list-exports | | Ai đang dùng một export | list-imports --export-name <ten> | | Vì sao không xoá được stack | thông báo lỗi nêu đích danh export bị dùng |
Và một lưu ý cú pháp rất hay làm người mới mất thời gian: YAML không cho phép lồng hai tag rút gọn (!ImportValue !Sub) trực tiếp với nhau. Khi cần dựng tên export động, phải viết dạng đầy đủ Fn::ImportValue: !Sub "..." — lỗi này báo ra rất mơ hồ, và nó là một trong những chỗ vấp phổ biến nhất khi bắt đầu tách template thành nhiều stack.
A media company uses S3 to aggregate the raw video footage from its reporting teams across the US. The company has recently expanded into new geographies in Europe and Australia. The technical teams at the overseas branch offices have reported huge delays in uploading large video files to the destination S3 bucket.
Which of the following are the MOST cost-effective options to improve the file upload speed into S3? (Select two)
-
A
Use multipart uploads for faster file uploads into the destination S3 bucket
-
B
Create multiple site-to-site VPN connections between the AWS Cloud and branch offices in Europe and Australia. Use these VPN connections for faster file uploads into S3
-
C
Use Amazon S3 Transfer Acceleration to enable faster file uploads into the destination S3 bucket
-
D
Use AWS Global Accelerator for faster file uploads into the destination S3 bucket
-
E
Create multiple AWS direct connect connections between the AWS Cloud and branch offices in Europe and Australia. Use the direct connect connections for faster file uploads into S3
Xem giải thích
Đáp án
A, C — hai cách tối ưu chi phí để tăng tốc tải lên:
- C — Dùng Amazon S3 Transfer Acceleration.
- A — Dùng multipart upload.
Vì sao đúng
Đề nêu hai ràng buộc: tăng tốc tải tệp lớn từ xa và TIẾT KIỆM CHI PHÍ NHẤT. Cả hai giải pháp đều không đòi dựng hạ tầng mạng nào.
⚠ Transfer Acceleration — đi vào mạng riêng của AWS từ điểm gần nhất:
Không có Transfer Acceleration:
Văn phòng ở Sydney → internet công cộng → bucket ở Virginia
↓
→ đi qua nhiều nhà mạng, độ trễ cao, mất gói nhiều
Có Transfer Acceleration:
Sydney → edge location GẦN NHẤT (vài mili giây)
↓
→ từ edge đi tiếp bằng ĐƯỜNG TRỤC RIÊNG CỦA AWS
↓
→ tới bucket
↓
→ nhanh hơn đáng kể với khoảng cách xa
Bật bằng một công tắc, và dùng endpoint riêng:
ten-bucket.s3-accelerate.amazonaws.com
⚠ Multipart upload — chia tệp lớn thành nhiều mảnh tải SONG SONG:
Tệp video 20 GB
↓
Chia thành nhiều phần, tải ĐỒNG THỜI
↓
→ tận dụng hết băng thông sẵn có
→ một phần lỗi chỉ cần tải lại PHẦN ĐÓ
→ tạm dừng và tiếp tục được
↓
AWS KHUYẾN NGHỊ dùng cho tệp > 100 MB
BẮT BUỘC với tệp > 5 GB
Tin tốt: AWS CLI và SDK tự động dùng multipart cho tệp lớn — thường không phải viết gì thêm.
⚠ Vì sao hai cách này "tiết kiệm chi phí nhất":
Transfer Acceleration → trả theo GB đã tăng tốc, KHÔNG có phí cố định
Multipart upload → MIỄN PHÍ hoàn toàn
↓
So với VPN hay Direct Connect
↓
→ không có phí cổng hằng giờ
→ không có hợp đồng viễn thông
→ không có công sức vận hành
Vì sao các phương án khác sai
-
E (dựng nhiều Direct Connect tới các văn phòng châu Âu và Úc) — đây là phương án gần nhất về mặt hiệu quả kỹ thuật (băng thông ổn định nhất). Nhưng nó đắt nhất trong tất cả: phí cổng hằng giờ, phí đối tác viễn thông cho từng địa điểm, và mất hàng tuần tới hàng tháng để triển khai. Trái thẳng ràng buộc chi phí.
-
B (dựng nhiều kết nối Site-to-Site VPN) — rẻ hơn Direct Connect nhưng vẫn chạy qua internet công cộng, nên không nhanh hơn việc tải thẳng lên S3; thậm chí còn chậm hơn vì thêm chi phí đóng gói IPsec.
-
D (dùng AWS Global Accelerator để tải lên S3) — Global Accelerator cho IP tĩnh anycast và định tuyến qua mạng AWS, nhưng nó dành cho ALB, NLB, EC2 và Elastic IP — không hỗ trợ S3 làm endpoint. Với S3, thứ tương đương chính là Transfer Acceleration.
Ghi nhớ
⚠ Tăng tốc truyền dữ liệu lên S3 — bảng phải thuộc: | Cách | Chi phí | Khi nào dùng | |---|---|---| | Multipart upload | miễn phí | mọi tệp lớn — luôn nên dùng | | Transfer Acceleration | theo GB, không phí cố định | client ở xa bucket | | Snowball | thiết bị vật lý | hàng chục TB tới PB | | DataSync | theo GB | đồng bộ định kỳ, có kiểm chứng toàn vẹn | | Direct Connect | phí cổng + đối tác | cần băng thông ổn định lâu dài |
Từ khoá nhận diện:
"tải lên từ xa chậm, muốn rẻ" → Transfer Acceleration + multipart "tệp rất lớn" → multipart upload "hàng chục TB trở lên" → Snowball "Global Accelerator cho S3" → KHÔNG hỗ trợ "tăng tốc TẢI VỀ cho người dùng" → CloudFront, không phải Transfer Acceleration
| Transfer Acceleration — chi tiết đáng nhớ | Nội dung |
|---|---|
| Dùng chung hạ tầng | edge location của CloudFront |
| Bật thế nào | một công tắc trên bucket, dùng endpoint s3-accelerate |
| Công cụ đo thử | AWS có Speed Comparison tool — so tốc độ có và không có |
| Chỉ tính tiền khi thật sự nhanh hơn | nếu không tăng tốc được thì không tính phí |
| Không dùng được với | tên bucket có dấu chấm, và một số Region |
| Multipart upload — chi tiết đáng nhớ | Nội dung |
|---|---|
| Kích thước phần | 5 MB tới 5 GB (phần cuối được nhỏ hơn) |
| Số phần tối đa | 10.000 |
| Kích thước tệp tối đa | 5 TB |
| Bẫy chi phí | tải lên dở dang vẫn tính tiền lưu trữ |
| Phải làm | lifecycle rule AbortIncompleteMultipartUpload sau 7 ngày |
| Tăng tốc theo chiều ngược lại | Nội dung |
|---|---|
| Tải VỀ cho người dùng cuối | CloudFront — cache ở edge |
| Đọc một phần tệp lớn | byte-range fetch |
| Lọc dữ liệu ngay tại S3 | S3 Select — chỉ trả về phần cần |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Nhanh hơn bao nhiêu | S3 Transfer Acceleration Speed Comparison tool | | Có upload dở dang không | list-multipart-uploads — rồi đặt lifecycle dọn | | CLI có dùng multipart không | chỉnh multipart_threshold và max_concurrent_requests trong ~/.aws/config |
Và một lời khuyên rẻ tiền mà hiệu quả bất ngờ: hãy chỉnh max_concurrent_requests của AWS CLI trước khi bật Transfer Acceleration. Mặc định CLI chỉ chạy 10 luồng song song; với một đường truyền tốt ở văn phòng, nâng con số đó lên có thể tăng tốc độ đáng kể mà không tốn thêm một đồng nào — hãy đo lại rồi mới quyết định có cần trả tiền cho Transfer Acceleration hay không.
A systems administrator has attached two policies to an IAM user. The first policy states that the user has explicitly been denied all access to EC2 instances. The second policy states that the user has been allowed permission for EC2:Describe action.
When the user tries to use 'Describe' action on an EC2 instance using the CLI, what will be the output?
-
A
The user will be denied access because one of the policies has an explicit deny on it
-
B
The order of the policy matters. If policy 1 is before 2, then the user is denied access. If policy 2 is before 1, then the user is allowed access
-
C
The user will get access because it has an explicit allow
-
D
The IAM user stands in an invalid state, because of conflicting policies
Xem giải thích
Đáp án
A — Người dùng bị TỪ CHỐI truy cập, vì một trong hai chính sách có Deny tường minh.
Vì sao đúng
Đây là quy tắc nền tảng nhất của IAM, và nó không có ngoại lệ nào.
⚠ Điểm mấu chốt — Explicit Deny thắng mọi Allow:
Chính sách 1: Deny ec2:*
Chính sách 2: Allow ec2:Describe*
↓
IAM gom TẤT CẢ chính sách áp dụng cho principal
↓
Có bất kỳ Deny nào khớp?
↓
CÓ → TỪ CHỐI, dừng luôn
↓
→ không quan tâm có bao nhiêu Allow
→ không quan tâm Allow cụ thể đến đâu
⚠ Ba đặc điểm của cách IAM đánh giá quyền:
1. KHÔNG có thứ tự
↓
Chính sách không được đánh số, không có "cái nào trước"
↓
2. Mặc định là TỪ CHỐI NGẦM (implicit deny)
↓
Không có Allow nào → bị từ chối
↓
3. Deny TƯỜNG MINH là tuyệt đối
↓
Ghi đè mọi Allow, ở mọi loại chính sách
⚠ Thứ tự đánh giá đầy đủ — bảng quyết định mọi câu hỏi IAM:
1. Có Explicit Deny ở BẤT KỲ đâu? → TỪ CHỐI
2. SCP có cho phép không? → không thì TỪ CHỐI
3. Resource-based policy có Allow? → có thể đủ (cùng tài khoản)
4. Permissions boundary có cho phép? → không thì TỪ CHỐI
5. Session policy có cho phép? → không thì TỪ CHỐI
6. Identity-based policy có Allow? → có thì CHO PHÉP
7. Không rơi vào đâu → implicit deny
Vì sao các phương án khác sai
-
B (thứ tự chính sách quyết định — chính sách nào trước thì thắng) — đây là phương án gần nhất và là hiểu nhầm phổ biến nhất, vì nhiều hệ thống tường lửa và ACL đúng là xét theo thứ tự. IAM thì không: chính sách không có thứ tự, và kết quả luôn giống nhau dù gắn theo thứ tự nào. (Lưu ý: Network ACL của VPC thì CÓ thứ tự — đừng lẫn hai thứ.)
-
C (được truy cập vì có Allow tường minh) — bỏ qua đúng quy tắc quan trọng nhất: Deny thắng Allow.
-
D (IAM user rơi vào trạng thái không hợp lệ vì chính sách xung đột) — không có "trạng thái không hợp lệ" nào. Deny và Allow cùng lúc là chuyện hoàn toàn bình thường, và IAM có quy tắc rõ ràng để xử lý.
Ghi nhớ
⚠ Ba quy tắc vàng của IAM — thuộc ba dòng này là trả lời được phần lớn câu hỏi: | Quy tắc | |---| | 1. Mặc định là TỪ CHỐI (implicit deny) | | 2. Allow tường minh cho phép | | 3. DENY TƯỜNG MINH THẮNG TẤT CẢ |
Từ khoá nhận diện:
"vừa có Allow vừa có Deny" → DENY thắng "thứ tự chính sách" → IAM KHÔNG có thứ tự (NACL thì có) "chặn chắc chắn một hành động" → Deny tường minh "trần quyền cho một user" → permissions boundary "trần quyền cho cả tài khoản" → SCP
| Dùng Deny tường minh vào việc gì | Ví dụ |
|---|---|
| Chặn Region không được phép | aws:RequestedRegion |
| Chặn xoá tài nguyên quan trọng | Deny s3:DeleteBucket |
| Ép dùng MFA | Deny khi aws:MultiFactorAuthPresent là false |
| Ép dùng HTTPS | Deny khi aws:SecureTransport là false |
| Bảo vệ vai trò bảo mật | Deny sửa role của đội security |
| Các loại chính sách đều có thể chứa Deny | Nội dung |
|---|---|
| Identity-based | gắn vào user, group, role |
| Resource-based | bucket policy, key policy — Deny ở đây chặn cả root |
| SCP | Deny áp cho cả tài khoản |
| Permissions boundary | |
| Session policy | truyền khi AssumeRole |
| Chẩn đoán khi bị từ chối | Cách |
|---|---|
| IAM Policy Simulator | mô phỏng và chỉ ra chính sách nào gây từ chối |
| CloudTrail | xem errorCode: AccessDenied và errorMessage |
| Thông báo lỗi mới của AWS | thường nêu đích danh chính sách đã Deny |
| Access Analyzer | tìm quyền thừa để cắt bớt |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Chính sách nào gây Deny | Policy Simulator | | Có SCP nào chặn không | describe-effective-policy ở cấp tổ chức | | Quyền thật sự của một role | Access Advisor + Policy Simulator |
Và một cách nhớ ngắn gọn không bao giờ sai: trong IAM, một tiếng "không" luôn thắng mọi tiếng "có". Đây chính là điều làm cho SCP và permissions boundary trở thành công cụ đáng tin cậy — bạn không cần rà soát hết mọi chính sách đã gắn cho mọi người để chắc chắn một hành động bị cấm; chỉ cần một Deny đặt đúng chỗ là đủ, và không có chính sách nào thêm vào sau này có thể lật ngược nó.
Which of the following security credentials can only be generated by the AWS Account root user?
-
A
EC2 Instance Key Pairs
-
B
IAM User passwords
-
C
IAM User Access Keys
-
D
CloudFront Key Pairs
Xem giải thích
Đáp án
D — CloudFront Key Pairs.
Vì sao đúng
Trong bốn loại chứng chỉ được liệt kê, chỉ CloudFront key pair là thứ mà tài khoản gốc phải tự tạo.
⚠ Điểm mấu chốt — vì sao chỉ root tạo được:
CloudFront key pair là "trusted signer" ở CẤP TÀI KHOẢN
↓
Nó cấp quyền KÝ signed URL và signed cookie
cho TOÀN BỘ nội dung của tài khoản
↓
→ không phải quyền của một IAM user nào
→ là một thuộc tính của chính tài khoản
↓
→ chỉ ROOT tạo và quản lý được
→ IAM user dù có AdministratorAccess cũng KHÔNG tạo được
⚠ Ba loại chứng chỉ còn lại — ai cũng tạo được nếu đủ quyền IAM:
EC2 key pair → ec2:CreateKeyPair, ec2:ImportKeyPair
IAM password → iam:CreateLoginProfile, iam:UpdateLoginProfile
IAM access key → iam:CreateAccessKey
↓
→ đều là thao tác IAM thông thường
→ user có quyền tương ứng là làm được
Ghi nhớ về chất lượng câu hỏi
AWS nay KHUYẾN NGHỊ dùng "key group" thay cho CloudFront key pair. Cơ chế mới ra đời sau và tốt hơn hẳn ở mọi mặt:
CloudFront key pair (cách CŨ)
↓
Chỉ ROOT tạo được
Tối đa 2 khoá đang hoạt động mỗi tài khoản
Không quản lý bằng IAM được
↓
Key group (cách MỚI, AWS khuyến nghị)
↓
IAM user/role có quyền là tạo được — KHÔNG cần root
Bạn TỰ SINH key pair, chỉ tải PUBLIC KEY lên CloudFront
Tối đa 100 public key, nhóm thành các key group
Quản lý và kiểm toán bằng IAM như mọi tài nguyên khác
Khoá đáp án vẫn đúng theo nghĩa hẹp — CloudFront key pair thật sự chỉ root tạo được. Nhưng trong một hệ thống dựng mới hôm nay, không nên dùng cơ chế đó nữa; và câu hỏi phản ánh danh mục tính năng ở thời điểm trước khi key group xuất hiện.
Vì sao các phương án khác sai
-
C (IAM User Access Keys) — đây là phương án gần nhất vì access key đúng là chứng chỉ nhạy cảm và root cũng tạo được cho chính mình. Nhưng bất kỳ principal nào có quyền
iam:CreateAccessKeyđều tạo được access key cho một user — không cần root. -
B (IAM User passwords) — tạo bằng
iam:CreateLoginProfile, quyền IAM thông thường. -
A (EC2 Instance Key Pairs) — tạo bằng
ec2:CreateKeyPairhoặc nhập khoá có sẵn bằngec2:ImportKeyPair.
Ghi nhớ
⚠ Những việc CHỈ tài khoản gốc làm được — bảng phải thuộc: | Việc | |---| | Tạo CloudFront key pair (cơ chế cũ) | | Bật/tắt MFA-Delete trên bucket S3 | | Đổi email, tên tài khoản, thông tin thanh toán | | Đổi hoặc huỷ gói AWS Support | | Đóng tài khoản AWS | | Khôi phục quyền khi IAM policy tự khoá chính mình | | Đăng ký GovCloud |
Từ khoá nhận diện:
"chỉ root tạo được" → CloudFront key pair, MFA-Delete "ký signed URL cho CloudFront (cách mới)" → key group, không cần root "khoá SSH cho EC2" → EC2 key pair, quyền IAM thường "chứng chỉ gọi API" → access key — nhưng nên dùng role thay thế
| Các loại "key pair" trên AWS — rất dễ lẫn | Việc |
|---|---|
| EC2 key pair | SSH/RDP vào instance — AWS chỉ giữ public key |
| CloudFront key pair | ký signed URL/cookie (cách cũ, chỉ root) |
| CloudFront key group | ký signed URL/cookie (cách mới, quản bằng IAM) |
| KMS key | mã hoá dữ liệu — không phải key pair theo nghĩa SSH |
| ACM certificate | chứng chỉ TLS cho tên miền |
| Thực hành tốt về tài khoản gốc | Nội dung |
|---|---|
| Bật MFA cho root | bắt buộc — ưu tiên FIDO security key |
| XOÁ access key của root | không bao giờ cần tới |
| Không dùng root cho việc hằng ngày | dùng IAM Identity Center |
| Bảo vệ email của root | vì đó là đường khôi phục mật khẩu |
| Cảnh báo khi root đăng nhập | EventBridge bắt sự kiện CloudTrail ConsoleLogin với userIdentity.type = Root |
| Chuyển từ key pair sang key group | Bước |
|---|---|
| 1 | tự sinh RSA key pair (openssl genrsa) |
| 2 | tải public key lên CloudFront |
| 3 | tạo key group chứa public key đó |
| 4 | gắn key group vào cache behavior |
| 5 | ứng dụng ký bằng private key — lưu trong Secrets Manager |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Root có access key không | Credential Report — nếu có thì xoá ngay | | Root đã bật MFA chưa | IAM console, mục Security credentials | | Đang dùng cơ chế ký nào | CloudFront console — key group hay trusted signer |
Và một cảnh báo đáng đặt lên hàng đầu trong mọi tài khoản AWS: hãy tạo cảnh báo cho mỗi lần tài khoản gốc đăng nhập. Root chỉ nên được dùng vài lần trong cả vòng đời một tài khoản, nên mỗi lần nó xuất hiện trong CloudTrail đều đáng để có người nhìn thấy và xác nhận — đó là một trong những tín hiệu cảnh báo sớm rẻ nhất và hiệu quả nhất mà bạn có thể dựng.
Security and Compliance is a Shared Responsibility between AWS and the customer. As part of this Shared Responsibility, the customer is also responsible for securing the resources that he has procured under his AWS account.
Which of the following is the responsibility of the customer?
-
A
AWS is responsible for training their customers and their employees as part of Customer Specific training
-
B
AWS is responsible for patching and fixing flaws within the infrastructure, for patching the guest Operating Systems and applications of the customers
-
C
For Amazon S3 service, managing the operating system and platform is customer responsibility
-
D
For Amazon EC2 service, managing guest operating system (including updates and security patches), application software and Security Groups is the responsibility of the customer
Xem giải thích
Đáp án
D — Với Amazon EC2, quản lý hệ điều hành khách (bao gồm cập nhật và bản vá bảo mật), phần mềm ứng dụng và Security Group là trách nhiệm của KHÁCH HÀNG.
Vì sao đúng
Mô hình trách nhiệm chia sẻ có một đường phân chia rất rõ, và nó dịch chuyển tuỳ theo loại dịch vụ.
⚠ Điểm mấu chốt — với EC2, ranh giới nằm ngay dưới hệ điều hành khách:
AWS chịu trách nhiệm — "SECURITY OF the cloud"
↓
Trung tâm dữ liệu, điện, làm mát, an ninh vật lý
Phần cứng máy chủ, mạng, tầng ảo hoá (hypervisor)
↓
────────────── RANH GIỚI với EC2 ──────────────
↓
Khách hàng chịu trách nhiệm — "SECURITY IN the cloud"
↓
HỆ ĐIỀU HÀNH KHÁCH và bản vá của nó
Phần mềm ứng dụng
Security Group, NACL
IAM, mã hoá dữ liệu
Dữ liệu và phân loại dữ liệu
⚠ Và ranh giới đó DỊCH CHUYỂN theo loại dịch vụ:
IaaS (EC2)
↓
Khách hàng lo nhiều nhất — kể cả vá hệ điều hành
PaaS được quản lý (RDS, ElastiCache)
↓
AWS vá hệ điều hành VÀ công cụ cơ sở dữ liệu
Khách hàng lo: lược đồ, người dùng DB, mã hoá, Security Group
Serverless (Lambda, S3, DynamoDB)
↓
AWS lo toàn bộ hạ tầng và runtime
Khách hàng lo: mã nguồn, quyền IAM, cấu hình, dữ liệu
Nguyên tắc chung: càng dùng dịch vụ được quản lý sâu, phần trách nhiệm của bạn càng nhỏ — nhưng phần dữ liệu và phân quyền thì LUÔN LÀ CỦA BẠN.
Vì sao các phương án khác sai
-
B (AWS chịu trách nhiệm vá hạ tầng VÀ vá hệ điều hành khách lẫn ứng dụng của khách hàng) — đây là phương án gần nhất và vế đầu đúng: AWS đúng là vá hạ tầng. Nhưng vế sau sai hẳn: vá hệ điều hành khách và ứng dụng là việc của KHÁCH HÀNG với EC2. Đây chính là hiểu nhầm nguy hiểm nhất trong toàn bộ mô hình.
-
C (với S3, quản lý hệ điều hành và nền tảng là trách nhiệm khách hàng) — ngược hẳn: S3 là dịch vụ được quản lý hoàn toàn, khách hàng không có hệ điều hành nào để quản. Trách nhiệm của bạn với S3 là quyền truy cập, mã hoá, và phân loại dữ liệu.
-
A (AWS chịu trách nhiệm đào tạo khách hàng và nhân viên của khách hàng) — đào tạo nhân viên của bạn là việc của bạn. AWS chỉ chịu trách nhiệm đào tạo nhân viên của chính AWS.
Ghi nhớ
⚠ Mô hình trách nhiệm chia sẻ — bảng phải thuộc: | AWS lo ("OF the cloud") | Khách hàng lo ("IN the cloud") | |---|---| | Trung tâm dữ liệu, an ninh vật lý | Dữ liệu và phân loại dữ liệu | | Phần cứng, mạng vật lý | IAM, quản lý danh tính | | Tầng ảo hoá (hypervisor) | Hệ điều hành khách + bản vá (với EC2) | | Dịch vụ được quản lý (bên dưới) | Ứng dụng và cấu hình | | Tuân thủ hạ tầng (SOC, ISO, PCI) | Security Group, NACL, mã hoá |
Từ khoá nhận diện:
"vá hệ điều hành EC2" → KHÁCH HÀNG "vá hypervisor, phần cứng" → AWS "vá công cụ RDS" → AWS (trong maintenance window) "cấu hình Security Group" → KHÁCH HÀNG, luôn luôn "mã hoá dữ liệu" → KHÁCH HÀNG quyết định bật hay không "an ninh vật lý trung tâm dữ liệu" → AWS
| Ba thứ LUÔN thuộc khách hàng, với MỌI dịch vụ | Nội dung |
|---|---|
| Dữ liệu của bạn | nội dung, phân loại, ai được xem |
| IAM và phân quyền | AWS không biết ai nên có quyền gì |
| Cấu hình dịch vụ | bucket công khai hay riêng tư là lựa chọn của bạn |
| Công cụ giúp bạn làm phần của mình | Việc |
|---|---|
| Systems Manager Patch Manager | vá hệ điều hành |
| Inspector | tìm lỗ hổng |
| AWS Config | kiểm tra cấu hình đúng chuẩn |
| Security Hub | tổng hợp theo chuẩn CIS, PCI DSS |
| GuardDuty | phát hiện hành vi độc hại |
| AWS Artifact | tải báo cáo tuân thủ của AWS cho phần AWS lo |
| Hiểu nhầm phổ biến nhất | Sự thật |
|---|---|
| "Dữ liệu trên AWS được sao lưu tự động" | KHÔNG — sao lưu là việc của bạn |
| "AWS vá máy EC2 hộ tôi" | KHÔNG |
| "AWS chịu trách nhiệm nếu bucket của tôi lộ" | KHÔNG — cấu hình là của bạn |
| "Dùng AWS là tự động tuân thủ HIPAA/PCI" | KHÔNG — AWS cấp nền tảng đạt chuẩn, phần triển khai là của bạn |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Máy đã vá đủ chưa | Patch Manager compliance | | Cấu hình có lệch chuẩn không | AWS Config + Security Hub | | AWS đạt chuẩn gì | AWS Artifact — tải báo cáo SOC, ISO, PCI |
Và một cách diễn đạt ngắn gọn để nhớ suốt đời: AWS lo an ninh CỦA đám mây, bạn lo an ninh TRONG đám mây. Mọi câu hỏi về trách nhiệm đều quy về việc xác định thứ đang bàn nằm ở phía nào của ranh giới — và với EC2, ranh giới đó nằm ngay bên dưới hệ điều hành khách, nghĩa là từ hệ điều hành trở lên đều là phần của bạn.
A large IT company uses several AWS accounts for the different lines of business. Quite often, the systems administrator is faced with the problem of sharing Customer Master Keys (CMKs) across multiple AWS accounts for accessing AWS resources spread across these accounts.
How will you implement a solution to address this issue?
-
A
The key policy for the CMK must give the external account (or users and roles in the external account) permission to use the CMK. IAM policies in the external account must delegate the key policy permissions to its users and roles
-
B
AWS Owned CMK can be used across AWS accounts. Configure an AWS Owned CMK and use it across accounts that need to share the key material
-
C
Declare a key policy for the CMK to give the external account permission to use the CMK. This key policy should be embedded with the first request of every transaction
-
D
Use AWS KMS service-linked roles to share access across AWS accounts
Xem giải thích
Đáp án
A — Key policy của CMK phải cấp quyền dùng khoá cho tài khoản bên ngoài (hoặc cho user và role trong tài khoản đó). ĐỒNG THỜI, chính sách IAM ở tài khoản bên ngoài phải uỷ quyền lại cho user và role của họ.
Vì sao đúng
Chia sẻ KMS key liên tài khoản đòi HAI chính sách ở HAI tài khoản — thiếu một bên là hỏng.
⚠ Điểm mấu chốt — hai bước, hai nơi:
Bước 1 — Ở TÀI KHOẢN SỞ HỮU KHOÁ: sửa key policy
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::444455556666:root" },
"Action": ["kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey"],
"Resource": "*"
}
↓
→ mới chỉ là "tài khoản kia ĐƯỢC PHÉP"
→ chưa ai dùng được
Bước 2 — Ở TÀI KHOẢN BÊN NGOÀI: sửa chính sách IAM
{
"Effect": "Allow",
"Action": ["kms:Decrypt", "kms:GenerateDataKey"],
"Resource": "arn:aws:kms:ap-southeast-1:111122223333:key/xxxx"
}
↓
→ giờ user/role cụ thể mới thật sự dùng được
⚠ Vì sao phải cả hai — đây là quy tắc chung của mọi truy cập liên tài khoản:
Cùng một tài khoản
↓
Chỉ cần MỘT trong hai (resource policy hoặc IAM policy) Allow
KHÁC tài khoản
↓
CẢ HAI đều phải Allow
↓
→ thiếu bên nào cũng nhận AccessDenied
→ và thông báo lỗi GIỐNG HỆT nhau
⚠ Và "Principal": root ở đây có nghĩa gì:
"arn:aws:iam::444455556666:root"
↓
KHÔNG phải "chỉ tài khoản root của họ"
↓
Mà là "TÀI KHOẢN ĐÓ được phép uỷ quyền cho user/role của mình"
↓
→ muốn chặt hơn: khai đích danh ARN của role được phép
Vì sao các phương án khác sai
-
C (khai key policy cho tài khoản ngoài, và nhúng key policy vào request đầu tiên của mỗi giao dịch) — đây là phương án gần nhất vì vế đầu đúng. Nhưng vế sau bịa hoàn toàn: key policy là cấu hình lưu ở KMS, không phải thứ gửi kèm request.
-
B (dùng AWS Owned CMK để chia sẻ giữa các tài khoản) — ngược hẳn: AWS owned key là khoá AWS sở hữu và dùng chung nội bộ; bạn không thấy nó, không sửa key policy được, nên đó là loại khoá không thể chia sẻ nhất.
-
D (dùng service-linked role của KMS để chia sẻ) — service-linked role là role AWS tạo cho chính dịch vụ dùng, không phải cơ chế chia sẻ khoá.
Ghi nhớ
⚠ Ba loại khoá KMS — bảng phải thuộc: | Loại | Sửa key policy | Chia sẻ liên tài khoản | |---|---|---| | AWS owned key | không thấy | KHÔNG | | AWS managed key (aws/s3, aws/ebs) | KHÔNG | KHÔNG | | Customer managed key (CMK) | CÓ | CÓ |
Từ khoá nhận diện:
"chia sẻ khoá giữa các tài khoản" → CMK + key policy + IAM policy ở CẢ HAI bên "AWS managed key chia sẻ được" → LUÔN SAI "chỉ cần sửa một bên" → SAI với liên tài khoản "chia sẻ AMI mã hoá" → cũng phải chia sẻ quyền dùng CMK "khoá dùng chung cho cả tổ chức" → key policy dùng
aws:PrincipalOrgID
| Quyền KMS cần cho từng thao tác | Nội dung |
|---|---|
| Ghi dữ liệu mã hoá | kms:GenerateDataKey |
| Đọc dữ liệu mã hoá | kms:Decrypt |
| Xem thông tin khoá | kms:DescribeKey |
| Cho dịch vụ tạo grant tạm (EC2, ASG, RDS) | kms:CreateGrant — rất hay bị quên |
| Điều kiện đáng dùng trong key policy | Nội dung |
|---|---|
kms:ViaService |
khoá chỉ dùng được qua một dịch vụ (ví dụ s3.ap-southeast-1.amazonaws.com) |
aws:PrincipalOrgID |
cho phép mọi tài khoản trong tổ chức |
kms:EncryptionContext:* |
ràng buộc theo ngữ cảnh mã hoá |
aws:SourceArn |
ràng buộc theo tài nguyên gọi tới |
⚠ Điều tuyệt đối phải nhớ khi viết key policy:
LUÔN để lại một principal quản trị khoá trong key policy
"Principal": {"AWS": "arn:aws:iam::<tai-khoan>:root"}
"Action": "kms:*"
↓
Nếu không, và không ai có kms:PutKeyPolicy
↓
→ khoá bị ĐÓNG BĂNG VĨNH VIỄN
→ mọi dữ liệu mã hoá bằng nó KHÔNG ĐỌC ĐƯỢC NỮA
→ kể cả root, kể cả AWS Support
| Chẩn đoán AccessDenied liên quan KMS | Cách |
|---|---|
| CloudTrail | xem lời gọi thất bại là s3 hay kms |
Nếu là kms |
thiếu quyền ở key policy hoặc IAM policy |
| Kiểm tra cả hai bên | tài khoản sở hữu khoá và tài khoản dùng khoá |
| Công cụ | IAM Policy Simulator |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Key policy hiện tại | get-key-policy --policy-name default | | Ai đang dùng khoá | CloudTrail, lọc eventSource = kms.amazonaws.com | | Bên kia dùng được chưa | cho họ chạy thử kms:DescribeKey trên ARN của khoá |
Và một lời khuyên về cách viết key policy cho môi trường nhiều tài khoản: hãy dùng điều kiện aws:PrincipalOrgID thay vì liệt kê từng số hiệu tài khoản. Danh sách tài khoản luôn thay đổi khi tổ chức mở rộng, và mỗi lần thêm một tài khoản mà phải sửa key policy ở nhiều khoá là một cơ hội để ai đó viết sai — trong khi aws:PrincipalOrgID tự đúng mãi mãi và tự loại bỏ tài khoản khi nó rời khỏi tổ chức.
The development team at an IT company is looking at moving its web applications to Amazon EC2 instances. The team is weighing its options for EBS volumes and instance store-backed instances for these applications with varied workloads.
Which of the following would you identify as correct regarding instance store and EBS volumes? (Select three)
-
A
Snapshots of EBS volumes, stored on Amazon S3, can be accessed using Amazon S3 APIs
-
B
EBS snapshots only capture data that has been written to your Amazon EBS volume, which might exclude any data that has been locally cached by your application or operating system
-
C
Data stored in the instance store is preserved when you stop or terminate your instance. However, data is lost when you hibernate the instance. Configure EBS volumes or have a backup plan to avoid using critical data to this behavior
-
D
Use separate Amazon EBS volumes for the operating system and your data, even though root volume persistence feature is available
-
E
EBS encryption does not support boot volumes
-
F
By default, data on a non-root EBS volume is preserved even if the instance is shutdown or terminated
Xem giải thích
Đáp án
B, D, F — ba điều đúng về instance store và EBS:
- F — Mặc định, dữ liệu trên EBS volume KHÔNG PHẢI ổ gốc vẫn được giữ lại kể cả khi instance bị tắt hoặc chấm dứt.
- B — EBS snapshot chỉ chụp dữ liệu ĐÃ ĐƯỢC GHI XUỐNG volume, nên có thể bỏ sót dữ liệu còn nằm trong bộ đệm của ứng dụng hoặc hệ điều hành.
- D — Nên dùng EBS volume RIÊNG cho hệ điều hành và cho dữ liệu, dù đã có tính năng giữ lại ổ gốc.
Vì sao đúng
⚠ Điều F — DeleteOnTermination mặc định khác nhau giữa hai loại volume:
Ổ GỐC (root volume)
↓
DeleteOnTermination = TRUE ← xoá theo instance
Ổ DỮ LIỆU (volume gắn thêm)
↓
DeleteOnTermination = FALSE ← GIỮ LẠI
↓
→ đây chính là điều F
→ và cũng là lý do vì sao điều D là lời khuyên đúng
⚠ Điều B — snapshot chỉ thấy những gì đã ghi xuống đĩa:
Ứng dụng ghi dữ liệu
↓
Nằm trong bộ đệm của ứng dụng và của hệ điều hành
↓
Chưa flush xuống EBS
↓
Chụp snapshot lúc này
↓
→ dữ liệu trong bộ đệm KHÔNG có trong snapshot
↓
Chữa: fsfreeze (Linux) / VSS (Windows) trước khi chụp,
hoặc dừng ghi, hoặc chấp nhận crash-consistent
⚠ Điều D — vì sao nên tách ổ hệ điều hành và ổ dữ liệu:
Một ổ duy nhất chứa cả hệ điều hành lẫn dữ liệu
↓
Muốn thay máy, nâng cấp OS, đổi AMI
↓
→ phải di chuyển cả dữ liệu theo
Tách hai ổ
↓
→ thay máy: chỉ cần tháo ổ dữ liệu, gắn sang máy mới
→ snapshot riêng, lịch sao lưu riêng
→ chọn loại volume riêng (gp3 cho OS, io2 cho dữ liệu)
→ khôi phục nhanh hơn nhiều
Vì sao các phương án khác sai
-
C (dữ liệu instance store được giữ khi stop/terminate, nhưng mất khi hibernate) — đây là phương án gần nhất và đảo ngược hoàn toàn sự thật: instance store MẤT khi stop và terminate; còn hibernate thì lại GIỮ được (vì hibernate lưu trạng thái xuống ổ gốc EBS).
-
E (mã hoá EBS không hỗ trợ ổ khởi động) — sai; EBS encryption hỗ trợ đầy đủ ổ gốc. (Có một thời kỳ rất xa trước đây thì đúng, nhưng đã hỗ trợ từ lâu.)
-
A (snapshot EBS lưu trên S3 và truy cập được bằng S3 API) — đây là bẫy tinh vi: snapshot được lưu trên S3 ở hạ tầng nội bộ của AWS, nhưng chúng nằm trong bucket do AWS quản lý mà bạn không thấy. Bạn thao tác với chúng bằng EC2 API (
describe-snapshots,copy-snapshot), không phải S3 API.
Ghi nhớ
⚠ DeleteOnTermination — bảng phải thuộc: | Loại volume | Mặc định | Hệ quả | |---|---|---| | Ổ gốc (root) | true | xoá cùng instance | | Ổ dữ liệu gắn thêm | false | giữ lại | | Đổi được không | được, cả lúc khởi chạy lẫn khi đang chạy | modify-instance-attribute |
Từ khoá nhận diện:
"volume gắn thêm có mất khi terminate không" → KHÔNG, mặc định giữ lại "ổ gốc có mất không" → CÓ, mặc định xoá "instance store khi stop" → MẤT SẠCH "instance store khi hibernate" → GIỮ ĐƯỢC (nhờ lưu xuống ổ gốc EBS) "snapshot truy cập bằng S3 API" → SAI, dùng EC2 API "snapshot có nhất quán không" → crash-consistent, trừ khi freeze trước
| Ba mức nhất quán khi chụp snapshot | Nội dung |
|---|---|
| Crash-consistent | như rút phích điện — mặc định |
| File-system consistent | fsfreeze (Linux) trước khi chụp |
| Application-consistent | VSS (Windows) hoặc dừng ghi ở tầng ứng dụng |
| Nhiều volume cùng lúc | create-snapshots (số nhiều) — chụp cả bộ tại một thời điểm |
| Đặc điểm của EBS snapshot | Nội dung |
|---|---|
| Tăng dần (incremental) | chỉ lưu khối đã thay đổi so với snapshot trước |
| Xoá snapshot cũ | an toàn — AWS tự giữ khối mà snapshot sau còn cần |
| Phạm vi | theo Region — copy sang Region khác được |
| Deregister AMI không xoá snapshot | phải xoá riêng, nếu không vẫn tính tiền |
| Recycle Bin | bảo vệ snapshot và AMI khỏi xoá nhầm |
| EBS và instance store — bảng đối chiếu | |
|---|---|
| EBS | lưu trữ mạng, sống sót stop/start, snapshot được |
| Instance store | đĩa gắn thẳng vào host, MẤT khi stop/terminate, nhanh hơn nhiều |
| Instance store hợp cho | bộ đệm, thư mục tạm, dữ liệu tái tạo được |
| Hibernate | lưu RAM xuống ổ gốc EBS — nên ổ gốc phải mã hoá và đủ lớn |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Volume có bị xoá khi terminate không | describe-instances, xem DeleteOnTermination của từng block device | | Snapshot có nhất quán không | khởi chạy thử một instance từ nó | | Snapshot mồ côi | describe-snapshots --owner-ids self, đối chiếu với AMI còn sống |
Và một quy ước kiến trúc đáng áp dụng từ máy chủ đầu tiên: hãy luôn tách ổ hệ điều hành khỏi ổ dữ liệu. Nó biến việc nâng cấp hệ điều hành, đổi AMI hay thay máy từ một cuộc di chuyển dữ liệu thành một thao tác tháo và gắn volume — và trong một sự cố, khả năng gỡ ổ dữ liệu ra khỏi một máy đang hỏng rồi gắn sang máy khoẻ thường là con đường phục hồi nhanh nhất mà bạn có.
A healthcare solutions company is undergoing a compliance audit by the regulator. The company has hundreds of IAM users that make API calls but specifically it needs to be determined who is making KMS API calls.
Which of the following services should the compliance team use?
-
A
CloudWatch Metrics
-
B
CloudTrail
-
C
X-Ray
-
D
Config
Xem giải thích
Đáp án
B — CloudTrail.
Vì sao đúng
Câu hỏi của kiểm toán viên là "AI đang gọi API KMS" — và trong toàn bộ danh mục AWS, chỉ CloudTrail trả lời được câu hỏi bắt đầu bằng chữ "ai".
⚠ Điểm mấu chốt — mỗi bản ghi CloudTrail đều mang danh tính người gọi:
Mỗi lời gọi tới KMS sinh một sự kiện chứa:
userIdentity → AI gọi (IAM user, role, người đóng vai)
eventName → Decrypt, GenerateDataKey, Encrypt...
eventTime → LÚC NÀO
resources → KHOÁ NÀO
requestParameters.encryptionContext → cho TÀI NGUYÊN NÀO
sourceIPAddress, userAgent
⚠ Truy vấn bằng Athena để có đúng báo cáo kiểm toán cần:
SELECT useridentity.arn AS nguoi_goi,
eventname AS thao_tac,
element_at(resources, 1).arn AS khoa,
count(*) AS so_lan
FROM cloudtrail_logs
WHERE eventsource = 'kms.amazonaws.com'
AND eventtime BETWEEN '2026-08-01' AND '2026-09-01'
GROUP BY 1, 2, 3
ORDER BY so_lan DESC;
⚠ Và một điểm rất quan trọng với KMS:
Lời gọi KMS là MANAGEMENT EVENT
↓
→ MIỄN PHÍ trong bản sao đầu tiên của CloudTrail
↓
→ không có lý do gì để không ghi lại
↓
(khác với S3 data event — phải bật và có phí)
Nhưng đừng quên: Event history trên console chỉ giữ 90 ngày. Với kiểm toán tuân thủ, phải tạo trail đổ vào S3 để giữ lâu hơn.
Vì sao các phương án khác sai
-
D (AWS Config) — đây là phương án gần nhất vì Config đúng là dịch vụ dành cho tuân thủ. Nhưng nó trả lời câu hỏi "tài nguyên đang được CẤU HÌNH thế nào" (khoá có bật xoay tự động không, key policy ra sao), chứ không ghi lại AI đã gọi API nào.
-
A (CloudWatch Metrics) — cho số đếm tổng hợp: bao nhiêu lời gọi, bao nhiêu lỗi. Nó không có thông tin danh tính nào.
-
C (AWS X-Ray) — truy vết hành trình một request bên trong ứng dụng của bạn, để tìm nút thắt hiệu năng. Không phải công cụ kiểm toán.
Ghi nhớ
⚠ Bốn dịch vụ hay bị nhầm trong bối cảnh tuân thủ — bảng phải thuộc: | Dịch vụ | Trả lời câu hỏi | |---|---| | CloudTrail | "AI đã gọi API nào, lúc nào" | | AWS Config | "tài nguyên đang cấu hình thế nào, có đúng chuẩn không" | | CloudWatch | "hệ thống đang chạy ra sao" (chỉ số, log) | | X-Ray | "request đi qua đâu, chậm ở đâu" |
Từ khoá nhận diện:
"AI làm gì trên AWS" → CloudTrail "cấu hình có đúng chuẩn không" → AWS Config "ai đã giải mã bằng khoá này" → CloudTrail, sự kiện
kms:Decrypt"tổng hợp phát hiện bảo mật" → Security Hub "điều tra một sự cố bảo mật" → Amazon Detective
| Ba loại sự kiện của CloudTrail | Chi phí |
|---|---|
| Management event | MIỄN PHÍ một bản sao — KMS nằm ở đây |
| Data event | có phí — GetObject, gọi Lambda, DynamoDB item |
| Insights event | có phí — phát hiện tần suất API bất thường |
| Chuẩn bị CloudTrail cho kiểm toán | Việc |
|---|---|
| Tạo trail đổ vào S3 | event history chỉ giữ 90 ngày |
| Multi-region trail | không bỏ sót Region nào |
| Organization trail | một trail cho toàn bộ tổ chức |
| Log file validation | tệp digest chứng minh log không bị sửa |
| S3 Object Lock trên bucket log | không ai xoá được, kể cả root |
| Bucket log ở tài khoản riêng | tách khỏi tài khoản bị kiểm toán |
| Các lời gọi KMS đáng chú ý khi kiểm toán | Ý nghĩa |
|---|---|
Decrypt, GenerateDataKey |
ai đang dùng khoá |
ScheduleKeyDeletion |
có người định XOÁ khoá — cảnh báo ngay |
PutKeyPolicy |
ai đổi quyền trên khoá |
DisableKey |
ai vô hiệu hoá khoá |
CreateGrant |
dịch vụ nào được cấp quyền tạm |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Trail có đang ghi không | get-trail-status, xem IsLogging | | Log có toàn vẹn không | validate-logs với tệp digest | | Ai gọi KMS nhiều nhất | Athena, nhóm theo useridentity.arn |
Và một lời khuyên khi chuẩn bị cho một đợt kiểm toán: hãy dựng sẵn bảng Athena trên log CloudTrail và lưu lại vài truy vấn mẫu, đừng chờ tới lúc kiểm toán viên hỏi. Log thô của CloudTrail là JSON lồng nhiều tầng, rất khó đọc bằng mắt; một bảng đã phân vùng cùng năm sáu truy vấn viết sẵn biến những câu hỏi kiểu "ai đã chạm vào khoá này trong sáu tháng qua" từ một buổi làm việc căng thẳng thành một lệnh chạy trong ba mươi giây.
An e-commerce company runs their database workloads on Provisioned IOPS SSD (io1) volumes.
As a SysOps Administrator, which of the following options would you identify as an INCORRECT configuration for io1 EBS volume types?
-
A
100 GiB size volume with 3000 IOPS
-
B
100 GiB size volume with 7500 IOPS
-
C
100 GiB size volume with 5000 IOPS
-
D
100 GiB size volume with 1000 IOPS
Xem giải thích
Đáp án
B — Volume 100 GiB với 7.500 IOPS là cấu hình KHÔNG hợp lệ.
Vì sao đúng
io1 có một ràng buộc cứng giữa dung lượng và IOPS, và 7.500 vượt qua nó.
⚠ Điểm mấu chốt — tỷ lệ tối đa của io1 là 50:1:
io1: IOPS tối đa = dung lượng (GiB) × 50
↓
100 GiB × 50 = 5.000 IOPS ← trần cho volume này
↓
A: 3.000 ≤ 5.000 → HỢP LỆ
C: 5.000 = 5.000 → HỢP LỆ (đúng trần)
D: 1.000 ≤ 5.000 → HỢP LỆ
B: 7.500 > 5.000 → KHÔNG HỢP LỆ ← đáp án
Muốn 7.500 IOPS trên io1 thì phải có volume ít nhất 150 GiB (150 × 50 = 7.500).
⚠ Bảng tỷ lệ của các loại volume — con số phải thuộc:
| Loại | Tỷ lệ IOPS:GiB | IOPS tối đa |
|---|---|---|
| io1 | 50:1 | 64.000 |
| io2 | 500:1 | 64.000 |
| io2 Block Express | 1.000:1 | 256.000 |
| gp3 | 500:1 | 16.000 |
| gp2 | 3 IOPS/GiB (cố định) | 16.000 |
⚠ Vì sao AWS đặt ra tỷ lệ này:
IOPS được phục vụ bởi phần cứng lưu trữ thật
↓
Một volume rất nhỏ mà đòi IOPS rất cao
↓
→ chiếm dụng phần cứng không tương xứng
↓
→ nên AWS ràng buộc theo dung lượng
↓
io2 nới tỷ lệ lên 500:1 — cùng 100 GiB
thì io2 cho tới 50.000 IOPS
Vì sao các phương án khác sai
(Ba cấu hình còn lại đều nằm trong giới hạn, nên chúng hợp lệ và không phải đáp án.)
-
C (100 GiB với 5.000 IOPS) — đây là phương án gần nhất và nằm ĐÚNG ở trần: 100 × 50 = 5.000. Hợp lệ, dù không còn chỗ để tăng thêm.
-
A (100 GiB với 3.000 IOPS) — thoải mái trong giới hạn.
-
D (100 GiB với 1.000 IOPS) — hợp lệ, nhưng lãng phí: với mức IOPS này thì gp3 rẻ hơn nhiều (gp3 cho sẵn 3.000 IOPS miễn phí ở mọi kích thước).
Ghi nhớ
⚠ Các loại EBS volume và giới hạn — bảng phải thuộc: | Loại | Dung lượng | IOPS tối đa | Throughput tối đa | |---|---|---|---| | gp3 | 1 GiB – 16 TiB | 16.000 | 1.000 MB/s | | gp2 | 1 GiB – 16 TiB | 16.000 | 250 MB/s | | io1 | 4 GiB – 16 TiB | 64.000 | 1.000 MB/s | | io2 | 4 GiB – 16 TiB | 64.000 | 1.000 MB/s | | io2 Block Express | 4 GiB – 64 TiB | 256.000 | 4.000 MB/s | | st1 | 125 GiB – 16 TiB | 500 | 500 MB/s | | sc1 | 125 GiB – 16 TiB | 250 | 250 MB/s |
Từ khoá nhận diện:
"io1, tỷ lệ IOPS:GiB" → 50:1 "io2, tỷ lệ" → 500:1 — gấp 10 lần io1 "gp3 cho sẵn bao nhiêu" → 3.000 IOPS và 125 MB/s ở MỌI kích thước "gp2 tính IOPS thế nào" → 3 IOPS mỗi GiB "IOPS cao nhất" → io2 Block Express, 256.000
⚠ Vì sao gp3 thường là câu trả lời tốt hơn io1 trong thực tế:
Cần 3.000 IOPS trên volume 100 GiB
↓
io1: phải trả tiền cho 3.000 PIOPS + dung lượng
gp3: 3.000 IOPS ĐÃ CÓ SẴN, miễn phí
↓
→ gp3 rẻ hơn hẳn
↓
Chỉ nên dùng io1/io2 khi:
- cần trên 16.000 IOPS
- cần độ bền cao hơn (io2: 99,999%)
- cần Multi-Attach
| Khi nào cần io2 thay vì io1 | Nội dung |
|---|---|
| Độ bền | io2 99,999% so với io1 99,8–99,9% |
| Tỷ lệ IOPS:GiB | 500:1 so với 50:1 |
| Cùng giá | io2 không đắt hơn io1 — nên luôn ưu tiên io2 |
| Multi-Attach | cả hai đều hỗ trợ, tối đa 16 instance, cùng AZ |
| Trần của INSTANCE cũng phải xét | Nội dung |
|---|---|
| Mỗi loại instance có trần băng thông EBS riêng | |
| Volume nhanh mà instance nhỏ | vẫn bị chặn ở trần của instance |
| Kiểm tra | chỉ số EBSIOBalance% và EBSByteBalance% |
| Cần | dùng instance EBS-optimized (mặc định ở thế hệ mới) |
Ba việc kiểm chứng: | Việc | Cách | |---|---| | Volume đang cấu hình gì | describe-volumes, xem VolumeType, Size, Iops | | Có đang chạm trần không | chỉ số VolumeQueueLength — cao là đang xếp hàng | | gp3 có rẻ hơn không | tính lại: gp3 rẻ hơn gp2 và tách riêng phần IOPS |
Và một lời khuyên áp dụng được ngay: trước khi cấp một volume io1, hãy tính xem gp3 có đủ không. Rất nhiều volume io1 đang chạy trong sản xuất được cấu hình ở mức IOPS mà gp3 cung cấp sẵn không mất tiền — chuyển sang gp3 diễn ra tại chỗ, không cần dừng máy, và thường cắt được một phần đáng kể hoá đơn lưu trữ mà không ai nhận ra sự khác biệt về hiệu năng.