DỊCH VỤ AWS KEY MANAGEMENT (AWS KMS)
Samira Kabbour
CMO
1. AWS KEY MANAGEMENT SERVICE LÀ GÌ?
Key Management Service là dịch vụ quản lý khóa được tích hợp với nhiều dịch vụ AWS khác. Dịch vụ này dùng để tạo, lưu trữ và kiểm soát các khóa để mã hóa dữ liệu của mình. KMS cho nhiều quyền kiểm soát để truy cập vào dữ liệu đã mã hóa và đảm bảo độ bền lên đến 99.99999999999% của các khóa.
AWS KMS cung cấp độ sẵn sàng cao. Vì khóa được lưu trữ trong nhiều AZ trong một khu vực và được tích hợp với CloudTrail. Chúng ta có thể kiểm tra khóa đã được sử dụng khi nào, bởi ai, cho mục đích gì. Việc này nhằm phục vụ những tuân thủ quy định.
Một số điểm đáng lưu ý về dịch vụ quản lý khóa này:
- Mặc dù là một dịch vụ toàn cầu nhưng các khóa lại bị giới hạn trong khu vực. Nghĩa là không thể gửi các khóa ra bên ngoài khu vực mà khóa được tạo.
- Dịch vụ này bảo vệ tính bảo mật và toàn vẹn của các khóa của bạn như thế nào? Nhờ việc sử dụng FIPS 140-2 validated HSMs (Mô-đun bảo mật phần cứng).
- Dù đang viết ứng dụng của riêng mình hoặc sử dụng các dịch vụ AWS, ta có thể kiểm soát ai có thể truy cập khóa master của mình và có quyền truy cập vào dữ liệu của bạn.
- Khi nhập khóa vào KMS, hãy tạo một bản sao của khóa để có thể nhập lại bất cứ lúc nào.
2. CÁCH KMS MÃ HÓA DỮ LIỆU
Dịch vụ KMS không mã hóa dữ liệu của bạn. Việc này thực hiện bởi khóa master của bạn, có thể mã hóa hoặc giải mã dữ liệu lên tới 4096 byte. AWS có rất khối lượng dữ liệu lớn như S3, EBS, RDS,….. Vì vậy dịch vụ KMS không làm được điều đó. Khóa master dùng để tạo, mã hóa và giải mã các khóa data được sử dụng bên ngoài KMS. Chính các khóa data này thực hiện việc mã hóa và giải mã.
Ta có thể tạo, sử dụng hoặc quản lý khóa này thông qua AWS KMS. Họ luôn túc trực bên các mô-đun bảo mật phần cứng xác thực. Điều này khác với các khóa data vì AWS KMS không lưu trữ, quản lý hoặc thực hiện bất kỳ loại hoạt động mã hóa nào với các khóa dữ liệu của bạn. Bạn phải sử dụng bên ngoài AWS KMS. Có thể dùng OpenSSL hoặc các thư viện mã hóa khác như AWS Encryption SDK.
Để tạo một khóa dữ liệu GenerateData, AWS KMS sử dụng khóa master được chỉ định để tạo khóa data. Như hình dưới, có hai khóa data và khóa plaintext data.
Khóa plaintext data được sử dụng để mã hóa dữ liệu, sau đó bị xóa ngay để dữ liệu không bị xâm phạm. Khóa data được lưu trữ cùng với dữ liệu đã mã hóa để sử dụng trong quá trình giải mã.
Bây giờ phần mã hóa đã xong, để giải mã bạn cần sử dụng các thao tác. Key Management Service sử dụng khóa master của khách hàng để giải mã khóa data đã được lưu trữ cùng dữ liệu. Sau đó trả về khóa plaintext để giải mã dữ liệu một lần nữa và khóa này sẽ bị xóa.
Sơ đồ sau mô tả thao tác này này:
3. KHÓA MASTER ĐƯỢC QUẢN LÝ BỞI AWS VÀ KHÁCH HÀNG
Khi bạn muốn dịch vụ AWS giúp bạn mã hóa dữ liệu, bạn có thể chỉ định khóa master mà bạn muốn sử dụng để tạo, mã hóa hoặc giải mã khóa dữ liệu. Đây là những khóa master do khách hàng quản lý. Về cơ bản, bạn có toàn quyền kiểm soát như bật, tắt, xoay khóa chính. Ngoài ra, còn có thể tạo chính sách IAM để hạn chế người truy cập khóa, cấp quyền cho các tài khoản và dịch vụ khác sử dụng khóa này.
Nếu bạn không chỉ định khóa master thì AWS đó sẽ tạo và quản lý khóa master này.
Trong trường hợp đó, kiểm soát truy cập và các chính sách sẽ được AWS quản lý. Dù không có quyền kiểm soát trực tiếp các khóa, bạn vẫn có thể theo dõi các khóa này trong CloudTrail.
4. MÃ HÓA PHONG BÌ
Như đề cập ở trên, khóa master được sử dụng để tạo, mã hóa hoặc giải mã các khóa dữ liệu. Mã hóa phong bì bao gồm mã hóa dữ liệu bằng khóa dữ liệu văn bản. Sau đó mã hóa khóa dữ liệu văn bản bằng một khóa khác là khóa master của khách hàng.
LỜI CUỐI
Dịch vụ quản lý khóa (KMS) cùng với Server-side Encryption trong S3 là một trong những chủ đề quan trọng nhất cho kỳ thi chứng chỉ CSAA.
Bạn cũng có thể tham gia khóa học trực tuyến AWS CSAA của Whizlabs để chuẩn bị cho kỳ thi AWS Certified Solutions Architect Associate. Ngoài ra, bạn có thể thực hiện các bài kiểm tra Thực hành AWS CSAA để kiểm tra trình độ hiện tại của mình.