1. Giới thiệu
Autokey của Cloud KMS giúp đơn giản hoá việc tạo và sử dụng khoá mã hoá do khách hàng quản lý (CMEK) bằng cách tự động hoá quy trình cấp phép và chỉ định. Với Autokey, bạn không cần lập kế hoạch và cung cấp các vòng khoá, khoá và tài khoản dịch vụ trước khi cần. Thay vào đó, Autokey sẽ tạo khoá theo yêu cầu khi tài nguyên của bạn được tạo, dựa vào các quyền được uỷ quyền thay vì quản trị viên Cloud KMS.
Việc sử dụng các khoá do Autokey tạo có thể giúp bạn luôn tuân thủ các tiêu chuẩn ngành và các phương pháp được đề xuất về bảo mật dữ liệu, bao gồm cả cấp độ bảo vệ HSM, phân tách nhiệm vụ, xoay vòng khoá, vị trí và tính cụ thể của khoá. Autokey tạo các khoá tuân theo cả nguyên tắc chung và nguyên tắc dành riêng cho loại tài nguyên đối với các dịch vụ của Google Cloud tích hợp với Autokey của Cloud KMS. Sau khi được tạo, các khoá được yêu cầu bằng hàm Autokey sẽ hoạt động giống hệt như các khoá Cloud HSM khác có cùng chế độ cài đặt.
Sản phẩm bạn sẽ tạo ra
Trong lớp học lập trình này, bạn sẽ khởi chạy các tài nguyên được bảo vệ bằng Cloud KMS Autokey bằng cách tạo:
- tài nguyên thư mục
- một dự án sẽ chứa các khoá của bạn
- một tác nhân dịch vụ đóng vai trò là trợ lý quản lý khoá của bạn
- một dự án sẽ lưu trữ các tài nguyên được bảo vệ của bạn
- Tập dữ liệu BigQuery, đĩa liên tục và các vùng lưu trữ Cloud Storage được mã hoá bằng Cloud KMS Autokey
Bạn cần có
- Tổ chức trên Google Cloud
- Chủ thể Google Cloud của bạn phải có các vai trò sau ở cấp Tổ chức để hoàn thành bài tập thực hành này:
- Quản trị viên khoá tự động Cloud KMS (roles/cloudkms.autokeyAdmin)
- Quản trị viên IAM của thư mục (roles/resourcemanager.folderIamAdmin)
- Người dùng Tài khoản thanh toán (roles/billing.user)
- Dự án trên Google Cloud đã bật tính năng thanh toán
- Trải nghiệm Linux cơ bản
2. Tạo thư mục
Thư mục là các nút trong Hệ thống phân cấp tài nguyên trên Cloud Platform. Một thư mục có thể chứa các dự án, thư mục khác hoặc kết hợp cả hai. Tài nguyên tổ chức có thể sử dụng thư mục để nhóm các dự án trong nút tài nguyên tổ chức theo hệ thống phân cấp. Để tạo thư mục:
- Chuyển đến trang Quản lý tài nguyên trong bảng điều khiển Google Cloud
- Đảm bảo rằng bạn đã chọn tên tài nguyên tổ chức trong danh sách thả xuống tổ chức ở đầu trang.
- Nhấp vào Tạo thư mục

- Chọn thư mục tiêu chuẩn

- Trong hộp Tên thư mục, hãy nhập tên của thư mục mới. Đối với lớp học lập trình này, hãy cân nhắc sử dụng "Autokey-Folder"
- Trong phần Đích đến, hãy nhấp vào Duyệt qua, rồi chọn tài nguyên hoặc thư mục của tổ chức mà bạn muốn tạo thư mục mới.
- Nhấp vào Tạo.
3. Tạo một Dự án tài nguyên
Điều quan trọng là bạn phải tạo một dự án tài nguyên để chứa các tài nguyên (chẳng hạn như tập dữ liệu BigQuery, đĩa liên tục và Nhóm Cloud Storage) mà bạn muốn mã hoá bằng Khoá tự động Cloud KMS. Nếu bạn cố gắng tạo các tài nguyên được Autokey bảo vệ trong dự án khoá, thì Autokey sẽ từ chối yêu cầu tạo khoá mới. Cách tạo dự án tài nguyên:
- Chuyển đến trang Quản lý tài nguyên trong bảng điều khiển Google Cloud
- Nhấp vào Tạo dự án.

