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

Tài liệu này trình bày 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 các khoá Cloud EKM.

Trong tài liệu này, bạn sẽ làm những việc 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 một kho lưu trữ CMEK.

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

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 chế độ mã hoá mặc định của Google. Để biết thêm thông tin về các lựa 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ắt đầu

  1. Trong một trong các môi trường phát triển sau, hãy thiết lập gcloud CLI:

    Nếu đang sử dụng một nhà cung cấp dịch vụ danh tính (IdP) bên ngoài, trước tiên, bạn phải đăng nhập vào gcloud CLI bằng danh tính liên kết của mình.

  2. Trong môi trường phát triển mà bạn thiết lập gcloud CLI, 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 lên phiên bản mới nhất.

    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 đối với 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ý các khoá, hãy làm như sau:

    1. Bật API Cloud Key Management Service.

    2. Tạo bộ khoákhoá ngay trong Cloud KMS.

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

    Giao diện dòng lệnh

    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 cho tài khoản dịch vụ Gemini Code Assist:

      1. Nhấp vào Thêm đối tượng chính.
      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., trong đó PROJECT_NUMBERsố dự án của dự án trên Google Cloud đã bật Gemini Code Assist.
      3. Trong phần Chọn vai trò, hãy chọn Cloud KMS > Cloud KMS CryptoKey Encrypter/Decrypter (Tiện ích mã hoá/Tiện ích giải mã Cloud KMS CryptoKey).
      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 lại khoá.

    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 cho 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." \
          --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í của khoá.
      • KEYRING_NAME: tên bộ khoá.
      • PROJECT_NUMBER: số dự án của dự án trên Google Cloud có bật Gemini Code Assist.
    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á cần dùng để 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ó chế độ 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í của khoá.
  • KEY_PROJECT_ID: mã nhận dạng dự án khoá.
  • KEYRING_NAME: tên bộ khoá.
  • KEY_NAME: tên khoá.

API

  1. Tạo một tệp JSON chứa 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 khoá
    • KEY_LOCATION: vị trí của khoá
    • KEYRING_NAME: tên 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ữ, phải khớp với vị trí mà CMEK tồn tại.
    • 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 này trả về một tập hợp các mục nhật ký.

Xoá quyền truy cập vào kho khoá mã hoá do khách hàng quản lý

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 quyền của 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 về quyền sẽ được áp dụng 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á.