Mã hoá dữ liệu bằng khoá mã hoá do khách hàng quản lý

Tài liệu này cho biết cách sử dụng khoá mã hoá do khách hàng quản lý (CMEK) để mã hoá và kiểm soát dữ liệu tĩnh trong một dịch vụ đám mây thông qua Dịch vụ quản lý khoá đám mây. CMEK được tích hợp với tính năng tuỳ chỉnh mã cho Gemini Code Assist.

Gemini Code Assist không hỗ trợ việc sử dụng khoá Cloud EKM.

Nếu bạn không sử dụng CMEK, theo mặc định, Google sẽ tự động quản lý các khoá dùng để mã hoá dữ liệu. Hành vi này được gọi là mã hoá mặc định của Google. Với hành vi mặc định này, bạn không có quyền kiểm soát các khoá mã hoá.

Trong tài liệu này, bạn sẽ làm như sau:

  • Tìm hiểu cách tạo CMEK.
  • Cấp quyền cho tài khoản dịch vụ Gemini Code Assist.
  • Tạo chỉ mục kho lưu trữ mã bằng CMEK.
  • Xoá quyền truy cập vào kho lưu trữ CMEK.

Theo mặc định, Gemini cho Google Cloud mã hoá nội dung của khách hàng khi lưu trữ. Gemini sẽ xử lý việc mã hoá cho bạn mà bạn không cần làm gì thêm. Tuỳ chọn này được gọi là Mã hoá mặc định của Google.

Nếu muốn kiểm soát khoá mã hoá, bạn có thể sử dụng khoá mã hoá do khách hàng quản lý (CMEK) trong Cloud KMS với các dịch vụ tích hợp CMEK, bao gồm cả Gemini. Khi sử dụng khoá Cloud KMS, bạn có thể kiểm soát cấp độ bảo vệ, vị trí, lịch trình xoay vòng, quyền sử dụng và quyền truy cập cũng như ranh giới mật mã của khoá. Khi sử dụng Cloud KMS, bạn cũng có thể xem nhật ký kiểm tra và kiểm soát vòng đời của khoá. Thay vì Google sở hữu và quản lý khoá mã hoá khoá (KEK) đối xứng bảo vệ dữ liệu của bạn, bạn sẽ kiểm soát và quản lý các khoá này trong Cloud KMS.

Sau khi bạn thiết lập tài nguyên bằng CMEK, trải nghiệm truy cập vào tài nguyên Gemini sẽ tương tự như khi sử dụng phương thức mã hoá mặc định của Google. Để biết thêm thông tin về các tuỳ chọn mã hoá, hãy xem bài viết Khoá mã hoá do khách hàng quản lý (CMEK).

Trước khi bạn bắt đầu

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. Trong môi trường shell, hãy chạy lệnh gcloud components update để đảm bảo rằng bạn đã cập nhật tất cả các thành phần đã cài đặt của gcloud CLI lên phiên bản mới nhất. Đối với bước này, bạn có thể cài đặt và khởi chạy CLI gcloud hoặc sử dụng Cloud Shell.

    gcloud components update
    

Tạo CMEK và cấp quyền