- Trong danh sách thả xuống Chọn tổ chức ở đầu trang, hãy chọn thư mục "Autokey-Folder".
- Trong cửa sổ Dự án mới xuất hiện, hãy nhập tên dự án và chọn tài khoản thanh toán (nếu có). Đối với phòng thí nghiệm này, hãy cân nhắc "Tài nguyên được mã hoá bằng khoá tự động"
- Trong hộp Vị trí, hãy chọn thư mục "Autokey-Folder". Tài nguyên đó sẽ là tài nguyên gốc theo hệ thống phân cấp của dự án mới. Chế độ cài đặt của bạn sẽ có dạng như sau:

- Sao chép Mã dự án (trong ví dụ trên, Mã dự án là "causal-hour-43319-m4" nhưng mã dự án của bạn sẽ khác) vào trình chỉnh sửa văn bản mà bạn chọn.
- Nhấp vào Tạo
- Chọn biểu tượng Cloud Shell ở góc trên cùng bên phải màn hình

- Sau khi Cloud Shell hoạt động, hãy lưu mã dự án Autokey dưới dạng một biến bằng cách chạy lệnh sau:
export RESOURCE_PROJECT=<paste your Resource Project ID>
Vì mã dự án của tôi là "key-management-433319" nên lệnh của tôi sẽ có dạng như sau:
export AUTOKEY_PROJECT=causal-hour-43319-m4
- Chạy lệnh sau để thực thi các lệnh từ Dự án khoá của bạn:
gcloud config set project $RESOURCE_PROJECT
Khi được nhắc, hãy uỷ quyền cho Cloud Shell bằng cách nhấp vào "Uỷ quyền"

- Vì dự án này sẽ chứa các tài nguyên, nên chúng ta cần bật API cho các dịch vụ mà Autokey sẽ bảo vệ. Chạy lệnh sau:
gcloud services enable storage.googleapis.com bigquery.googleapis.com compute.googleapis.com
4. Tạo một Dự án chính
Bạn nên tạo một dự án để chứa các tài nguyên Cloud KMS do Autokey tạo. Sau này, dự án này sẽ được gọi là "dự án chính". Bạn có thể tạo dự án khoá trong cùng một thư mục mà bạn dự định bật Autokey. Bạn không nên tạo các tài nguyên khác trong dự án khoá. Nếu bạn cố gắng tạo các tài nguyên được Autokey bảo vệ trong dự án khoá, thì Autokey sẽ từ chối yêu cầu tạo khoá mới. Cách tạo dự án khoá:
- Chuyển đến trang Quản lý tài nguyên trong bảng điều khiển Google Cloud
- Nhấp vào Tạo dự án.

- Trong danh sách thả xuống Chọn tổ chức ở đầu trang, hãy chọn thư mục "Autokey-Folder".
- Trong cửa sổ Dự án mới xuất hiện, hãy nhập tên dự án và chọn tài khoản thanh toán (nếu có). Đối với lớp học lập trình này, hãy xem xét "Quản lý khoá"
- Trong hộp Vị trí, hãy chọn thư mục "Autokey-Folder". Tài nguyên đó sẽ là tài nguyên gốc theo hệ thống phân cấp của dự án mới. Chế độ cài đặt của bạn sẽ có dạng như sau:

- Sao chép mã dự án (trong ví dụ trên, mã dự án là "key-management-433319" nhưng mã dự án của bạn sẽ khác) vào trình chỉnh sửa văn bản mà bạn chọn.
- Nhấp vào Tạo.
5. Chuẩn bị dự án khoá Autokey
Giờ đây, sau khi mỗi dự án được tạo, bạn cần định cấu hình dự án khoá để sử dụng Autokey của Cloud KMS.
- Chọn biểu tượng Cloud Shell ở góc trên cùng bên phải màn hình

- Sau khi Cloud Shell hoạt động, hãy lưu mã dự án Autokey dưới dạng một biến bằng cách chạy lệnh sau:
export AUTOKEY_PROJECT=<paste your Autokey Project ID>
Vì mã dự án của tôi là "key-management-433319" nên lệnh của tôi sẽ có dạng như sau:
export AUTOKEY_PROJECT=key-management-433319
- Chạy lệnh sau để thực thi các lệnh từ Dự án khoá của bạn:
gcloud config set project $AUTOKEY_PROJECT
Khi được nhắc, hãy uỷ quyền cho Cloud Shell bằng cách nhấp vào "Uỷ quyền"

