במאמר הזה מוסבר איך להחליף מפתח בסיס. אם מפתח הבסיס נחשף, או אם אתם בוחרים להחליף את מפתחות הבסיס מדי פעם כדי לשפר את האבטחה, אתם יכולים להחליף את המפתחות למפתח בסיס חדש באמצעות המשאב RotationJob.
כשמבצעים רוטציה של מפתח ברמה הבסיסית, נוצר מפתח חדש ברמה הבסיסית שהופך למפתח הראשי ועוטף את כל המפתחות שלא ברמה הבסיסית. אי אפשר למחוק מפתח ברמה הבסיסית (root), הדרך היחידה להחליף אותו היא באמצעות רוטציה. למידע נוסף על מפתחות בסיס, קראו את המאמר סוגי מפתחות בסיס.
בסקירה הכללית על KMS API מפורטים פרטים על KMS API, וב-Key Management Service KRM API מופיעה ההגדרה המלאה של ה-API.
לפני שמתחילים
לפני שאתם מחליפים מפתח בסיס, אתם צריכים לוודא שיש לכם את ההרשאות הנדרשות ולהכין את הסביבה.
בקשת תפקידים ב-IAM
כדי להחליף מפתחות, צריך לבקש ממנהל החשבון הארגוני ב-IAM את התפקיד אדמין של משימות החלפה ב-KMS (kms-rotationjob-admin).
הכנת הסביבה
יוצרים קובץ kubeconfig כדי להגדיר את הגישה ל-
kubectl.
רוטציה של מפתח ברמה הבסיסית (root)
כדי להחליף מפתח בסיס, קודם צריך לזהות את שם המשאב של מפתח הבסיס שנמצא בשימוש. כדי למצוא את המידע הזה, אתם יכולים לבדוק כל משאב של AEADKey בפרויקט, כי כל המפתחות האלה מוגנים על ידי אותו מפתח ברמה הבסיסית (root).
יוצרים מפתח ברמה הבסיסית חדש ומחליפים את המפתחות:
מציגים את משאבי
AEADKeyבפרויקט:kubectl get AEADKey -n PROJECTמחליפים את
PROJECTבשם של מרחב השמות של הפרויקט.בפלט, מאתרים את השם של כל
AEADKey.מורידים את
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-
יוצרים קובץ 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: הפלט שקיבלתם בשלב הקודם
-
מחילים את התוכן של קובץ ה-YAML על ה-KMS:
kubectl apply -f FILENAME.yamlמחליפים את FILENAME בשם של קובץ ה-YAML.
אחרי שמריצים את הפקודה, ה-KMS יוצר מפתח שורש חדש ומבצע רוטציה של כל מפתח עם מפתח השורש החדש.
כדי לוודא שרוטציית מפתח הבסיס הושלמה, מריצים את הפקודה הבאה:
kubectl get rotationjobs ROTATION_NAMEמחליפים את ROTATION_NAME בשם של משימת הרוטציה.
אחרי הרצת הפקודה, אם הפעולה הצליחה, הסטטוס של משימת הרוטציה יהיה
Completed.