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

.

בדף הזה מוסבר איך להחליף את מפתחות ההצפנה של 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_READ Data Access מופעל ל-Cloud Key Management Service (KMS) API. למידע נוסף, קראו את המאמר הפעלת יומני הביקורת Data Access.

תפקידים והרשאות נדרשים

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

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

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

מגבלות

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

הקצאת תפקידי 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 ומישור הבקרה

  1. יוצרים גרסה חדשה של המפתח הראשי לדיסק האתחול ולמפתח ההצפנה של etcd:

    gcloud kms keys versions create \
        --key=KCP_DISK_KEY_NAME \
        --keyring=KEYRING_NAME \
        --location=LOCATION \
        --project=KEY_PROJECT_ID \
        --primary
    

    יכול להיות שיעברו עד 10 דקות עד שהשינויים יתעדכנו בפרויקט.

  2. מאתרים את גרסת התיקון הנוכחית של מישור הבקרה של האשכול:

    gcloud container clusters describe CLUSTER_NAME \
        --location=LOCATION \
        --format='value(currentMasterVersion)'
    

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

    • ‫CLUSTER_NAME: השם של אשכול GKE.
    • ‫LOCATION: המיקום של מישור הבקרה של אשכול GKE, למשל us-central1.
  3. לשדרג את מישור הבקרה של האשכול לאותה גרסה שכבר נמצאת בשימוש.

    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: מזהה הפרויקט של הפרויקט עם המפתחות.

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