בדף הזה מוסבר איך להגדיר מפתחות הצפנה בניהול הלקוח (CMEK) עבור אשכול של שירות מנוהל של Google Cloud ל-Apache Kafka.
סקירה כללית של הצפנת הודעות
כברירת מחדל, בשירות המנוהל ל-Apache Kafka מתבצעת הצפנה של הודעות במנוחה באמצעות Google-owned and Google-managed encryption keys. לא נדרשת הגדרה נוספת.
אם אתם צריכים יותר שליטה במפתחות ההצפנה שמשמשים להגנה על נתונים במנוחה ב-שירות מנוהל ל-Apache Kafka, אתם יכולים להגדיר CMEK כשאתם יוצרים את האשכול. מפתחות CMEK הם מפתחות הצפנה שבבעלותכם. המפתחות מנוהלים ומאוחסנים ב-Cloud Key Management Service (Cloud KMS). כשמגדירים אשכול עם CMEK, השירות משתמש אוטומטית במפתח הזה כדי להצפין את כל נתוני האשכול במצב מנוחה. שימוש במפתח CMEK עלול להוביל לעלויות נוספות, בהתאם לדפוסי השימוש.
מפתח CMEK שמשויך לאשכול של שירות מנוהל ל-Apache Kafka הוא מפתח להצפנת מפתחות הצפנה (KEK). מפתח ה-KEK משמש להצפנה של מפתח להצפנת נתונים (DEK). לאחר מכן נעשה שימוש במפתח ה-DEK כדי לקרוא ולכתוב נתונים במנוחה בדיסקי אחסון מתמידים (persistent disk) שמצורפים למתווכים, ונתונים באחסון מדורג ב-Cloud Storage.
מכיוון שהמשאבים של השירות המנוהל ל-Apache Kafka הם אזוריים, מומלץ ליצור מפתחות CMEK באותו אזור שבו נמצא אשכול Kafka.
תפקידים והרשאות נדרשים
לחשבון השירות של שירות Kafka המנוהל צריכה להיות הרשאה להצפנה ולפענוח של נתונים באמצעות CMEK.
נותנים לחשבון השירות את התפקיד Cloud KMS Crypto Key Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) במפתח Cloud KMS:
gcloud kms keys add-iam-policy-binding KEY \
--keyring=KEY_RING \
--location=LOCATION \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka. \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter
מחליפים את מה שכתוב בשדות הבאים:
KEY: השם של המפתח.
KEY_RING: השם של אוסף המפתחות שבו נמצא המפתח.
LOCATION: המיקום ב-Cloud KMS של אוסף המפתחות.
PROJECT_NUMBER: מספר הפרויקט שלGoogle Cloud הפרויקט שמכיל את אשכול השירות המנוהל ל-Apache Kafka.
מידע נוסף על מתן תפקידים במפתח Cloud KMS זמין במאמר הקצאת תפקידים במשאב.
החלפת מפתחות
אי אפשר לשנות את המפתח שמשויך לאשכול. במקום זאת, אפשר לבצע רוטציה של מפתח על ידי יצירת גרסת מפתח חדשה והגדרתה כגרסה הראשית של המפתח.
בדיסקים שמצורפים למתווכים, ה-KEK החדש נכנס לתוקף רק אחרי שמפעילים מחדש את המתווך. אפשר לאלץ הפעלה מחדש מתגלגלת של ברוקרים על ידי עדכון הגדרת הקיבולת של אשכול. לדוגמה, אפשר לשנות את כמות ה-RAM של האשכול.
כל הקבצים החדשים של פלח המחיצה נכתבים לאחסון מדורג באמצעות גרסת המפתח הראשי החדשה. יכול להיות שיהיה עיכוב של כמה דקות אחרי שבוחרים גרסה חדשה של מפתח ראשי.
יומני ביקורת
Cloud KMS יוצר יומני ביקורת כשמפעילים או משביתים מפתחות, או כשמשתמשים בהם בשירות המנוהל ל-Apache Kafka כדי להצפין ולפענח הודעות. האפשרות הזו שימושית לניפוי באגים בפרסום או בזמינות של הצגת מודעות.
מזהי מפתחות של Cloud KMS מצורפים ליומני ביקורת של משאבי אשכולות בשירות מנוהל ל-Apache Kafka. השירות המנוהל ל-Apache Kafka לא כולל מידע אחר שקשור ל-Cloud KMS ביומני הביקורת.
השבתה והפעלה מחדש של CMEK
יש שתי דרכים להשבית את CMEK. בוחרים אחת מהשיטות הבאות:
משביתים את מפתח Cloud KMS ששייכתם לאשכול. הגישה הזו משפיעה על כל המשאבים ב-Cloud שמשויכים למפתח הזה.
מבטלים את התפקיד CryptoKey Encrypter/Decrypter של סוכן השירות של השירות המנוהל ל-Apache Kafka (
service-${PROJECT_NUMBER}@gcp-sa-managedkafka.) באמצעות ניהול זהויות והרשאות גישה (IAM). הגישה הזו משפיעה על כל האשכולות של השירות המנוהל ל-Apache Kafka בפרויקט ועל ההודעות שמוצפנות באמצעות CMEK.
למרות שאף אחת מהפעולות לא גורמת לביטול מיידי של הגישה, השינויים ב-IAM בדרך כלל מופצים מהר יותר.
מידע נוסף זמין במאמרים עקביות של משאבי Cloud KMS והפצת שינויים בגישה.
אם לשירות המנוהל ל-Apache Kafka אין גישה למפתח Cloud KMS, פרסום ההודעות והמסירה שלהן נכשלים עם שגיאות. כדי לחדש את ההצגה והפרסום, צריך לשחזר את הגישה למפתח Cloud KMS.
אחרי שמפתח Cloud KMS יהיה נגיש לשירות המנוהל ל-Apache Kafka, אפשר יהיה לפרסם תוך 12 שעות, ומסירת ההודעות תתחדש תוך שעתיים.
למרות שסביר להניח שהפסקות זמניות ב-Cloud KMS שנמשכות פחות מדקה לא ישבשו באופן משמעותי את הפרסום והמסירה, חוסר זמינות ממושך של Cloud KMS משפיע כמו ביטול מפתח.
מגבלות
אי אפשר לשנות את המפתח שמשויך לאשכול. במקום זאת, אפשר לבצע רוטציה של המפתח על ידי יצירת גרסאות חדשות.
אם משביתים גרסת מפתח לא ראשית, הדיסקים המקומיים ממשיכים לפעול ללא שינוי. כל ברוקר מוריד את מפתח ה-KEK החדש כשהוא מופעל מחדש. עם זאת, ל-Cloud Storage אין גישה לקבצי פלחים של נושאים שהוצפנו באמצעות הגרסה המקורית, ולכן יכול להיות שלא תהיה אפשרות להשתמש בהודעות מקבצי הפלחים האלה. יכול להיות שלא תוכלו להשתמש בנתונים ישנים יותר.
אם משביתים את הגרסה הראשית של מפתח, הברוקרים לא יכולים לכתוב קבצים חדשים של פלחים לאחסון מדורג, מה שמגדיל את השימוש בדיסק המקומי. בנוסף, הפעלה מחדש של הברוקר תיכשל. אתם יכולים להפעיל מחדש את האשכול באופן יזום בכל שלב, או שהעדכון יופעל על ידי השירות.
אם מסירים את הגישה למפתח מסוים מסוכן השירות של השירות המנוהל ל-Apache Kafka, ההתנהגות דומה למה שקורה אם משביתים גם את המפתח הראשי וגם את הגרסאות של המפתחות הלא ראשיים.
אם מוחקים מפתח, האשכול מתוזמן להשבתה ואי אפשר לשחזר אותו.
אי אפשר לבקש הצפנה מחדש של הנתונים שמאוחסנים במנוחה. מפתח ה-CMEK משמש כמפתח להצפנת מפתחות הצפנה (KEK), אבל הצפנה מחדש מחייבת שינוי במפתחות להצפנת נתונים.
המאמרים הבאים
מידע נוסף על הצפנה ב-Cloud Storage זמין במאמר בנושא מפתחות הצפנה בניהול הלקוח.