- Bật Cloud KMS API bằng cách chạy lệnh sau
gcloud services enable cloudkms.googleapis.com kmsinventory.googleapis.com
- Chạy lệnh sau để lưu Số dự án dưới dạng một biến có tên AUTOKEY_PROJECT_NUMBER
export AUTOKEY_PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)")
- Lưu email của Chủ thể chính dưới dạng một biến bằng cách chạy lệnh sau:
export KEY_ADMIN_EMAIL=<paste your Principal's email>
- Cấp quyền quản trị viên Cloud KMS cho người dùng quản trị viên Cloud KMS trên dự án khoá
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=user:$KEY_ADMIN_EMAIL
6. Thiết lập các tác nhân dịch vụ Cloud KMS
Thay mặt cho quản trị viên Cloud KMS là con người, tác nhân dịch vụ Cloud KMS cho một dự án khoá sẽ tạo khoá và áp dụng các liên kết chính sách IAM trong quá trình tạo tài nguyên. Để có thể tạo và chỉ định khoá, tác nhân dịch vụ Cloud KMS cần có quyền quản trị viên Cloud KMS.
- Tìm mã tổ chức bằng lệnh sau:
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
- Sao chép mã nhận dạng tổ chức – đây là kết quả bằng số được đánh dấu bằng màu đỏ
- Lưu mã nhận dạng tổ chức dưới dạng một biến có tên là ORG_ID:
export ORG_ID=<paste your Organization ID>
- Tạo tác nhân dịch vụ Cloud KMS bằng cách chạy lệnh sau:
gcloud beta services identity create --service=cloudkms.googleapis.com \
--project=$AUTOKEY_PROJECT_NUMBER
- Cấp vai trò quản trị viên Cloud KMS cho tác nhân dịch vụ:
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=serviceAccount:service-$AUTOKEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
- Thêm một chế độ liên kết chính sách IAM để bạn có thể xem mức sử dụng Khoá Cloud KMS. Tính năng Sử dụng khoá cung cấp thông tin cho từng khoá, bao gồm số lượng tài nguyên, dự án được bảo vệ và các sản phẩm riêng biệt của Google Cloud sử dụng khoá đó. Mọi người có vai trò Người xem Cloud KMS đối với khoá đều có thể xem được mức độ chi tiết này. Chạy lệnh sau:
gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
--member="serviceAccount:service-org-$ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- Cấp cho tài khoản dịch vụ Cloud KMS của bạn vai trò Cloud KMS Organization Service Agent (cloudkms.orgServiceAgent) trên tài nguyên tổ chức.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="serviceAccount:service-org-$ORG_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- Cấp vai trò Người xem tài nguyên được bảo vệ của Cloud KMS cho Tài nguyên tổ chức của bạn cho bất kỳ ai cần xem thông tin chi tiết về việc sử dụng khoá.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="user:$KEY_ADMIN_EMAIL" \
--role='roles/cloudkms.protectedResourcesViewer'
7. Cấp vai trò người dùng Autokey
Trước khi nhà phát triển có thể sử dụng Autokey, bạn phải cấp cho họ vai trò cần thiết. Bạn có thể cấp vai trò ở cấp thư mục hoặc cấp dự án. Vai trò này cho phép nhà phát triển yêu cầu khoá từ tác nhân dịch vụ Cloud KMS trong khi tạo tài nguyên trong thư mục hoặc dự án đó.
Bước đầu tiên để cấp vai trò là lưu Mã thư mục.
- Tìm mã thư mục bằng lệnh sau:
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
- Sao chép mã nhận dạng thư mục – đây là phần được đánh dấu bằng màu đỏ
- Lưu Mã thư mục dưới dạng một biến có tên là FOLDER_ID
export FOLDER_ID=<paste the folder ID>
Trong phòng thí nghiệm này, chúng ta sẽ xác định quản trị viên khoá là người dùng Autokey. Tuy nhiên, trong các trường hợp sử dụng thực tế và trong các tổ chức có nhiều cá nhân, quản trị viên khoá phải khác với nhà phát triển sử dụng Autokey.
- Cấp vai trò roles/cloudkms.autokeyUser ở cấp thư mục:
gcloud resource-manager folders add-iam-policy-binding \
$FOLDER_ID --role=roles/cloudkms.autokeyUser \
--member=user:$KEY_ADMIN_EMAIL
8. Bật Autokey của Cloud KMS trên một thư mục tài nguyên
Trong bước này, bạn sẽ bật Autokey Cloud KMS trên một thư mục tài nguyên và xác định dự án Cloud KMS sẽ chứa các tài nguyên Autokey cho thư mục đó. Việc bật Autokey trên thư mục này sẽ bật Autokey cho tất cả các dự án tài nguyên trong thư mục.
- Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Kiểm soát KMS.
- Nhấp vào Chọn thư mục

