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

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

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

היועץ ב-Storage Intelligence מציג את הממצא Objects violate enforced encryption rules כשקטגוריה מכילה אובייקטים שמשתמשים בשיטת הצפנה מוגבלת. ממצא הוא אנומליה או פער בהגדרות האבטחה שזוהו במדדים ובמטא-נתונים של האובייקטים, ודורשים התייחסות. מידע כללי על יועץ ב-Storage Intelligence בקטלוג הממצאים מופיעה רשימה מלאה של הממצאים.

ערכי סף שמפעילים ממצא

כשמפעילים את Storage Intelligence, המערכת של Cloud Storage בודקת באופן אוטומטי את המטא-נתונים של ההצפנה ברמת האובייקט, בהתאם להגדרות של אכיפת ההצפנה ברמת הקטגוריה בפרויקט, בתיקייה או בארגון. היועץ ב-Storage Intelligence יוצר ממצא כשקטגוריה עומדת בשני הקריטריונים הבאים:

  • הקטגוריה מגבילה שיטת הצפנה אחת או יותר בהגדרות enforcedEncryptionAllowedTypes שלה, כמו הצפנה רגילה (הצפנת ברירת המחדל של Google או GMEK), מפתחות הצפנה בניהול הלקוח (CMEK) או מפתחות הצפנה מטעם הלקוח (CSEK).
  • הקטגוריה מכילה לפחות אובייקט אחד שבו שדה המטא-נתונים encryptionType לא נמצא ברשימת enforcedEncryptionAllowedTypes של הקטגוריה.

הממצאים הראשוניים של נקודת ההשוואה מופיעים תוך 48 שעות אחרי שמפעילים את Storage Intelligence, ומתרעננים כל 24 שעות. כדי לצמצם את מספר ההתראות, היועץ ב-Storage Intelligence מקבץ בלוח הבקרה את ההפרות ברמת האובייקט לפי קטגוריה. אפשר לשלוח שאילתות לגבי מטא-נתונים של הצפנה ברמת האובייקט במערכי נתונים של Storage Insights.

איך מגיבים לממצאים

כדי להגיב לממצא, מזהים את האובייקטים המושפעים בכל קטגוריה ומשכתבים את האובייקטים שלא עומדים בדרישות באמצעות שיטת הצפנה מותרת:

  1. צפו בפרטי הממצא כדי לזהות את הקטגוריות המושפעות ואת סוגי ההצפנה המותרים שלהן (CMEK,‏ GMEK או CSEK).

  2. אופציונלי: כדי להציג את רשימת האובייקטים בקטגוריה שמושפעת מהבעיה ומפרה את הגדרת ההצפנה שנאכפת, שולחים שאילתה לקבוצת הנתונים של Storage Insights ב-BigQuery. אם לא הגדרתם מערך נתונים מקושר, קראו את המאמר הגדרת מערכי נתונים של Storage Insights.

    SELECT
      bucket,
      name,
      encryptionType
    FROM
      `DATASET_NAME.object_attributes_latest_snapshot_view`
    WHERE
      bucket = 'BUCKET_NAME'
      AND encryptionType NOT IN (ALLOWED_ENCRYPTION_TYPES)
      AND timeDeleted IS NULL
      AND softDeleteTime IS NULL;

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

    • ‫DATASET_NAME: השם של מערך הנתונים המקושר של Storage Insights ב-BigQuery.
    • ‫BUCKET_NAME: שם הקטגוריה הרלוונטית.
    • ‫ALLOWED_ENCRYPTION_TYPES: רשימה מופרדת בפסיקים של סוגי ההצפנה שהקטגוריה מאפשרת, כמו 'CMEK' או 'CMEK', 'GMEK'.
  3. אתם יכולים להיעזר בטבלה הבאה כדי לבחור את שיטת ההצפנה מחדש של האובייקטים הפעילים:

    תרחיש הפעולה המומלצת פרטים
    הקטגוריה מאפשרת מפתחות הצפנה בניהול הלקוח (CMEK) הצפנה מחדש של אובייקטים באמצעות CMEK לאובייקטים פעילים ב-GMEK, מייצאים קובצי מניפסט בפורמט CSV מ-BigQuery ומריצים משימה של פעולות רבות על פריטי אחסון כדי לשכתב את האובייקטים באמצעות מפתח Cloud KMS. לאובייקטים שמוצפנים באמצעות CSEK, מריצים את הפקודה gcloud storage objects update.
    הקטגוריה מאפשרת הצפנה רגילה (GMEK) הצפנה מחדש של אובייקטים באמצעות הצפנה רגילה (GMEK) מוודאים שלקטגוריה אין מפתח ברירת מחדל של Cloud KMS, ואז משתמשים בפקודה gcloud storage objects update עם הדגל --clear-encryption-key כדי לשכתב את האובייקטים המושפעים באמצעות הצפנה רגילה.
    קטגוריה מאפשרת רק מפתחות הצפנה מטעם הלקוח (CSEK) (CSEK) הצפנה מחדש של אובייקטים באמצעות CSEK משתמשים בפקודה gcloud storage objects update עם הדגל --encryption-key כדי לשכתב את האובייקטים המושפעים באמצעות מפתח ההצפנה AES-256.

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

