הצפנה של נתוני האפליקציה

בדף הזה מוצגת דרך אחת להשתמש ב-Cloud Key Management Service כדי להצפין ישירות נתונים של אפליקציה בלקוח, לפני שהם מועברים ברשת.

בדוגמה הזו, הנתונים המוצפנים מועברים אל Cloud de Confiance ומאוחסנים בקטגוריה של Cloud Storage. ב-Cloud Storage יש גם תמיכה בהצפנה אוטומטית מצד השרת באמצעות מפתחות הצפנה בניהול הלקוח, שמבצעת את כל התהליך הזה באופן אוטומטי. כדי להגן על נתוני האפליקציה לפני השידור שלהם אלCloud de Confiance, מומלץ להשתמש בספריית Tink.

ספריית Tink היא ספרייה רב-לשונית חוצת-פלטפורמות שמספקת ממשקי API למשימות קריפטוגרפיות נפוצות. אפשר להשתמש בזה כדי להצפין נתונים לפני שהם נכנסים Cloud de Confiance למאגרי נתונים, ויש תמיכה בשפות Java,‏ Python,‏ C++‎,‏ Go,‏ Objective-C ושפות אחרות, וגם בשירותי אחסון אובייקטים ובשירותי מסדי נתונים רלציוניים.

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

כשפועלים לפי ההוראות האלה, המפתחות וכל הפעולות הקריפטוגרפיות נשארים ב- Cloud de Confiance וצריך להשתמש ב-Cloud KMS לפענוח.

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

ב Cloud de Confiance ארגון, נדרשת הרשאה ליצור פרויקטים חדשים, להפעיל חיוב, ליצור משתמשים ולנהל הרשאות בפרויקטים האלה. ההרשאה הזו ניתנת בתפקיד roles/resourcemanager.organizationAdmin.

הגדרה

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

יצירת פרויקטים

יוצרים פרויקטים במסוף Cloud de Confiance . הוראות מפורטות זמינות במאמר מדריך למתחילים בנושא ניהול זהויות והרשאות גישה.

יוצרים את הפרויקטים הבאים בארגון:

  1. יוצרים Cloud de Confiance by S3NS פרויקט שיכיל את הקטגוריה של Cloud Storage שמשמשת לאחסון הסודות. הסודות יאוחסנו כאובייקטים בקטגוריה. הפרויקט הזה נקרא STORAGE_PROJECT_ID.

  2. יוצרים פרויקט שני Cloud de Confiance by S3NS לניהול המפתחות של Cloud KMS שמשמשים להצפנה ולפענוח של הסוד. הפרויקט הזה נקרא KEY_PROJECT_ID.

  3. בכל פרויקט, מפעילים את Cloud KMS API ומפעילים את החיוב לפי השלבים שמפורטים בקטע לפני שמתחילים במאמר בנושא התחלה מהירה של Cloud KMS.

צור משתמשים

אתם יוצרים משתמשים ומקצים להם תפקידים במסוף Cloud de Confiance . הוראות מפורטות זמינות במאמר מדריך למתחילים בנושא ניהול זהויות והרשאות גישה.

התהליך הזה יוצר שני משתמשים. אדמין המפתחות מנהל את מפתחות ההצפנה, והמשתמש במפתחות יכול להצפין ולפענח נתונים באמצעות המפתחות.

מבצעים את התהליך הזה בפרויקט KEY_PROJECT_ID.

  1. יוצרים את חשבון האדמין של המפתח.

  2. נותנים למנהל המפתחות את התפקיד roles/cloudkms.admin בניהול זהויות והרשאות גישה (IAM). התפקיד הזה מאפשר לאדמין של המפתחות ליצור ולנהל מפתחות.

  3. יוצרים את חשבון המשתמש הראשי.

  4. נותנים למשתמש המרכזי את תפקיד ה-IAM‏ roles/cloudkms.cryptoKeyEncrypterDecrypter. התפקיד הזה מאפשר למשתמש המפתח להצפין ולפענח נתונים.

יצירה של קטגוריית אחסון

מבצעים את התהליך הזה בפרויקט STORAGE_PROJECT_ID.

  1. יוצרים קטגוריית אחסון בשם STORAGE_BUCKET.
  2. מקצים את התפקיד roles/storage.objectAdmin בקטגוריית האחסון STORAGE_BUCKET לחשבון המשתמש הראשי.

יצירת מפתח הצפנה

