ביצוע רוטציה למפתח ברמה הבסיסית (root)

במאמר הזה מוסבר איך להחליף מפתח בסיס. אם מפתח הבסיס נחשף, או אם אתם בוחרים להחליף את מפתחות הבסיס מדי פעם כדי לשפר את האבטחה, אתם יכולים להחליף את המפתחות למפתח בסיס חדש באמצעות המשאב RotationJob.

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

בסקירה הכללית על KMS API מפורטים פרטים על KMS API, וב-Key Management Service KRM API מופיעה ההגדרה המלאה של ה-API.

לפני שמתחילים

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

בקשת תפקידים ב-IAM

כדי להחליף מפתחות, צריך לבקש ממנהל החשבון הארגוני ב-IAM את התפקיד אדמין של משימות החלפה ב-KMS (kms-rotationjob-admin).

הכנת הסביבה

רוטציה של מפתח ברמה הבסיסית (root)

כדי להחליף מפתח בסיס, קודם צריך לזהות את שם המשאב של מפתח הבסיס שנמצא בשימוש. כדי למצוא את המידע הזה, אתם יכולים לבדוק כל משאב של AEADKey בפרויקט, כי כל המפתחות האלה מוגנים על ידי אותו מפתח ברמה הבסיסית (root).

יוצרים מפתח ברמה הבסיסית חדש ומחליפים את המפתחות:

  1. מציגים את משאבי AEADKey בפרויקט:

    kubectl get AEADKey -n PROJECT
    

    מחליפים את PROJECT בשם של מרחב השמות של הפרויקט.

    בפלט, מאתרים את השם של כל AEADKey.

  2. מורידים את ROOT_KEY_RESOURCE_NAME מ-AEADKey. הפקודה הבאה מחלצת את מזהה מפתח הבסיס שנדרש למשאב RotationJob ומשנה את הפורמט שלו:

    kubectl describe aeadkey KEY_NAME -n PROJECT | grep "Root Key ID:" | awk '{print $4}' | awk -F/ '{print "namespaces/" $1 "/secrets/" $2}'
    

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

    • ‫KEY_NAME: השם של כל AEADKey בפרויקט
    • ‫PROJECT: השם של מרחב השמות של הפרויקט

    הפלט אמור להיראות כך:

    namespaces/kms-system/secrets/kms-key-local-root
    
  3. יוצרים קובץ YAML ומוסיפים את המשאב RotationJob ואת התוכן הבא:

    apiVersion: "kms.gdc.goog/v1"
    kind: RotationJob
    metadata:
      name: ROTATION_NAME
    spec:
      rootKeyResourceName: ROOT_KEY_RESOURCE_NAME
    

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

    • ‫ROTATION_NAME: שם למשימת הרוטציה, לדוגמה: rotate-job1.
    • ‫ROOT_KEY_RESOURCE_NAME: הפלט שקיבלתם בשלב הקודם
  4. מחילים את התוכן של קובץ ה-YAML על ה-KMS:

    kubectl apply -f FILENAME.yaml
    

    מחליפים את FILENAME בשם של קובץ ה-YAML.

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

  5. כדי לוודא שרוטציית מפתח הבסיס הושלמה, מריצים את הפקודה הבאה:

    kubectl get rotationjobs ROTATION_NAME
    

    מחליפים את ROTATION_NAME בשם של משימת הרוטציה.

    אחרי הרצת הפקודה, אם הפעולה הצליחה, הסטטוס של משימת הרוטציה יהיה Completed.