הצפנה מחדש של אובייקטים באמצעות CMEK

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

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

כדי להצפין מחדש אובייקטים שמוצפנים באמצעות GMEK באמצעות CMEK בקנה מידה נרחב, מייצאים קובצי מניפסט בפורמט CSV מ-BigQuery ומריצים משימה של פעולות רבות על פריטי אחסון:

  1. מריצים את השאילתה הבאה של EXPORT DATA ב-BigQuery כדי ליצור מניפסט CSV באמצעות מערכי נתונים של Storage Insights לאובייקטים פעילים שמושפעים ומשתמשים בהצפנה רגילה (GMEK):

    EXPORT DATA OPTIONS(
      uri='gs://DESTINATION_BUCKET/manifests/objects_violating_enforced_policies_*.csv',
      format='CSV',
      overwrite=true,
      header=true
    ) AS
    SELECT
      bucket,
      name
    FROM
      `DATASET_NAME.object_attributes_latest_snapshot_view`
    WHERE
      bucket = 'BUCKET_NAME'
      AND encryptionType = 'GMEK'
      AND timeDeleted IS NULL
      AND softDeleteTime IS NULL;

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

    • ‫DESTINATION_BUCKET: השם של הקטגוריה ב-Cloud Storage שבה רוצים לאחסן את קובצי המניפסט בפורמט CSV שמייצאים.
    • ‫DATASET_NAME: השם של מערך הנתונים המקושר של Storage Insights ב-BigQuery.
    • ‫BUCKET_NAME: שם הקטגוריה הרלוונטית.
  2. משלימים את הדרישות המוקדמות לביצוע פעולות רבות על פריטי אחסון, ומבקשים מהאדמין להקצות את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) במפתח Cloud KMS לשני סוכני השירות הבאים:

    • סוכן השירות של פעולות רבות על פריטי אחסון (service-PROJECT_NUMBER@gcp-sa-storagebatchoperations.iam.gserviceaccount.com)
    • סוכן השירות של Cloud Storage‏ (service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com)

    מחליפים את PROJECT_NUMBER במספר הפרויקט שמכיל את הקטגוריה.

  3. מריצים את הפקודה gcloud storage batch-operations jobs create כדי ליצור משימה של פעולות רבות על פריטי אחסון באמצעות קובץ המניפסט, ומשכתבים את האובייקטים באמצעות המפתח של Cloud KMS. כדי לאמת את הגדרות המשימה לפני שמשנים אובייקטים, צריך לכלול את הדגל --dry-run:

    gcloud storage batch-operations jobs create JOB_NAME \
      --bucket="BUCKET_NAME" \
      --manifest-location="gs://DESTINATION_BUCKET/manifests/objects_violating_enforced_policies_*.csv" \
      --rewrite-object="kms-key=KMS_KEY"

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

    • ‫JOB_NAME: מזהה ייחודי של המשימה באצווה, למשל re-encrypt-objects-job.
    • ‫BUCKET_NAME: שם הקטגוריה הרלוונטית.
    • ‫DESTINATION_BUCKET: שם הקטגוריה שמכילה את קובצי המניפסט שיוצאו.
    • ‫KMS_KEY: שם המשאב של מפתח Cloud KMS שבו רוצים להשתמש כדי להצפין את האובייקטים. המפתח צריך להיות באותו מיקום של הקטגוריה, בפורמט projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.

הצפנה מחדש של אובייקטים שמוצפנים באמצעות CSEK באמצעות Google Cloud CLI

מכיוון ש- Google Cloud לא מאחסן מפתחות הצפנה באספקת הלקוח (CSEK), אי אפשר להשתמש בפעולות רבות על פריטי אחסון כדי לפענח אובייקטים שמוצפנים באמצעות CSEK. כדי להצפין מחדש אובייקטים שמוצפנים באמצעות CSEK באמצעות CMEK, מריצים את הפקודה gcloud storage objects update עם הדגלים --decryption-keys ו---encryption-key:

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \
  --decryption-keys=DECRYPTION_KEY \
  --encryption-key=KMS_KEY

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

  • ‫BUCKET_NAME: שם הקטגוריה המושפעת.
  • ‫OBJECT_NAME: שם האובייקט המוצפן באמצעות CSEK שרוצים להצפין מחדש. כדי לעדכן כמה אובייקטים בפקודה אחת, משתמשים בתווים כלליים לחיפוש של URI או בדגל --read-paths-from-stdin (-I).
  • ‫DECRYPTION_KEY: מפתח AES-256 בקידוד Base64 בתקן RFC 4648 שמצפין את האובייקט.
  • ‫KMS_KEY: שם המשאב של מפתח Cloud KMS שבו רוצים להשתמש כדי להצפין את האובייקט, בפורמט projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.