- Trong bộ chọn bối cảnh, hãy chọn thư mục mà bạn muốn bật Autokey. Đây sẽ là thư mục bạn đã tạo trước đó và chứa dự án tài nguyên cũng như dự án quản lý khoá. Phần khai báo sẽ có dạng như sau:

- Nhấp vào Bật.
- Nhấp vào Duyệt tìm để chọn dự án khoá
- Chọn dự án quản lý khoá của bạn rồi nhấp vào Gửi.

Một thông báo sẽ xuất hiện, xác nhận rằng bạn đã bật Autokey của Cloud KMS trên thư mục. Trang KMS Controls (Kiểm soát KMS) sẽ có dạng như sau:

9. Tạo tài nguyên được bảo vệ bằng Cloud KMS Autokey
Ổ đĩa lưu trữ dài lâu của Compute Engine
Autokey tạo một khoá mới cho mỗi đĩa, hình ảnh và hình ảnh máy ở cùng vị trí với tài nguyên đang được tạo.
Để tạo một ổ đĩa, hãy hoàn tất các bước sau:
- Trong bảng điều khiển Cloud, hãy chuyển đến trang Đĩa.
- Nhấp vào Create disk (Tạo đĩa) rồi nhập các thuộc tính cho đĩa mới.
- Trong phần Mã hoá, hãy chọn khoá Cloud KMS.

- Đối với Loại khoá, hãy chọn Cloud KMS có Autokey, rồi nhấp vào Yêu cầu khoá mới. Một thông báo cho biết thời điểm chìa khoá của bạn được tạo thành công và sẵn sàng sử dụng.

- Để hoàn tất việc tạo đĩa, hãy nhấp vào Tạo.
Bạn có thể làm theo một quy trình tương tự để tạo các tài nguyên phiên bản VM, hình ảnh và hình ảnh máy được bảo vệ.
Bộ chứa Google Cloud Storage
Autokey tạo một khoá mới ở cùng vị trí với nhóm. Khoá do Autokey tạo được chỉ định làm khoá mặc định của nhóm.
Autokey không tạo khoá cho các đối tượng. Theo mặc định, các đối tượng được tạo trong một vùng chứa sẽ sử dụng khoá mặc định của vùng chứa đó. Nếu muốn mã hoá một đối tượng bằng khoá khác với khoá mặc định của nhóm lưu trữ, bạn có thể tạo CMEK theo cách thủ công và sử dụng khoá đó khi tạo đối tượng.
- Trong bảng điều khiển Cloud, hãy chuyển đến trang Tạo vùng lưu trữ.
- Chọn một tên cố định và riêng biệt trên toàn cầu.
- Chọn vị trí dữ liệu.
- Chuyển đến phần "Chọn cách bảo vệ dữ liệu đối tượng"

- Nhấp vào "Chọn cách bảo vệ dữ liệu đối tượng" để mở rộng phần này

- Mở rộng phần Mã hoá dữ liệu rồi chọn khoá Cloud KMS.

- Đối với Loại khoá, hãy chọn Cloud KMS có Autokey, rồi nhấp vào Yêu cầu khoá mới. Một thông báo cho biết thời điểm chìa khoá của bạn được tạo thành công và sẵn sàng sử dụng.

