יצירה ומחיקה של מפתחות

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

הדף הזה מיועד לקהלים בקבוצת מפעילים של אפליקציות, כמו צוותי DevOps, שמבצעים פעולות של ניהול מפתחות ב-Google Distributed Cloud‏ (GDC) עם בידוד פיזי. מידע נוסף מופיע במאמרי העזרה בנושא קהלים ב-GDC עם פער אבטחה.

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

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

שליחת בקשה לתפקידי IAM

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

  • KMS Creator (kms-creator): הרשאה להצגה וליצירה של משאבי AEADKey ו-SigningKey בתוך פרויקט.
  • KMS Admin (kms-admin): צפייה במפתחות, יצירה ומחיקה שלהם בתוך פרויקט.

הכנת הסביבה

  1. מתקינים ומפעילים את CLI של gcloud, אם עוד לא עשיתם זאת.

  2. מבצעים אימות ל-GDC באמצעות ה-CLI של gdcloud. התהליך הזה מחייב את אישור רשות האישורים (CA) של הקונסולה של הארגון:

    1. מורידים את אישור ה-CA:

      echo -n | openssl s_client -showcerts -connect CONSOLE_URL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > CA_CERT_PATH
      

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

      • CONSOLE_URL: כתובת ה-URL של המסוף של הארגון (למשל console.org-1.zone1.google.gdch.test)
      • CA_CERT_PATH: הנתיב המלא שבו רוצים לשמור את קובץ אישור ה-CA (לדוגמה, /tmp/my-org-ca.crt)
    2. נכנסים באמצעות אישור ה-CA שהורד:

      gdcloud auth login --login-config-cert=CA_CERT_PATH
      
  3. מקבלים קובץ kubeconfig לשרת Management API באמצעות gdcloud CLI.

יצירת מפתח

אפשר ליצור מפתחות למטרות קריפטוגרפיות שונות.

יצירה של מפתח AEAD

כדי לבצע הצפנה מאומתת עם נתונים משויכים (AEAD), צריך ליצור משאב AEADKey במרחב השמות של הפרויקט:

kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: AEADKey
metadata:
  name: KEY_NAME
  namespace: PROJECT
spec:
  algorithm: AES_256_GCM
EOF

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

  • KUBECONFIG_PATH: הנתיב לקובץ kubeconfig של שרת Management API
  • KEY_NAME: שם למפתח ה-AEAD שרוצים ליצור לדוגמה: key-1
  • PROJECT: שם הפרויקט לדוגמה: kms-test1

יצירת מפתח חתימה

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

kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: SigningKey
metadata:
  name: KEY_NAME
  namespace: PROJECT
spec:
  algorithm: EC_SIGN_P384_SHA384
EOF

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

  • KUBECONFIG_PATH: הנתיב לקובץ kubeconfig של שרת Management API
  • KEY_NAME: שם מפתח החתימה שרוצים ליצור, לדוגמה: key-1
  • PROJECT: שם הפרויקט לדוגמה: kms-test1

אימות יצירת המפתח

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

אימות של יצירת מפתח AEAD

כדי לבדוק את הסטטוס של מפתח AEAD:

kubectl --kubeconfig KUBECONFIG_PATH \
  get aeadkey KEY_NAME \
  --namespace=PROJECT -o yaml

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

  • KUBECONFIG_PATH: הנתיב לקובץ kubeconfig של שרת Management API
  • KEY_NAME: השם של מפתח AEAD שרוצים לאמת לדוגמה: key-1
  • PROJECT: שם הפרויקט לדוגמה: kms-test1

אם יצירת המפתח הצליחה, בודקים את הפלט כדי לראות אם יש ReadyתנאיTrue עם סטטוס True.

אימות של יצירת מפתח חתימה

כדי לבדוק את הסטטוס של מפתח חתימה:

kubectl --kubeconfig KUBECONFIG_PATH \
  get signingkey KEY_NAME \
  --namespace=PROJECT -o yaml

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

  • KUBECONFIG_PATH: הנתיב לקובץ kubeconfig של שרת Management API
  • KEY_NAME: השם של מפתח החתימה שרוצים לאמת, לדוגמה: key-1
  • PROJECT: שם הפרויקט לדוגמה: kms-test1

אם יצירת המפתח הצליחה, בודקים את הפלט כדי לראות אם יש ReadyתנאיTrue עם סטטוס True.

מחיקת מפתח

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

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

    kubectl --kubeconfig KUBECONFIG_PATH \
      delete KEY_PRIMITIVE KEY_NAME \
      --namespace=PROJECT
    

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

    • KUBECONFIG_PATH: הנתיב לקובץ kubeconfig של שרת Management API
    • KEY_PRIMITIVE: סוג משאב המפתח שרוצים למחוק, כמו aeadkey למפתח AEAD או signingkey למפתח חתימה
    • KEY_NAME: השם של המפתח שרוצים למחוק, לדוגמה: key-1.
    • PROJECT: שם הפרויקט, לדוגמה: kms-test1.
  2. כדי לוודא שהמפתח נמחק, מנסים לאחזר אותו:

    kubectl --kubeconfig KUBECONFIG_PATH \
      get KEY_PRIMITIVE  KEY_NAME \
      --namespace=PROJECT
    

    אם המפתח נמחק בהצלחה, הפקודה לא תחזיר את אובייקט המפתח.