בדף הזה מוסבר איך להחליף את מפתחות ההצפנה של etcd ושל דיסק האתחול של מישור הבקרה, שהגדרתם לשליטה במישור הבקרה של GKE. המסמך הזה מיועד למנהלי אשכולות ולמהנדסי אבטחה.
לפני שאתם קוראים את המאמר הזה, כדאי שתכירו את המושגים הבאים שקשורים לשליטה במישור הבקרה של GKE:
תכנון רוטציות מפתחות
במאמר הזה מוסבר איך להחליף את הרכיבים הבאים של פרטי הכניסה במישור הבקרה:
- מפתח ההצפנה של etcd ושל דיסקי האתחול של מישור הבקרה.
- מפתח ההצפנה לגיבוי הפנימי של etcd שמשמש את Google Cloud לתוכנית התאוששות מאסון (DR).
אתם יכולים גם להחליף את רשויות האישורים (CA) שמנוהלות על ידי הלקוח ואת מפתחות החתימה של חשבון השירות שאתם מגדירים באמצעות "שליטה במישור הבקרה של GKE". מידע נוסף מופיע במאמר רוטציה של מפתחות חתימה ורשויות אישורים במישור הבקרה בניהול הלקוח.
למפתחות ב-Cloud Key Management Service (Cloud KMS) אין תאריך תפוגה. אם בארגון שלכם יש דרישת אבטחה לרוטציית מפתחות, אתם צריכים להחליף את המפתחות באופן ידני. כדי לצמצם את ההפרעות לעומסי העבודה שפועלים, אל תגדירו רוטציית מפתחות אוטומטית למפתחות האלה.
כשמבצעים רוטציה של מפתחות ההצפנה לדיסקי אתחול במישור הבקרה ול-etcd, GKE יוצר דיסק חדש שמוצפן באמצעות המפתח החדש. באשכולות אזוריים, לפעולה הזו אין זמן השבתה בגלל מישור הבקרה המשוכפל. באשכולות אזוריים, מישור הבקרה לא יהיה זמין עד שהדיסק החדש יהיה זמין.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את Google Kubernetes Engine API. הפעלת Google Kubernetes Engine API
- כדי להשתמש ב-Google Cloud CLI למשימה הזו, מתקינים ואז מאתחלים את ה-CLI של gcloud. אם כבר התקנתם את ה-CLI של gcloud, הריצו את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שבגרסאות קודמות של ה-CLI של gcloud אי אפשר להריץ את הפקודות שבמסמך הזה.
אשכול קיים שמשתמש בדיסק אתחול של מישור הבקרה ובהצפנת etcd, ומריץ את GKE בגרסה 1.35.2-gke.1842000 ואילך.
מזהים את מזהי הפרויקטים של הפרויקטים הבאים ב- Google Cloud :
- פרויקט המפתח: הפרויקט שמכיל את המשאבים של Cloud KMS.
- Cluster project: הפרויקט שמכיל את אשכול GKE.
כדי לבצע את משימות האימות שבמסמך הזה, ודאו שיומן הביקורת של
DATA_READData Access מופעל ל-Cloud Key Management Service (KMS) API. למידע נוסף, קראו את המאמר הפעלת יומני הביקורת Data Access.
תפקידים והרשאות נדרשים
כדי לקבל את ההרשאות שדרושות לרוטציה של מפתחות ורשויות אישורים בניהול הלקוח, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM:
-
ניהול מפתחות או גרסאות של מפתחות: אדמין של Cloud KMS (
roles/cloudkms.admin) בפרויקט המפתחות -
הגדרת אשכולות לשימוש במפתחות חדשים: אדמין של אשכול Kubernetes Engine (
roles/container.clusterAdmin) בפרויקט של האשכול
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מגבלות
אתם יכולים לעדכן את האשכולות לגרסאות חדשות של מפתחות קיימים, אבל אתם לא יכולים לעדכן את האשכולות כך שישתמשו במפתחות חדשים לגמרי לפעולות ההצפנה האלה.
הקצאת תפקידי IAM לסוכן השירות של GKE
כדי להחליף את מפתחות ההצפנה של דיסקי האתחול ו-etcd, צריך להקצות את התפקיד משתמש במפתח קריפטוגרפי של Kubernetes Engine KMS (roles/container.cloudKmsKeyUser) במפתחות ההצפנה בפרויקט המפתחות לסוכן השירות של GKE בפרויקט האשכול:
gcloud kms keys add-iam-policy-binding KCP_DISK_KEY_NAME \
--keyring=KEYRING_NAME \
--location=LOCATION \
--member="serviceAccount:service-CLUSTER_PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
--role=roles/container.cloudKmsKeyUser \
--project=KEY_PROJECT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
KCP_DISK_KEY_NAME: השם של מפתח ההצפנה לדיסקים של דיסק אתחול ולדיסקים של etcd במישור הבקרה. -
KEYRING_NAME: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום של אוסף המפתחות ב- Google Cloud . המיקום צריך להיות זהה למיקום של האשכול. כדי לראות רשימה של אזורים, סננו לפי Region בטבלת המיקומים של Cloud KMS. -
CLUSTER_PROJECT_NUMBER: מספר הפרויקט של האשכול. -
KEY_PROJECT_ID: מזהה הפרויקט של הפרויקט עם המפתחות.
רוטציה של המפתח לדיסקים של אתחול etcd ומישור הבקרה
יוצרים גרסה חדשה של המפתח הראשי לדיסק האתחול ולמפתח ההצפנה של etcd:
gcloud kms keys versions create \ --key=KCP_DISK_KEY_NAME \ --keyring=KEYRING_NAME \ --location=LOCATION \ --project=KEY_PROJECT_ID \ --primaryיכול להיות שיעברו עד 10 דקות עד שהשינויים יתעדכנו בפרויקט.
מאתרים את גרסת התיקון הנוכחית של מישור הבקרה של האשכול:
gcloud container clusters describe CLUSTER_NAME \ --location=LOCATION \ --format='value(currentMasterVersion)'מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של אשכול GKE. -
LOCATION: המיקום של מישור הבקרה של אשכול GKE, למשלus-central1.
-
לשדרג את מישור הבקרה של האשכול לאותה גרסה שכבר נמצאת בשימוש.
gcloud container clusters upgrade CLUSTER_NAME \ --master \ --location=LOCATION \ --cluster-version=CONTROL_PLANE_VERSION \ --project=CLUSTER_PROJECT_IDמחליפים את מה שכתוב בשדות הבאים:
-
CONTROL_PLANE_VERSION: הגרסה של מישור הבקרה של האשכול מהפלט של השלב הקודם. -
CLUSTER_PROJECT_ID: מזהה הפרויקט של הפרויקט באשכול.
-
אחרי שפעולת השדרוג של מישור הבקרה מסתיימת, האשכול משתמש בגרסת המפתח החדשה כדי להצפין את דיסקי האתחול של מישור הבקרה ואת כל הדיסקים של etcd.
רוטציה של מפתח ההצפנה של הגיבוי הפנימי של etcd
בקטע הזה מוסבר איך להחליף את מפתח ההצפנה של הגיבוי הפנימי של etcd, שמשמש את Google Cloud למטרות תוכנית התאוששות מאסון. אפשר להגדיר רוטציה אוטומטית למפתח הזה, אבל אנחנו ממליצים לבצע רוטציה ידנית. אחרי הרוטציה של המפתח, האשכול משתמש בגרסת המפתח החדשה כדי להצפין גיבויים פנימיים חדשים של etcd.
הגיבויים הפנימיים של etcd משתמשים בגרסת המפתח הראשית ומתרחשים במרווחי הזמן הבאים:
- כל 30 דקות באשכולות אזוריים.
- כל 10 דקות לאשכולות במצב Autopilot ולאשכולות אזוריים במצב Standard.
אחרי שמחליפים את המפתח, אל תשביתו או תשמידו מיד את גרסת המפתח הקודמת. צריך להמתין עד שיעבור מספיק זמן כדי ש-GKE ייצור גיבויים פנימיים חדשים של etcd שמשתמשים בגרסת המפתח החדשה.
יוצרים גרסה חדשה של המפתח הראשי למפתח ההצפנה של הגיבוי הפנימי של etcd:
gcloud kms keys versions create \ --key=ETCD_BACKUP_KEY_NAME \ --keyring=KEYRING_NAME \ --location=LOCATION \ --project=KEY_PROJECT_ID \ --primaryמחליפים את מה שכתוב בשדות הבאים:
-
ETCD_BACKUP_KEY_NAME: השם של מפתח ההצפנה הפנימי של הגיבוי של etcd. -
KEYRING_NAME: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום של אוסף המפתחות ב- Google Cloud . המיקום צריך להיות זהה למיקום של האשכול. כדי לראות רשימה של אזורים, סננו לפי Region בטבלת המיקומים של Cloud KMS. -
KEY_PROJECT_ID: מזהה הפרויקט של הפרויקט עם המפתחות.
-