Để tạo CMEK và cấp quyền cho tài khoản dịch vụ Gemini Code Assist trên khoá, hãy thực hiện các thao tác sau:

  1. Trong dự án Google Cloud mà bạn muốn quản lý khoá, hãy làm như sau:

    1. Bật API Dịch vụ quản lý khoá trên đám mây.

    2. Tạo một bộ khoá và một khoá bằng một trong các cách sau:

  2. Cấp vai trò IAM Trình mã hoá/Trình giải mã CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) cho tài khoản dịch vụ Gemini Code Assist. Cấp quyền này trên khoá mà bạn đã tạo.

    Bảng điều khiển

    1. Chuyển đến phần Quản lý khoá.

      Chuyển đến phần Quản lý khoá

    2. Chọn khoá mà bạn đã tạo.

    3. Cấp quyền truy cập vào tài khoản dịch vụ Gemini Code Assist:

      1. Nhấp vào Thêm người đại diện.
      2. Thêm tài khoản dịch vụ Gemini Code Assist. Tài khoản dịch vụ là service-PROJECT_NUMBER@gcp-sa-cloudaicompanions.iam.gserviceaccount.com, trong đó PROJECT_NUMBERsố dự án của dự án Google Cloud đã bật tính năng Trợ giúp mã Gemini.
      3. Trong phần Chọn vai trò, hãy chọn Cloud KMS > Trình mã hoá/Trình giải mã CryptoKey của Cloud KMS.
      4. Nhấp vào Lưu.
    4. Lặp lại bước trước đó để cấp quyền truy cập vào tài khoản sẽ tạo chỉ mục kho lưu trữ mã bằng CMEK.

    5. Quay lại trang Quản lý khoá rồi chọn khoá đó lần nữa.

    6. Chọn Hiện bảng thông tin. Bạn sẽ thấy các vai trò trong cột Vai trò/Thành viên.

    gcloud

    1. Để cấp quyền truy cập vào tài khoản dịch vụ Gemini Code Assist, trong môi trường shell, hãy sử dụng lệnh kms keys add-iam-policy-binding:

      gcloud kms keys add-iam-policy-binding KEY_NAME \
          --project=PROJECT_ID \
          --location=LOCATION \
          --keyring=KEYRING_NAME \
          --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudaicompanion.iam.gserviceaccount.com" \
          --role="roles/cloudkms.cryptoKeyEncrypterDecrypter"
      

      Thay thế nội dung sau:

      • KEY_NAME: tên khoá.
      • PROJECT_ID: mã nhận dạng của dự án chứa khoá.
      • LOCATION: vị trí khoá.
      • KEYRING_NAME: tên của bộ khoá.
      • PROJECT_NUMBER: số dự án của dự án Google Cloud đã bật tính năng Trợ giúp mã Gemini.
    2. Lặp lại bước trước đó để cấp quyền truy cập vào tài khoản sẽ tạo chỉ mục kho lưu trữ mã bằng CMEK.

    Để biết thêm thông tin về lệnh này, hãy xem tài liệu về gcloud kms keys add-iam-policy-binding.

Giờ đây, bạn có thể tạo chỉ mục kho lưu trữ mã bằng CMEK bằng API và chỉ định khoá để dùng cho việc mã hoá.

Tạo chỉ mục kho lưu trữ mã bằng CMEK

Để tạo một kho lưu trữ mới có tính năng bảo vệ CMEK, hãy làm theo một trong những cách sau:

gcloud

Sử dụng lệnh gemini code-repository-indexes create:

gcloud gemini code-repository-indexes create CODE_REPOSITORY_INDEX_NAME \
    --location=LOCATION \
    --kms-key="projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"

Thay thế nội dung sau:

  • CODE_REPOSITORY_INDEX_NAME: tên của chỉ mục kho lưu trữ mã mới mà bạn sẽ tạo.
  • LOCATION: vị trí khoá.
  • KEY_PROJECT_ID: mã nhận dạng dự án chính.
  • KEYRING_NAME: tên của bộ khoá.
  • KEY_NAME: tên khoá.

Giao diện lập trình ứng dụng (API)

  1. Tạo một tệp JSON chứa những thông tin sau:

      {
        "kmsKey": "projects/KEY_PROJECT_ID/locations/KEY_LOCATION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME"
      }
    

    Thay thế nội dung sau:

    • KEY_PROJECT_ID: mã dự án chính
    • KEY_LOCATION: vị trí khoá
    • KEYRING_NAME: tên của bộ khoá
    • KEY_NAME: tên khoá
  2. Sử dụng lệnh cURL để gọi phương thức projects.locations.codeRepositoryIndexes.create:

    curl -X POST --data-binary @JSON_FILE_NAME \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://cloudaicompanion.googleapis.com/v1/projects/PROJECT_ID/locations/KEY_LOCATION/codeRepositoryIndexes?codeRepositoryIndexId=CODE_REPOSITORY_INDEX_NAME"

    Thay thế nội dung sau:

    • JSON_FILE_NAME: đường dẫn đến tệp JSON mà bạn đã tạo ở bước trước.
    • PROJECT_ID: mã nhận dạng của dự án để tạo kho lưu trữ.
    • KEY_LOCATION: vị trí tạo kho lưu trữ, vị trí này phải khớp với vị trí của CMEK.
    • CODE_REPOSITORY_INDEX_NAME: tên của chỉ mục kho lưu trữ mã mới mà bạn sẽ tạo. Ví dụ: zg-btf-0001.

Phản hồi trả về một tập hợp các mục nhập nhật ký.

Xoá quyền truy cập vào kho lưu trữ CMEK

Có một số cách để xoá quyền truy cập vào kho lưu trữ được mã hoá bằng CMEK:

Bạn nên thu hồi các quyền từ tài khoản dịch vụ Gemini Code Assist trước khi vô hiệu hoá hoặc huỷ khoá. Các thay đổi đối với quyền sẽ nhất quán trong vòng vài giây, vì vậy, bạn có thể quan sát tác động của việc vô hiệu hoá hoặc huỷ khoá.