- Để hoàn tất việc tạo nhóm, hãy nhấp vào Tạo. Nếu bạn thấy một hộp thoại giải thích rằng "Quyền truy cập công khai sẽ bị ngăn chặn", hãy nhấp vào Xác nhận.
Tập dữ liệu BigQuery
Đối với mỗi tập dữ liệu mới, Autokey sẽ tạo một khoá mới ở cùng vị trí với chính tài nguyên đó. Khoá này sẽ trở thành khoá mặc định của tập dữ liệu. Autokey không tạo khoá cho bảng, truy vấn, bảng tạm thời hoặc mô hình. Theo mặc định, các tài nguyên này được bảo vệ bằng khoá mặc định của tập dữ liệu. Nếu muốn bảo vệ một tài nguyên trong một tập dữ liệu bằng một khoá khác ngoài khoá mặc định của tập dữ liệu, bạn có thể tạo CMEK theo cách thủ công và sử dụng khoá đó khi tạo tài nguyên.
Để tạo tập dữ liệu BigQuery, trước tiên, bạn phải có vai trò Người dùng BigQuery.
- Quay lại Cloud Shell
- Thiết lập Cloud Shell để thực thi các lệnh từ dự án tài nguyên
gcloud config set project $RESOURCE_PROJECT
- Chạy lệnh sau để lưu Số dự án dưới dạng một biến có tên RESOURCE_PROJECT_NUMBER
export RESOURCE_PROJECT_NUMBER=$(gcloud projects list --filter="$(gcloud config get-value project)" --format="value(PROJECT_NUMBER)")
- Cấp cho chính bạn vai trò Người dùng BigQuery
gcloud projects add-iam-policy-binding $RESOURCE_PROJECT_NUMBER \
--role=roles/bigquery.user \
--member=user:$KEY_ADMIN_EMAIL
Giờ đây, khi có vai trò Người dùng BigQuery, bạn có thể tạo một tập dữ liệu và bảo vệ tập dữ liệu đó bằng Autokey!
- Trong bảng điều khiển Cloud, hãy chuyển đến trang BigQuery.
- Làm theo hướng dẫn để Tạo một tập dữ liệu cho đến khi bạn chuyển đến phần Tuỳ chọn nâng cao > Mã hoá.
- Trong phần Mã hoá, hãy chọn khoá Cloud KMS.
- Đối với Loại khoá, hãy chọn Cloud KMS có Autokey, rồi nhấp vào Yêu cầu khoá mới. Một thông báo cho biết thời điểm chìa khoá của bạn được tạo thành công và sẵn sàng sử dụng.
- Để hoàn tất việc tạo tập dữ liệu, hãy nhấp vào Tạo tập dữ liệu.
10. Khám phá Keys
Trong bước này, bạn sẽ khám phá các khoá mà Cloud KMS Autokey đã tạo thay cho bạn bằng cách truy cập vào trang Khoá dự phòng. Trang Khoá cung cấp thông tin toàn diện về các khoá mã hoá trong dự án của bạn. Xin lưu ý rằng dữ liệu có thể bị trễ. Ví dụ: nếu bạn tạo một tài nguyên được bảo vệ mới, thì tài nguyên được bảo vệ và phiên bản khoá liên kết sẽ không được thêm ngay vào thẻ Theo dõi mức sử dụng. Xem thêm các giới hạn tại đây.
- Trong bảng điều khiển Google Cloud, hãy chuyển đến trang Khoá.
- Không bắt buộc: Để lọc danh sách khoá, hãy nhập cụm từ tìm kiếm vào hộp Bộ lọc filter_list rồi nhấn phím Enter. Ví dụ: bạn có thể lọc theo vị trí, chuỗi khoá, trạng thái hoặc các thuộc tính khác của khoá.
- Nhấp vào tên của khoá mà bạn muốn xem thông tin sử dụng.
- Nhấp vào "Tổng quan". Xin lưu ý rằng bạn có một khoá cho mỗi tài nguyên đã tạo. Mỗi tên khoá đều có tên của tài nguyên mà khoá đang bảo vệ (ví dụ: "compute-disk" hoặc "storage-bucket"). Cloud KMS Autokey đảm bảo rằng mỗi khoá được lên lịch xoay vòng 365 ngày sau khi được tạo và mỗi khoá được chỉ định cấp bảo vệ "HSM".

- Nhấp vào thẻ Theo dõi mức sử dụng. Lưu ý đến cấp độ thông tin được trình bày: mỗi tài nguyên mà khoá đang mã hoá đều xuất hiện ở đây, cùng với dự án, vị trí và ngày tạo.
- Không bắt buộc: Để lọc danh sách tài nguyên được bảo vệ, hãy nhập cụm từ tìm kiếm vào hộp Bộ lọc filter_list rồi nhấn Enter.

11. Xin chúc mừng
Xin chúc mừng, bạn đã tạo thành công các tài nguyên trên Google Cloud và tự động mã hoá chúng theo yêu cầu bằng Autokey của Cloud KMS!
Giờ đây, bạn đã biết các bước chính cần thiết để thiết lập Autokey và sử dụng Autokey để tự động mã hoá tài nguyên bằng khoá Cloud KMS.
12. Tiếp theo là gì?
Tải dữ liệu lên các tài nguyên được mã hoá bằng Autokey
- Tạo một phiên bản Google Compute Engine (GCE)
- Đính kèm ổ đĩa lưu trữ dài lâu được bảo vệ bằng Autokey vào phiên bản GCE
- Tải dữ liệu lên tập dữ liệu BigQuery
- Tải các đối tượng lên một bộ chứa Google Cloud Storage
- Tải dữ liệu từ Google Cloud Storage vào BigQuery