בדף הזה מוסבר איך לנהל קטגוריות אחסון מוצפנות ב-Google Distributed Cloud (GDC) עם air gap.
לפני שמתחילים
קטגוריות אחסון הן משאבים שמוגדרים ברמת הפרויקט. הפרויקט פועל כמאגר, מקבץ את הקטגוריות ומאפשר לנהל אותן דרך שרת Management API. כדי לבצע את הפעולות שבדף הזה, צריך ליצור פרויקט חדש או לבחור פרויקט קיים שיש לכם בו מספיק הרשאות.
התפקידים שצריך ב-IAM
כדי לבקש את התפקידים הבאים במרחב השמות של הפרויקט, פנו לאדמין של הפרויקט ב-IAM:
- אדמין של פרויקט קטגוריות (
project-bucket-admin): יצירה, עדכון ומחיקה של קטגוריות אחסון. - צפייה בפרויקט של אובייקטים בקטגוריה (
project-bucket-object-viewer): צפייה בפרטים של קטגוריות ואובייקטים באחסון ובדיקה שלהם.
מידע נוסף זמין במאמר מתן גישה לקטגוריה.
הכנת הסביבה
כדי להריץ פקודות בשרת ה-Management API או בשרת ה-API הגלובלי:
- אם אין לכם קובץ kubeconfig לשרת ה-API של ניהול האזור, נכנסים לחשבון ויוצרים קובץ כזה.
- לקטגוריות בשני אזורים:
- מוודאים מול מפעיל התשתית (IO) שהמשאב המותאם אישית
BucketLocationConfigנוצר בשביל האזורים המותאמים. - יוצרים את הקובץ kubeconfig לשרת ה-API הגלובלי.
- מוודאים מול מפעיל התשתית (IO) שהמשאב המותאם אישית
ניהול משאבי הצפנה
לקטגוריות עם הצפנת v2 יהיה סוד kekRef וכמה מפתחות AEADKeys שנוצרו, שבהם kekRef משמש להפניה למפתחות AEADKeys פעילים שמוגדרים כברירת מחדל, ומפתחות AEADKeys כוללים מפתחות פעילים ומפתחות בארכיון ששייכים לקטגוריה.
רענון של מפתחות AEADKeys פעילים שמוגדרים כברירת מחדל בקטגוריה
מומלץ לרענן את מפתחות ה-AEAD שמוגדרים כברירת מחדל בקטגוריה אחרי כתיבה של כ-42 מיליארד אובייקטים. הפעולה הזו משפרת את האבטחה ומונעת מצב שבו המפתחות לא יהיו זמינים. תהליך הרענון ייצור kekRef חדש וישבית את ה-AEADKeys הקודמים. כדי להתחיל את תהליך הרענון, מוחקים את הסוד kekRef שמשויך לקטגוריה.
כדי לאחזר את ה-kekRef הקודם, מריצים את הפקודה הבאה:
kubectl get secrets -n NAMESPACE_NAME -l object.gdc.goog/bucket-name=BUCKET_NAME
לאחר מכן, אפשר להריץ את הפקודה הבאה כדי למחוק את ה-kekRef הקיים:
kubectl delete secrets OLD_KEKREF_NAME -n NAMESPACE_NAME
אחרי המחיקה, אפשר להריץ את הפקודה הבאה כדי לוודא שנוצר kekRef חדש על סמך AGE:
kubectl get secrets -n NAMESPACE_NAME -l object.gdc.goog/bucket-name=BUCKET_NAME
מוודאים שנוצרו מפתחות AEAD חדשים שמוגדרים כברירת מחדל על סמך AGE:
kubectl get aeadkeys -n NAMESPACE_NAME -l cmek.security.gdc.goog/resource-name=BUCKET_NAME
רוטציה של מפתחות AEAD שמוגדרים כברירת מחדל בקטגוריה
אם מפתח AEADKey של הקטגוריה נחשף, צריך להחליף ידנית את המפתחות להצפנת מפתחות שמשויכים לקטגוריה.
כדי להתחיל את התהליך, קודם צריך לרענן את מפתחות ברירת המחדל הפעילים. הפעולה הזו יוצרת מפתחות AEADKeys חדשים פעילים שמוגדרים כברירת מחדל, ומסמנת את המפתחות הקודמים להצפנת מפתחות כלא פעילים. אחרי רענון מפתחות ברירת המחדל, בהעלאות הבאות של אובייקטים המערכת תשתמש במפתחות AEAD החדשים כמפתחות להצפנת מפתחות הצפנה (KEK). מפתחות ה-AEAD הקודמים לא מושמדים, כך שעדיין אפשר לפענח אובייקטים קיימים שהוצפנו בעבר באמצעות המפתחות האלה.
לאחר מכן, פועלים לפי השלבים כדי להוריד ולהעלות מחדש את האובייקטים בקטגוריה ולמחוק את האובייקטים הישנים.
אחרי שמעלים מחדש את כל האובייקטים בקטגוריה, אפשר לנקות את מפתחות ה-AEAD הלא פעילים ואת האובייקטים הישנים. מזהים את מפתחות ה-AEAD שהושבתו לפי AGE:
kubectl get aeadkeys -n NAMESPACE_NAME -l cmek.security.gdc.goog/resource-name=BUCKET_NAME
לבסוף, פועלים לפי השלבים למחיקת ה-AEADKeys.