מבצעים את התהליך הזה בתור משתמש האדמין הראשי בפרויקט KEY_PROJECT_ID.

  1. יוצרים אוסף מפתחות. השם של אוסף מפתחות חייב להיות ייחודי בתוך הפרויקט. אי אפשר לשנות את השם של אוסף מפתחות או למחוק אותו. משתמשים ב-Google Cloud CLI כדי ליצור אוסף מפתחות.

    gcloud kms keyrings create KEY_RING \
      --location LOCATION
    

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

    • KEY_RING: השם שבו רוצים להשתמש עבור מחזיק המפתחות של האחסון, לדוגמה storage.
    • LOCATION: המיקום שבו רוצים ליצור את מחזיק המפתחות. המיקום צריך להיות קרוב גיאוגרפית למיקום שבו רוצים ליצור את הקטגוריה של Cloud Storage.
  2. יוצרים מפתח הצפנה באוסף המפתחות. השם של המפתח חייב להיות ייחודי בתוך אוסף המפתחות. אי אפשר לשנות את השם של מפתחות או למחוק אותם, אבל אפשר להשמיד את גרסאות המפתחות שלהם. משתמשים ב-Google Cloud CLI כדי ליצור את המפתח. גרסה ראשונית של המפתח נוצרת באופן אוטומטי והופכת לגרסה הראשית.

    gcloud kms keys create KEY_NAME \
      --location LOCATION \
      --keyring KEY_RING \
      --purpose encryption
    

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

    • LOCATION: המיקום שבו יצרתם את אוסף המפתחות.
    • KEY_NAME: השם שבו רוצים להשתמש בשביל מפתח האחסון, לדוגמה storage.
    • KEY_RING: השם שבו השתמשתם עבור מחזיק המפתחות של האחסון, לדוגמה storage.

מידע נוסף על יצירת מחזיקי מפתחות ומפתחות

הצפנה של הקובץ שמכיל את הסוד

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

  1. במחשב המקומי, שומרים את הסוד.

    echo "SECRET_TEXT" > PATH_TO_SECRET
    

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

    • SECRET_TEXT: הסוד שרוצים להגן עליו, בטקסט רגיל. לדוגמה: this is a secret.
    • PATH_TO_SECRET: הנתיב שבו רוצים ליצור את הסוד, לדוגמה secret.txt.
  2. מצפינים את הסוד באמצעות Cloud KMS ומפתח ההצפנה.

    gcloud kms encrypt \
      --location LOCATION \
      --keyring KEY_RING \
      --key KEY_NAME \
      --plaintext-file PATH_TO_SECRET \
      --ciphertext-file PATH_TO_ENCRYPTED_SECRET
    

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

    • LOCATION: המיקום שבו יצרתם את אוסף המפתחות.
    • KEY_RING: השם של אוסף המפתחות.
    • KEY_NAME: השם של מפתח ההצפנה.
    • PATH_TO_SECRET: הנתיב שבו יצרתם את הסוד.
    • PATH_TO_ENCRYPTED_SECRET: הנתיב שבו רוצים לשמור את הסוד המוצפן. לדוגמה: secret.txt.encrypted.

    במדריך לתחילת העבודה בנושא הצפנת נתונים תוכלו לקבל מידע נוסף על הצפנת נתונים.

  3. מעלים את קובץ הסוד המוצפן לקטגוריית האחסון. אפשר להשתמש בפקודה הבאה ב-CLI של gcloud:

    gcloud storage cp PATH_TO_ENCRYPTED_SECRET gs://STORAGE_BUCKET
    

    מידע נוסף על העלאת אובייקטים לקטגוריית אחסון

  4. אופציונלי: מוחקים את קובץ הסוד בטקסט לא מוצפן (PATH_TO_SECRET) מהמחשב המקומי. מומלץ להשתמש בהצפנה בקבצים שמכילים מידע אישי רגיש לא מוצפן.

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

פענוח הקובץ שמכיל את הסוד

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

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

    gcloud storage cp gs://STORAGE_BUCKET/PATH_TO_ENCRYPTED_SECRET .
    

    מידע נוסף על הורדת אובייקטים מקטגוריית אחסון

  2. מפענחים את הקובץ באמצעות אותו מפתח שבו השתמשתם כדי להצפין אותו.

    gcloud kms decrypt --location LOCATION \
      --keyring KEY_RING \
      --key KEY_NAME \
      --ciphertext-file PATH_TO_ENCRYPTED_SECRET \
      --plaintext-file PATH_TO_DECRYPTED_SECRET
    

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

    • LOCATION: המיקום שבו יצרתם את אוסף המפתחות.
    • KEY_RING: השם של אוסף המפתחות.
    • KEY_NAME: השם של מפתח ההצפנה.
    • PATH_TO_ENCRYPTED_SECRET: הנתיב לסוד המוצפן שהורדתם, לדוגמה secret.txt.encrypted.
    • PATH_TO_DECRYPTED_SECRET: הנתיב שבו רוצים לשמור את הסוד המפוענח, לדוגמה secret_decrypted.txt.

    מידע נוסף על פענוח נתונים זמין במאמר הפעלה מהירה של הצפנת נתונים.

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

  3. אופציונלי: מוחקים את הקבצים PATH_TO_ENCRYPTED_SECRET ו-PATH_TO_DECRYPTED_SECRET מהמחשב המקומי.

סידור וארגון

כדי לנקות, מוחקים את כל הקבצים שיצרתם במחשב המקומי, ואז מוחקים את הפרויקטים KEY_PROJECT_ID ו-STORAGE_PROJECT_ID.

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