AWS Key Management Service
Quản lý khoá mã hoá
Tạo và quản lý khoá mã hoá; các dịch vụ S3, EBS, RDS, DynamoDB… gọi KMS để mã hoá dữ liệu, mọi lần dùng khoá đều được ghi log.
- Chi phí$ Rẻ
- Độ khó●●●●●
- Để không có tốn tiền?Có
- AWS quản lý
- Có trong đềCLF · SAA · DVA · SOA
Hình dungNhư két giữ chìa khoá: chìa không bao giờ rời két, chỉ có người được phép nhờ két mở khoá.
KMS đứng ở đâu trong hệ thống?
Một ví dụ thật, từng bước
- Công ty lưu hồ sơ khách hàng trong S3 và RDS, quy định yêu cầu mã hoá và biết ai đã dùng khoá.
- Bạn tạo một customer managed key trong KMS và viết key policy: nhóm Security quản trị khoá, ứng dụng chỉ được mã hoá/giải mã.
- Bucket S3 đặt mặc định mã hoá SSE-KMS bằng khoá đó; RDS cũng chọn khoá này khi tạo database.
- Khoá gốc không bao giờ rời KMS; mỗi lần dùng khoá đều được ghi lại trong CloudTrail để kiểm toán.
- Bật xoay khoá tự động; dữ liệu cũ vẫn giải mã được mà không phải mã hoá lại.
Khi nào nên dùng
✓ Nên dùng khi
Mã hoá dữ liệu khi lưu, kiểm soát ai được giải mã.
✗ Không nên dùng khi
Cần thiết bị HSM riêng, single-tenant → CloudHSM.
Ví dụ hay gặp
- Mã hoá S3, EBS, RDS, DynamoDB bằng khoá riêng
- Mã hoá dữ liệu trong ứng dụng (envelope encryption)
- Ký số bằng khoá bất đối xứng
- Kiểm soát ai được giải mã qua key policy
KMS, Secrets Manager hay ACM?
| Quản lý gì | Khoá mã hoá | Mật khẩu, API key | Chứng chỉ SSL/TLS |
|---|---|---|---|
| Dùng để | Mã hoá dữ liệu lưu trữ | Ứng dụng lấy bí mật khi chạy | Bật HTTPS |
| Tự xoay/gia hạn | Xoay khoá tự động | Xoay mật khẩu tự động | Tự gia hạn chứng chỉ |
| Tính tiền | Theo khoá/tháng + số lần gọi | Theo bí mật/tháng + số lần gọi | Chứng chỉ public miễn phí |
Tốn bao nhiêu tiền?
- Cách tính: $1/tháng mỗi khoá do khách hàng quản lý + ~$0,03/10.000 request. Khoá do AWS quản lý không tính phí lưu.
- Miễn phí: Always Free: 20.000 request/tháng.
S3 SSE-KMS với hàng triệu object làm mỗi request gọi KMS — bật S3 Bucket Key để giảm tới ~99%; tạo khoá riêng cho từng thứ nhỏ lẻ.
Cần tự kiểm soát khoá, xoay khoá, tách quyền và kiểm toán → SSE-KMS với customer managed key. Không muốn quản lý khoá chút nào → SSE-S3. Cùng một khoá ở nhiều region → multi-Region key. Yêu cầu HSM riêng một mình → CloudHSM.
Thử sức với câu hỏi thi thật
1A company is preparing to deploy a data lake on AWS. A solutions architect must define the encryption strategy for data at rest in Amazon S3. The company's security policy states: Keys must be rotated every 90 days. Strict separation of duties between key users and key administrators must be implemented. Auditing key usage must be possible. What should the solutions architect recommend?
- AServer-side encryption with AWS KMS managed keys (SSE-KMS) with customer managed customer master keys (CMKs)
- BServer-side encryption with AWS KMS managed keys (SSE-KMS) with AWS managed customer master keys (CMKs)
- CServer-side encryption with Amazon S3 managed keys (SSE-S3) with customer managed customer master keys (CMKs)
- DServer-side encryption with Amazon S3 managed keys (SSE-S3) with AWS managed customer master keys (CMKs)
Xem đáp án
Đáp án đúng: A
SSE-KMS với customer managed key: tự đặt chu kỳ xoay khoá, tách quyền quản trị khoá và quyền dùng khoá bằng key policy, mọi lần dùng khoá được ghi lại trong CloudTrail. AWS managed key không cho chỉnh những điều đó; SSE-S3 không dùng khoá KMS.
2A company is building an application in the AWS Cloud. The application will store data in Amazon S3 buckets in two AWS Regions. The company must use an AWS Key Management Service (AWS KMS) customer managed key to encrypt all data that is stored in the S3 buckets. The data in both S3 buckets must be encrypted and decrypted with the same KMS key. The data and the key must be stored in each of the two Regions. Which solution will meet these requirements with the LEAST operational overhead?
- ACreate an S3 bucket in each Region. Configure the S3 buckets to use server-side encryption with Amazon S3 managed encryption keys (SSE-S3). Configure replication between the S3 buckets.
- BCreate a customer managed multi-Region KMS key. Create an S3 bucket in each Region. Configure replication between the S3 buckets. Configure the application to use the KMS key with client-side encryption.
- CCreate a customer managed KMS key and an S3 bucket in each Region. Configure the S3 buckets to use server-side encryption with Amazon S3 managed encryption keys (SSE-S3). Configure replication between the S3 buckets.
- DCreate a customer managed KMS key and an S3 bucket in each Region. Configure the S3 buckets to use server-side encryption with AWS KMS keys (SSE-KMS). Configure replication between the S3 buckets.
Xem đáp án
Đáp án đúng: B
Multi-Region KMS key có cùng khoá ở cả hai region, nên dữ liệu mã hoá ở region này giải mã được ở region kia. Tạo hai khoá riêng thì là hai khoá khác nhau; SSE-S3 không dùng khoá KMS của bạn.
Câu hỏi thường gặp
KMS khác gì CloudHSM?
KMS là dịch vụ quản lý khoá dùng chung do AWS vận hành, tích hợp với hầu hết dịch vụ AWS. CloudHSM cho bạn thiết bị HSM riêng (single-tenant), toàn quyền kiểm soát khoá, hợp với yêu cầu tuân thủ khắt khe nhưng phải tự vận hành nhiều hơn.
AWS managed key khác customer managed key thế nào?
AWS managed key do dịch vụ tự tạo và quản lý, bạn không chỉnh được policy hay lịch xoay. Customer managed key do bạn tạo, tự viết key policy, bật hoặc tắt xoay khoá tự động, cho tài khoản khác dùng, và tính phí theo tháng.
KMS tính tiền thế nào?
Mỗi customer managed key tính phí theo tháng, cộng với số lần gọi API (mã hoá, giải mã, tạo data key). Có hạn mức miễn phí mỗi tháng cho số request. AWS managed key không tính phí lưu khoá.
Đề thi AWS hay hỏi gì về KMS?
Envelope encryption (dùng data key), key policy kết hợp IAM, xoay khoá tự động, chia sẻ khoá cho tài khoản khác, khoá nhiều region, và giới hạn số request khi mã hoá khối lượng lớn.