פתרון בעיות בהגדרות של CMEK ושל משאבים שמוגדרים כברירת מחדל ב-Cloud Logging

במאמר הזה מוסבר איך למצוא ולצמצם שגיאות נפוצות בהגדרת CMEK. בנוסף, מוסבר כאן איך לזהות שגיאות שמתרחשות כשמגדירים הגדרות ברירת מחדל למשאבים ב-Cloud Logging. אפשר להגדיר את ההגדרות האלה לארגונים ולתיקיות.

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

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

ERROR: (gcloud.logging.settings.update) INVALID_ARGUMENT: The KMS key location must match the storage location. Received KMS key location: us-central1, storage location: us-west1
- '@type': type.googleapis.com/google.rpc.DebugInfo
  detail: '[ORIGINAL ERROR] generic::invalid_argument: The KMS key location must match
    the storage location. Received KMS key location: us-central1, storage location:
    us-west1 [google.rpc.error_details_ext] { message: "The KMS key location must
    match the storage location. Received KMS key location: us-central1, storage location:
    us-west1" }'

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

פתרון בעיות שקשורות ל-CMEK

במהלך ההגדרה של CMEK, הפרויקט שמכיל את מפתח Cloud KMS מקבל הודעה על בעיות שקשורות אליו. Cloud de Confiance לדוגמה, העדכונים נכשלים אם KMS_KEY_NAME לא תקין, אם לחשבון השירות המשויך לא הוקצה התפקיד הנדרש Cloud Key Management Service CryptoKey Encrypter/Decrypter, או אם הגישה למפתח מושבתת.

אחרי שמגדירים CMEK, לפחות אחד מהדברים הבאים קורה:

  • קיבלתם התראה מ-Cloud Logging על בעיות בגישה ל-CMEK.

  • כשיוצרים פרויקטים חדשים בארגון _Defaultאו בתיקייה, שמים לב ש-CMEK לא מופעל עבור דלי מאגרי היומנים _Required. Cloud de Confiance

  • מתקבלות שגיאות כשקוראים ממאגרי יומנים עם CMEK מופעל, או כשמנסים ליצור או לעדכן מאגרי יומנים.

ההתראה כוללת מידע על הכשל ועל הפעולות שאפשר לבצע כדי לפתור את הבעיה:

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

לחשבון השירות של Logging שמשויך לפרויקט Cloud de Confiance אין הרשאות IAM מספיקות כדי לפעול על מפתח Cloud KMS שצוין. פועלים לפי ההוראות שמופיעות בשגיאה או מעיינים במסמכים הבאים:

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

מפתח Cloud KMS שצוין הושמד. פועלים לפי ההוראות או מעיינים במסמכים הבאים:

זיהוי הפרויקט שמכיל את מפתח Cloud KMS

כדי לזהות את המזהה של Cloud de Confiance הפרויקט שמכיל את מפתח ההצפנה שמשמש קטגוריית יומנים, תיקייה או ארגון:

פרויקט

gcloud logging settings describe --project=PROJECT_ID

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

FOLDER

gcloud logging settings describe --folder=FOLDER_ID

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

ארגון

gcloud logging settings describe --organization=ORGANIZATION_ID

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

הפקודה הקודמת מחזירה מידע שדומה לזה:

kmsServiceAccountId: KMS_SERVICE_ACCT_NAME@gcp-sa-logging.s3ns-system.iam.gserviceaccount.com
loggingServiceAccountId: SERVICE_ACCT_NAME@gcp-sa-logging.s3ns-system.iam.gserviceaccount.com

במקרה של ארגונים ותיקיות, מוחזר גם השדה הבא:

kmsKeyName: projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KMS_KEY_RING/cryptoKeys/KEY

הערך בשדה kmsKeyName כולל את הפרויקט Cloud de Confiance שבו המפתח מאוחסן.

אימות השימושיות של המפתח

כדי לוודא שאפשר להשתמש במפתח, מריצים את הפקודה הבאה כדי להציג רשימה של כל המפתחות:

gcloud kms keys list \
--location=KMS_KEY_LOCATION \
--keyring=KMS_KEY_RING

הפקודה הזו מחזירה מידע על כל מפתח בפורמט טבלאי. השורה הראשונה של הפלט היא רשימה של שמות העמודות:

NAME PURPOSE ...

מוודאים שמפתח Cloud KMS מופיע בפלט של הפקודה בתור ENABLED, ושמטרת המפתח היא הצפנה סימטרית: בעמודה PURPOSE צריך להופיע ENCRYPT_DECRYPT ובעמודה PRIMARY_STATE צריך להופיע ENABLED.

אם צריך, יוצרים מפתח חדש.

אימות הגדרת ההרשאות

לחשבונות שירות שמשויכים להגדרות CMEK של הארגון צריך להיות התפקיד Cloud KMS CryptoKey Encrypter/Decrypter בשביל המפתח שהוגדר.

כדי להציג את מדיניות ה-IAM של המפתח, מריצים את הפקודה הבאה:

gcloud kms keys get-iam-policy KMS_KEY_NAME

אם צריך, מוסיפים למפתח את חשבון השירות שמכיל את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter.