เข้ารหัสข้อมูลด้วยคีย์การเข้ารหัสที่จัดการโดยลูกค้า

เอกสารนี้แสดงวิธีใช้คีย์การเข้ารหัสที่จัดการโดยลูกค้า (CMEK) เพื่อ เข้ารหัสและควบคุมข้อมูลที่ไม่มีการเคลื่อนไหวในบริการระบบคลาวด์ผ่าน Cloud Key Management Service CMEK ผสานรวมกับการปรับแต่งโค้ดสำหรับ Gemini Code Assist Gemini Code Assist ไม่รองรับการใช้คีย์ Cloud EKM

ในเอกสารนี้ คุณจะทำสิ่งต่อไปนี้

  • ดูวิธีสร้าง CMEK
  • ให้สิทธิ์แก่บัญชีบริการ Gemini Code Assist
  • สร้างดัชนีที่เก็บโค้ดด้วย CMEK
  • นำสิทธิ์เข้าถึงที่เก็บ CMEK ออก

โดยค่าเริ่มต้น Gemini สำหรับ Google Cloud จะเข้ารหัสเนื้อหาของลูกค้าที่ พัก Gemini จะจัดการการเข้ารหัสให้คุณโดยที่คุณไม่ต้องดำเนินการใดๆ เพิ่มเติม ตัวเลือกนี้เรียกว่าการเข้ารหัสเริ่มต้นของ Google

หลังจากตั้งค่าทรัพยากรด้วย CMEK แล้ว ประสบการณ์การเข้าถึงทรัพยากร Gemini จะคล้ายกับการใช้การเข้ารหัสเริ่มต้นของ Google ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการเข้ารหัสได้ที่คีย์การเข้ารหัสที่จัดการโดยลูกค้า (CMEK)

ก่อนเริ่มต้น

  1. ตั้งค่า gcloud CLI ในสภาพแวดล้อมการพัฒนาซอฟต์แวร์ต่อไปนี้

    • Cloud Shell: หากต้องการใช้เทอร์มินัลออนไลน์ที่มีการตั้งค่า gcloud CLI ไว้แล้ว ให้เปิดตัวแก้ไข Cloud Shell

    • เชลล์ในเครื่อง: หากต้องการใช้สภาพแวดล้อมการพัฒนาในเครื่อง ให้ติดตั้งและเริ่มต้น gcloud CLI

    หากใช้ผู้ให้บริการข้อมูลประจำตัว (IdP) ภายนอก คุณต้องลงชื่อเข้าใช้ gcloud CLI ด้วยข้อมูลประจำตัวภายนอกก่อน

  2. ในสภาพแวดล้อมการพัฒนาที่คุณตั้งค่า gcloud CLI ให้เรียกใช้gcloud components update คำสั่ง เพื่อให้แน่ใจว่าคุณได้อัปเดตคอมโพเนนต์ทั้งหมดที่ติดตั้งของ gcloud เป็นเวอร์ชันล่าสุดแล้ว

    gcloud components update
    

สร้าง CMEK และให้สิทธิ์

