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

בדף הזה מוסבר איך להשתמש ב-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 ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (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. מפעילים את ממשקי ה-API של Cloud KMS ושל Sensitive Data Protection:

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

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    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 ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (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. מפעילים את ממשקי ה-API של Cloud KMS ושל Sensitive Data Protection:

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

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    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

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

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

    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 בתגובה. זה המפתח העטוף.

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