יצירת מפתח עטוף

בדף הזה מוסבר איך משתמשים ב-Cloud Key Management Service‏ (Cloud KMS) כדי ליצור מפתח עטוף, שבו אפשר להשתמש כדי לשלוח בקשות deidentify ו-reidentify ל-Cloud Data Loss Prevention API של Sensitive Data Protection.

התהליך של שימוש במפתח קריפטוגרפי כדי להסיר פרטי זיהוי מתוכן ולשחזר פרטי זיהוי נקרא פסאודונימיזציה (או טוקניזציה). למידע על המושגים שקשורים לתהליך הזה, קראו את המאמר הסרת פרטים מזהים.

דוגמה ליצירת מפתח מוצפן, לטוקניזציה של תוכן ולשחזור פרטי זיהוי של תוכן שעבר טוקניזציה מופיעה במאמר הסרת פרטי הזיהוי ושחזור פרטי זיהוי של טקסט רגיש.

אפשר להשלים את השלבים שבמסמך הזה תוך 5 עד 10 דקות, לא כולל השלבים בקטע לפני שמתחילים.

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

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. התקינו את ה-CLI של Google Cloud.

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

  4. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  5. יוצרים או בוחרים פרויקט ב- Google Cloud .

    התפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד 'יצירת פרויקטים' (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים?
    • יוצרים פרויקט ב- Google Cloud :

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם ב- Google Cloud :

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  6. אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.

  7. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  8. מפעילים את Sensitive Data Protection API ואת Cloud KMS API, אם הם עדיין לא מופעלים:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com
  9. התקינו את ה-CLI של Google Cloud.

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

  11. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  12. יוצרים או בוחרים פרויקט ב- Google Cloud .

    התפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד 'יצירת פרויקטים' (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים?
    • יוצרים פרויקט ב- Google Cloud :

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם ב- Google Cloud :

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  13. אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.

  14. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  15. מפעילים את Sensitive Data Protection API ואת Cloud KMS API, אם הם עדיין לא מופעלים:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable dlp.googleapis.com cloudkms.googleapis.com

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות ליצירת מפתח AES עטוף, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

יצירה של אוסף מפתחות ומפתח

לפני שמתחילים את התהליך, צריך להחליט איפה רוצים ש-Sensitive Data Protection יעבד את הבקשות להסרת פרטי הזיהוי ולזיהוי מחדש. כשיוצרים מפתח Cloud KMS, צריך לאחסן אותו ב-global או באותו אזור שבו תשתמשו לבקשות של Sensitive Data Protection. אחרת, הבקשות של Sensitive Data Protection ייכשלו.

רשימה של המיקומים הנתמכים מופיעה במאמר מיקומים של Sensitive Data Protection. רושמים את השם של האזור שבחרתם (לדוגמה, us-west1).

בתהליך הזה, המיקום global משמש לכל בקשות ה-API. אם רוצים להשתמש באזור אחר, מחליפים את global בשם האזור.

  1. יוצרים אוסף מפתחות:

    gcloud kms keyrings create "dlp-keyring" \
        --location "global"
    
  2. יוצרים מפתח:

    gcloud kms keys create "dlp-key" \
        --location "global" \
        --keyring "dlp-keyring" \
        --purpose "encryption"
    
  3. מציגים את אוסף המפתחות ואת המפתח:

    gcloud kms keys list \
        --location "global" \
        --keyring "dlp-keyring"
    

    הפלט הבא מתקבל:

    NAME: projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key
    PURPOSE: ENCRYPT_DECRYPT
    ALGORITHM: GOOGLE_SYMMETRIC_ENCRYPTION
    PROTECTION_LEVEL: SOFTWARE
    LABELS:
    PRIMARY_ID: 1
    PRIMARY_STATE: ENABLED
    

    בפלט הזה, PROJECT_ID הוא מזהה הפרויקט.

    הערך של NAME הוא השם המלא של המשאב של מפתח Cloud KMS. חשוב לזכור את הערך הזה, כי הוא נדרש בבקשות להסרת פרטי הזיהוי ולשחזור פרטי הזיהוי.

יצירת מפתח AES בקידוד Base64

בקטע הזה מוסבר איך ליצור מפתח הצפנה בתקן Advanced Encryption Standard (AES) ולקודד אותו בפורמט Base64.

  1. יוצרים מפתח AES של 128, 192 או 256 ביטים. הפקודה הבאה משתמשת ב-openssl כדי ליצור מפתח של 256 ביט בספרייה הנוכחית:

    openssl rand -out "./aes_key.bin" 32
    

    הקובץ aes_key.bin יתווסף לספרייה הנוכחית.

  2. מקודדים את מפתח ה-AES כמחרוזת base64:

    base64 -i ./aes_key.bin
    

    הפלט אמור להיראות כך:

    uEDo6/yKx+zCg2cZ1DBwpwvzMVNk/c+jWs7OwpkMc/s=
    

עטיפת מפתח ה-AES באמצעות מפתח Cloud KMS

בקטע הזה מתואר איך להשתמש במפתח Cloud KMS שיצרתם ביצירה של אוסף מפתחות ומפתח כדי לארוז את מפתח ה-AES בקידוד Base64 שיצרתם ביצירה של מפתח AES בקידוד Base64.

כדי לעטוף את מפתח ה-AES, משתמשים ב-curl כדי לשלוח את הבקשה הבאה ל-method‏ projects.locations.keyRings.cryptoKeys.encrypt של Cloud KMS API:

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key:encrypt" \
    --request "POST" \
    --header "Authorization:Bearer $(gcloud auth application-default print-access-token)" \
    --header "content-type: application/json" \
    --data "{\"plaintext\": \"BASE64_ENCODED_AES_KEY\"}"

מחליפים את מה שכתוב בשדות הבאים:

התגובה שמתקבלת מ-Cloud KMS דומה ל-JSON הבא:

{
  "name": "projects/<var>PROJECT_ID</var>/locations/global/keyRings/dlp-keyring/cryptoKeys/dlp-key/cryptoKeyVersions/1",
  "ciphertext": "CiQAYuuIGo5DVaqdE0YLioWxEhC8LbTmq7Uy2G3qOJlZB7WXBw0SSQAjdwP8ZusZJ3Kr8GD9W0vaFPMDksmHEo6nTDaW/j5sSYpHa1ym2JHk+lUgkC3Zw5bXhfCNOkpXUdHGZKou1893O8BDby/82HY=",
  "ciphertextCrc32c": "901327763",
  "protectionLevel": "SOFTWARE"
}

בפלט הזה, PROJECT_ID הוא מזהה הפרויקט.

שימו לב לערך של ciphertext בתגובה. זהו המפתח העטוף שלכם.

המאמרים הבאים