หากต้องการสร้าง CMEK และให้สิทธิ์บัญชีบริการ Gemini Code Assist ในคีย์ ให้ทำดังนี้

  1. ในโปรเจ็กต์ Google Cloud ที่คุณต้องการจัดการคีย์ ให้ทำดังนี้

    1. เปิดใช้ Cloud Key Management Service API

    2. สร้างคีย์ริงและคีย์ใน Cloud KMS โดยตรง

  2. มอบบทบาท IAM ผู้เข้ารหัส/ผู้ถอดรหัส CryptoKey (roles/cloudkms.cryptoKeyEncrypterDecrypter) ให้กับ บัญชีบริการ Gemini Code Assist ให้สิทธิ์นี้ในคีย์ที่คุณสร้าง

    คอนโซล

    1. ไปที่การจัดการคีย์

      ไปที่การจัดการคีย์

    2. เลือกคีย์ที่คุณสร้าง

    3. ให้สิทธิ์เข้าถึงบัญชีบริการ Gemini Code Assist โดยทำดังนี้

      1. คลิกเพิ่มหลักการ
      2. เพิ่มบัญชีบริการ Gemini Code Assist บัญชีบริการคือ service-PROJECT_NUMBER@gcp-sa-cloudaicompanions. โดยที่ PROJECT_NUMBER คือ หมายเลขโปรเจ็กต์ ของโปรเจ็กต์ Google Cloud ที่เปิดใช้ Gemini Code Assist
      3. ในเลือกบทบาท ให้เลือก Cloud KMS > ผู้เข้ารหัส/ผู้ถอดรหัส Cloud KMS CryptoKey
      4. คลิกบันทึก
    4. ทำซ้ำขั้นตอนก่อนหน้าเพื่อให้สิทธิ์เข้าถึงบัญชีที่จะ สร้างดัชนีที่เก็บโค้ดด้วย CMEK

    5. กลับไปที่หน้าการจัดการคีย์ แล้วเลือกคีย์อีกครั้ง

    6. เลือกแสดงแผงข้อมูล คุณควรเห็นบทบาทในคอลัมน์บทบาท/สมาชิก

    gcloud

    1. หากต้องการให้สิทธิ์เข้าถึงบริการ Gemini Code Assist บัญชี ให้ใช้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"
      

      แทนที่ค่าต่อไปนี้

      • KEY_NAME: ชื่อคีย์
      • PROJECT_ID: รหัสของโปรเจ็กต์ที่มีคีย์
      • LOCATION: ตำแหน่งของคีย์
      • KEYRING_NAME: ชื่อคีย์ริง
      • PROJECT_NUMBER: หมายเลขโปรเจ็กต์ ของโปรเจ็กต์ Google Cloud ที่เปิดใช้ Gemini Code Assist
    2. ทำซ้ำขั้นตอนก่อนหน้าเพื่อให้สิทธิ์เข้าถึงบัญชีที่จะ สร้างดัชนีที่เก็บโค้ดด้วย CMEK

    ดูข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งนี้ได้ที่gcloud kms keys add-iam-policy-bindingเอกสารประกอบ

ตอนนี้คุณสามารถสร้างดัชนีที่เก็บโค้ดด้วย CMEK โดยใช้ API และระบุคีย์ที่จะใช้สำหรับการเข้ารหัสได้แล้ว

สร้างดัชนีที่เก็บโค้ดด้วย CMEK

หากต้องการสร้างที่เก็บใหม่ที่มีการป้องกัน CMEK ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้

gcloud

ใช้คำสั่ง 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"

แทนที่ค่าต่อไปนี้

  • CODE_REPOSITORY_INDEX_NAME: ชื่อของที่เก็บโค้ดใหม่ ดัชนีที่คุณจะสร้าง
  • LOCATION: ตำแหน่งของคีย์
  • KEY_PROJECT_ID: รหัสโปรเจ็กต์หลัก
  • KEYRING_NAME: ชื่อคีย์ริง
  • KEY_NAME: ชื่อคีย์

API

  1. สร้างไฟล์ JSON ที่มีข้อมูลต่อไปนี้

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

    แทนที่ค่าต่อไปนี้

    • KEY_PROJECT_ID: รหัสโปรเจ็กต์คีย์
    • KEY_LOCATION: ตำแหน่งของคีย์
    • KEYRING_NAME: ชื่อคีย์ริง
    • KEY_NAME: ชื่อคีย์
  2. ใช้คำสั่ง cURL เพื่อเรียกใช้เมธอด 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"

    แทนที่ค่าต่อไปนี้

    • JSON_FILE_NAME: เส้นทางของ ไฟล์ JSON ที่คุณสร้างในขั้นตอนก่อนหน้า
    • PROJECT_ID: รหัสของโปรเจ็กต์ที่จะสร้าง ที่เก็บ
    • KEY_LOCATION: ตำแหน่งที่จะสร้างที่เก็บ ซึ่งต้องตรงกับตำแหน่งที่มี CMEK
    • CODE_REPOSITORY_INDEX_NAME: ชื่อของดัชนีที่เก็บโค้ดใหม่ที่คุณจะสร้าง เช่น zg-btf-0001

การตอบกลับจะแสดงชุดรายการบันทึก

ยกเลิกสิทธิ์เข้าถึงที่เก็บ CMEK

คุณนำสิทธิ์เข้าถึงที่เก็บที่เข้ารหัสด้วย CMEK ได้หลายวิธี ดังนี้

เราขอแนะนำให้คุณเพิกถอนสิทธิ์จากบัญชีบริการ Gemini Code Assist ก่อนที่จะปิดใช้หรือทำลายคีย์ การเปลี่ยนแปลงสิทธิ์จะสอดคล้องกันภายในไม่กี่วินาที คุณจึงสังเกตผลกระทบของการปิดใช้หรือทำลายคีย์ได้