Mã hoá và giải mã dữ liệu bằng Cloud KMS

1. Tổng quan

Cloud KMS là một dịch vụ quản lý khoá được lưu trữ trên đám mây, cho phép bạn quản lý các khoá mã hoá cho dịch vụ đám mây theo cách tương tự như khi bạn quản lý tại cơ sở hạ tầng riêng. Thư viện này hỗ trợ 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 các khoá dựa trên phần cứng. Hướng dẫn này hướng dẫn bạn cách mã hoá và giải mã dữ liệu bằng khoá đối xứng Cloud KMS.

Bạn sẽ học được

  • Cách bật Cloud KMS API
  • Cách tạo Bộ 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á đối xứng Cloud KMS

2. Thiết lập và yêu cầu

Thiết lập môi trường theo tốc độ của riêng bạn

  1. Đăng nhập vào Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một 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.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Hãy nhớ mã dự án, một tên duy nhất trên tất cả các dự án trên Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, xin lỗi!). Sau này trong lớp học lập trình này, chúng ta sẽ gọi nó là PROJECT_ID.

  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên của Google Cloud.

Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" để biết cách tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi 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í trị giá 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. Trên Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải:

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQ

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9x2D6ppXS0pfjfxViuEfoetgLvgVeduekc2hgU2Q

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và xác thực. Trừ phi 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

Trước khi 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 một bộ khoá Cloud KMS. Trong Cloud KMS, Bộ khoá là một tập hợp logic gồm các khoá mã hoá. Key Ring chứa siêu dữ liệu về các khoá, chẳng hạn như vị trí của khoá. Tạo một Bộ khoá có tên là my-keyring trong khu vực global:

$ gcloud kms keyrings create "my-keyring" \
    --location "global"

Bây giờ, hãy tạo một Khoá mã hoá có tên là my-symmetric-key với mục đích là encryption trong Bộ khoá mà 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 cần 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 được mã hoá (còn gọi là "văn bản mã hoá") đượ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ó các ký tự lạ, không in được. Đó là do dữ liệu kết quả ở định dạng nhị phân.

Khi lưu trữ văn bản mã hoá trong cơ sở dữ liệu hoặc truyền văn bản đó trong yêu cầu HTTP, bạn có thể cần 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 trữ văn bản mã hoá này ở một nơi an toàn vì bạn sẽ cần đến văn bản này để truy xuất giá trị văn bản thuần tuý.

6. Giải mã dữ liệu

Giải mã văn bản mã hoá trong 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 sẽ đọc văn bản mã hoá từ tệp và giải mã văn bản đó bằng Cloud KMS. Lưu ý rằng ví dụ này chỉ định đối số --plaintext-file-. Thao tác này hướng dẫn gcloud in kết quả ra thiết bị đầu cuối.

Bảng điều khiển sẽ in my-contents, đây là giá trị văn bản thuần tuý giống như trong tệp ở trên.

7. Xoay vòng khoá

Trong Cloud KMS, Khoá mã hoá thực sự là một tập hợp các Phiên bản khoá mã hoá. Bạn có thể tạo Crypto Key Version (Phiên bản khoá mã hoá) mới để thực hiện xoay vòng khoá. Cloud KMS cũng có thể tự động xoay khoá theo lịch.

Để xoay khoá theo cách thủ công, hãy tạo một Crypto Key Version mới và đặ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

Tất cả các yêu cầu trong tương lai để mã hoá dữ liệu sẽ sử dụng khoá mới này. Các khoá cũ vẫn có thể giải mã dữ liệu đã được mã hoá trước đó bằng những khoá đó. Cloud KMS tự động xác định khoá giải mã thích hợp dựa trên văn bản mã hoá được cung cấp – bạn không phải chỉ định Phiên bản khoá mã hoá nào để sử dụng cho việc giải mã.

Để ngăn các giá trị văn bản mã hoá được mã hoá bằng một Phiên bản khoá mã hoá cũ bị giải mã bằng Cloud KMS, bạn có thể tắt hoặc huỷ Phiên bản khoá mã hoá đó. Tắt là một thao tác có thể đảo ngược, trong khi huỷ là thao tác vĩnh viễn. Cách tắt một phiên bản:

$ 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 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à việc mã hoá/giải mã chỉ là một phần nhỏ trong số các chức 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 cân nhắc việc 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 Ghi công theo Creative Commons 2.0 Chung.