הצפנת נתונים באמצעות מפתחות הצפנה בניהול הלקוח

במסמך הזה מוסבר איך להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) כדי להצפין נתונים במנוחה בשירות ענן ולשלוט בהם באמצעות Cloud Key Management Service. ‫CMEK משולב עם התאמה אישית של קוד ב-Gemini Code Assist. ‫Gemini Code Assist לא תומך בשימוש במפתחות של Cloud EKM.

במסמך הזה תלמדו:

  • איך יוצרים מפתח CMEK
  • נותנים הרשאות לחשבון השירות של Gemini Code Assist.
  • יצירת אינדקס של מאגר קוד עם CMEK.
  • הסרת הגישה למאגר CMEK.

כברירת מחדל, Gemini for Google Cloud מצפין את תוכן הלקוחות במצב מנוחה. ‫Gemini מטפל בהצפנה בשבילכם בלי שתצטרכו לבצע פעולות נוספות. האפשרות הזו נקראת הצפנת ברירת המחדל של Google.

אחרי שמגדירים את המשאבים עם CMEK, חוויית הגישה למשאבי Gemini דומה לשימוש בהצפנה שמוגדרת כברירת מחדל ב-Google. מידע נוסף על אפשרויות ההצפנה זמין במאמר בנושא מפתחות הצפנה בניהול הלקוח (CMEK).

לפני שמתחילים

  1. מגדירים את ה-CLI של gcloud באחת מסביבות הפיתוח הבאות:

    • Cloud Shell: כדי להשתמש בטרמינל אונליין שבו כבר מוגדר ה-CLI של gcloud, צריך להפעיל את Cloud Shell Editor.

    • מעטפת מקומית: כדי להשתמש בסביבת פיתוח מקומית צריך להתקין ולהפעיל את ה-CLI של gcloud.

    אם אתם משתמשים בספק זהויות חיצוני (IdP), אתם צריכים קודם להיכנס ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם.

  2. בסביבת הפיתוח שבה הגדרתם את ה-CLI של gcloud, מריצים את הפקודה 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 של מצפין/מפענח של מפתח הצפנה (roles/cloudkms.cryptoKeyEncrypterDecrypter) לחשבון השירות של Gemini Code Assist. צריך לתת את ההרשאה הזו למפתח שיצרתם.

    המסוף

    1. עוברים אל ניהול מפתחות.

      מעבר אל Key management

    2. בוחרים את המפתח שיצרתם.

    3. נותנים גישה לחשבון השירות של Gemini Code Assist:

      1. לוחצים על Add principal.
      2. מוסיפים את חשבון השירות של Gemini Code Assist. חשבון השירות הוא service-PROJECT_NUMBER@gcp-sa-cloudaicompanions., כאשר PROJECT_NUMBER הוא מספר הפרויקט של פרויקט Google Cloud שבו מופעל Gemini Code Assist.
      3. ברשימת התפקידים Select a role בוחרים באפשרות Cloud KMS > Cloud KMS CryptoKey Encrypter/Decrypter.
      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 לפני שמשביתים או משמידים מפתח. השינויים בהרשאות מתעדכנים תוך שניות, כך שאפשר לראות את ההשפעות של השבתה או מחיקה של מפתח.