1. Tổng quan
Cloud KMS là dịch vụ quản lý khoá được lưu trữ trên đám mây, cho phép bạn quản lý khoá mã hoá cho các dịch vụ đám mây giống như cách bạn quản lý tại cơ sở hạ tầng riêng. Phiên bản này hỗ trợ việc mã hoá, giải mã, ký và xác minh bằng nhiều loại khoá và nguồn, bao gồm cả Cloud HSM cho khoá dựa trên phần cứng. Hướng dẫn này chỉ cho bạn cách mã hoá và giải mã dữ liệu bằng khoá Cloud KMS đối xứng.
Bạn sẽ tìm hiểu
- Cách bật Cloud KMS API
- Cách tạo vòng khoá Cloud KMS
- Cách tạo Khoá mã hoá Cloud KMS để mã hoá/giải mã đối xứng
- Cách xoay Khoá mã hoá Cloud KMS đối xứng
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tiến độ riêng
- Đăng nhập vào Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. (Nếu chưa có tài khoản Gmail hoặc G Suite, bạn phải tạo một tài khoản.)
Xin lưu ý rằng mã dự án là một tên riêng biệt trong tất cả dự án Google Cloud (tên ở trên đã được sử dụng nên sẽ không phù hợp với bạn!). Lớp này sẽ được đề cập sau trong lớp học lập trình này là PROJECT_ID
.
- Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.
Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" sẽ tư vấn cho bạn cách tắt tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Khởi động Cloud Shell
Trong lớp học lập trình này, bạn sẽ sử dụng Cloud Shell, một môi trường ảo hoá miễn phí chạy trên Google Cloud. Trong Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell ở thanh công cụ trên cùng bên phải:
Sẽ chỉ mất một chút thời gian để cấp phép và kết nối với môi trường. Sau khi hoàn tất, bạn sẽ thấy như sau:
Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Dịch vụ này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Nếu không có hướng dẫn khác, hãy chạy tất cả các lệnh từ shell này.
3. Bật dịch vụ Cloud KMS
Để có thể sử dụng Cloud KMS, trước tiên, bạn phải bật dịch vụ này trong dự án của mình. Bạn chỉ cần thực hiện việc này một lần cho mỗi dự án. Để bật dịch vụ Cloud KMS, hãy chạy lệnh sau:
$ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}"
Quá trình bật có thể mất đến 1 phút. Lệnh này sẽ báo cáo thành công khi hoàn tất.
4. Tạo khoá KMS
Tạo vòng khoá Cloud KMS. Trong Cloud KMS, Vòng khoá là một tập hợp logic gồm các khoá mã hoá. Vòng khoá chứa siêu dữ liệu về các khoá, chẳng hạn như vị trí của các khoá đó. Tạo Vòng khoá có tên my-keyring
trong vùng global
:
$ gcloud kms keyrings create "my-keyring" \ --location "global"
Bây giờ, hãy tạo một Khoá mã hoá có tên my-symmetric-key
với mục đích là encryption
bên trong Vòng khoá bạn vừa tạo.
$ gcloud kms keys create "my-symmetric-key" \ --location "global" \ --keyring "my-keyring" \ --purpose "encryption"
5. Mã hoá dữ liệu
Tạo một tệp có dữ liệu để mã hoá và sử dụng công cụ dòng lệnh gcloud
để mã hoá dữ liệu trong tệp:
$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --plaintext-file ./data.txt \ --ciphertext-file ./data.txt.enc
Dữ liệu đã mã hoá (còn gọi là "bản mật mã") được lưu trong data.txt.enc
trên ổ đĩa. Nếu mở tệp data.txt.enc
, bạn sẽ thấy tệp này có những ký tự lạ và không in được. Lý do là dữ liệu thu được ở định dạng nhị phân.
Khi lưu trữ thuật toán mật mã trong cơ sở dữ liệu hoặc truyền thuật toán đó dưới dạng một phần của yêu cầu HTTP, bạn có thể cần phải mã hoá dữ liệu đó. Một cơ chế mã hoá phổ biến là base64.
Cloud KMS không lưu trữ bất kỳ văn bản thuần tuý nào mà bạn cung cấp. Bạn cần lưu mật mã này vào một vị trí an toàn vì hệ thống sẽ yêu cầu bạn truy xuất giá trị văn bản thuần tuý.
6. Giải mã dữ liệu
Giải mã thuật toán mật mã từ tệp bằng công cụ dòng lệnh gcloud
:
$ gcloud kms decrypt \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --plaintext-file - \ --ciphertext-file ./data.txt.enc
Công cụ dòng lệnh gcloud
đọc văn bản mật mã của tệp và giải mã tệp đó bằng Cloud KMS. Lưu ý rằng ví dụ này chỉ định đối số --plaintext-file
là -
. Thao tác này sẽ hướng dẫn gcloud
in kết quả đến thiết bị đầu cuối.
Bảng điều khiển sẽ in my-contents
, chính là giá trị văn bản thuần tuý trong tệp ở trên.
7. Xoay phím
Trong Cloud KMS, Khoá mã hoá thực ra là một tập hợp các Phiên bản khoá mã hoá. Bạn có thể tạo Phiên bản khoá mã hoá mới để thực hiện việc xoay vòng khoá. Cloud KMS cũng có thể tự động xoay vòng khoá theo lịch.
Để xoay vòng một khoá theo cách thủ công, hãy tạo một Phiên bản khoá mã hoá mới rồi đặt khoá đó làm phiên bản chính:
$ gcloud kms keys versions create \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key" \ --primary
Mọi yêu cầu mã hoá dữ liệu trong tương lai sẽ dùng khoá mới này. Bạn vẫn có thể sử dụng các khoá cũ để giải mã dữ liệu từng được mã hoá bằng các khoá đó. Cloud KMS tự động xác định khoá giải mã phù hợp dựa trên mật mã được cung cấp – bạn không cần phải chỉ định Phiên bản khoá mã hoá dùng để giải mã.
Để ngăn việc giải mã các giá trị văn bản mật mã đã được mã hoá bằng Phiên bản khoá mã hoá cũ hơn bằng Cloud KMS, bạn có thể tắt hoặc huỷ Phiên bản khoá mã hoá đó. Vô hiệu hoá là thao tác có thể đảo ngược trong khi huỷ là thao tác vĩnh viễn. Để tắt một phiên bản, hãy làm như sau:
$ gcloud kms keys versions disable "1" \ --location "global" \ --keyring "my-keyring" \ --key "my-symmetric-key"
8. Xin chúc mừng!
Bạn đã bật Cloud KMS API, tạo một khoá mã hoá đối xứng cũng như mã hoá và giải mã dữ liệu! Cloud KMS là một sản phẩm mạnh mẽ và giải pháp mã hoá/giải mã chỉ mới đề cao những khả năng của sản phẩm này.
Dọn dẹp
Nếu bạn đã khám phá xong, vui lòng xem xét xoá dự án của bạn.
- Truy cập vào Bảng điều khiển Cloud Platform
- Chọn dự án bạn muốn tắt, sau đó nhấp vào "Xoá" ở trên cùng. Thao tác này sẽ lên lịch xoá dự án.
Tìm hiểu thêm
Giấy phép
Tác phẩm này được cấp phép theo Giấy phép chung Ghi nhận tác giả Creative Commons 2.0.