הצפנה מחדש של אובייקטים באמצעות הצפנה רגילה (GMEK)

כדי להצפין מחדש אובייקטים באמצעות הצפנה רגילה (הצפנת ברירת המחדל של Google או GMEK), צריך לוודא שלקטגוריה אין מפתח ברירת מחדל של Cloud KMS ולמחוק את מפתח ההצפנה בהתאמה אישית בכל אחד מהאובייקטים המושפעים:

  1. מוודאים שלקטגוריה אין מפתח ברירת מחדל של Cloud KMS. כשמוחקים את מפתח ההצפנה בהתאמה אישית של אובייקט, Cloud Storage מצפין את האובייקט באמצעות הצפנה רגילה (GMEK) רק אם לקטגוריה אין מפתח Cloud KMS שמוגדר כברירת מחדל. אם לקטגוריה יש מפתח ברירת מחדל של Cloud KMS, ‏ Cloud Storage מצפין את האובייקט באמצעות המפתח הזה. אם בקטגוריה יש גם הגבלה על CMEK, פעולת הכתיבה מחדש נכשלת.

    כדי להסיר מקטגוריה את מפתח ברירת המחדל של Cloud KMS, מריצים את הפקודה gcloud storage buckets update עם הדגל --clear-default-encryption-key:

    gcloud storage buckets update gs://BUCKET_NAME \
      --clear-default-encryption-key

    מחליפים את BUCKET_NAME בשם של הקטגוריה הרלוונטית.

  2. משתמשים בפקודה gcloud storage objects update עם הדגל --clear-encryption-key כדי לשכתב את האובייקטים המושפעים באמצעות הצפנה רגילה. אם האובייקטים מוצפנים באמצעות מפתחות הצפנה באספקת הלקוח (CSEK), צריך לכלול גם את הדגל --decryption-keys:

    gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \
      --clear-encryption-key \
      [--decryption-keys=DECRYPTION_KEY]

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

    • ‫BUCKET_NAME: שם הקטגוריה הרלוונטית.
    • ‫OBJECT_NAME: שם האובייקט שרוצים להצפין מחדש. כדי לעדכן כמה אובייקטים בפקודה אחת, משתמשים בתווים כלליים לחיפוש של URI (כמו gs://BUCKET_NAME/**) או בדגל --read-paths-from-stdin (-I).
    • ‫DECRYPTION_KEY: אם האובייקט מוצפן באמצעות CSEK, מפתח AES-256 בקידוד base64 בתקן RFC 4648 שמצפין את האובייקט. אם האובייקט מוצפן באמצעות CMEK, משמיטים את הדגל --decryption-keys.

הצפנה מחדש של אובייקטים באמצעות CSEK

אם הקטגוריה מאפשרת רק מפתחות הצפנה באספקת הלקוח (CSEK), משתמשים בפקודה gcloud storage objects update עם הדגל --encryption-key כדי לשכתב את האובייקטים המושפעים באמצעות מפתח ההצפנה AES-256. אם אובייקט מוצפן באמצעות CSEK אחר, צריך לכלול גם את הדגל --decryption-keys:

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME \
  --encryption-key=YOUR_ENCRYPTION_KEY \
  [--decryption-keys=DECRYPTION_KEY]

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

  • ‫BUCKET_NAME: שם הקטגוריה הרלוונטית.
  • ‫OBJECT_NAME: שם האובייקט שרוצים להצפין מחדש. כדי לעדכן כמה אובייקטים בפקודה אחת, משתמשים בתווים כלליים לחיפוש של URI או בדגל --read-paths-from-stdin (-I).
  • ‫YOUR_ENCRYPTION_KEY: מחרוזת מפתח ההצפנה AES-256 בקידוד base64 בתקן RFC 4648.
  • ‫DECRYPTION_KEY: אם האובייקט מוצפן באמצעות CSEK אחר, מפתח AES-256 בקידוד base64 בתקן RFC 4648 שמצפין את האובייקט. אם האובייקט מוצפן באמצעות GMEK או CMEK, משמיטים את הדגל --decryption-keys.

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