במאמר הזה מוסבר איך לייבא ולייצא מפתחות של מערכת ניהול מפתחות (KMS). הפעולות האלה משתמשות בממשק שורת הפקודה (CLI) של kubectl ומקיימות אינטראקציה עם המשאבים הבאים ב-Kubernetes:
למידע נוסף על המשאבים האלה, קראו את הסקירה הכללית על KMS API.
בקטע מפתחות נתמכים במסמך של מערכת ניהול המפתחות מופיעה הרשימה המלאה של המפתחות שנתמכים ב-KMS ופרטים עליהם.
המסמך הזה מיועד למפעילי אפליקציות שמבצעים פעולות ניהול מפתחות ב-Google Distributed Cloud (GDC) עם air gap. מידע נוסף זמין במאמר קהלים למסמכי תיעוד של GDC עם air gap.
לפני שמתחילים
לפני שאתם מייבאים או מייצאים מפתחות, אתם צריכים לוודא שיש לכם את ההרשאות הנדרשות ולהכין את הסביבה.
בקשת תפקידים ב-IAM
פנו למנהל חשבון ארגוני של הארגון ב-IAM ובקשו ממנו להקצות לכם את התפקידים הבאים בפרויקט:
- אדמין של ייבוא מפתחות KMS (
kms-keyimport-admin): יצירה, עדכון ומחיקה של משאביKeyImport. - אדמין של ייצוא מפתחות KMS (
kms-keyexport-admin): יצירה, עדכון ומחיקה של משאביKeyExport.
הכנת הסביבה
יוצרים קובץ kubeconfig כדי להגדיר את הגישה ל-
kubectl.
ייבוא של מפתח שיוצא
כדי לייבא מפתח שיוצא, פועלים לפי השלבים הבאים:
יוצרים קובץ YAML ומוסיפים את המשאב
KeyImportכערך של האובייקטkind:apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: KEY_IMPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISMמחליפים את המשתנים הבאים:
- KEY_IMPORT_NAME: השם של המשאב
KeyImport– לדוגמה:key-import-test. - PROJECT: השם של מרחב השמות של הפרויקט, לדוגמה:
kms-test1. - MECHANISM: מנגנון שיתוף המפתחות של המפתח – לדוגמה: `EDCH_P521_AES256` .
- KEY_IMPORT_NAME: השם של המשאב
מחילים את התוכן של קובץ ה-YAML על ה-KMS ויוצרים את המשאב
KeyImport:kubectl apply -f FILENAME.yamlמחליפים את FILENAME בשם של קובץ ה-YAML.
באמצעות המפתח הציבורי של זוג מפתחות שנוצר באופן פנימי, ה-KMS מעדכן את הסטטוס של המשאב
KeyImportל-AwaitingKeyToImport. כדי להמשיך, צריך לבדוק את סטטוס המשאב ולקבל את המפתח הציבורי שנוצר על ידי KMS.כדי לראות את הסטטוס של המשאב
KeyImportולקבל את המפתח הציבורי שנוצר על ידי KMS, מריצים את הפקודה הבאה:kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECTמחליפים את המשתנים הבאים:
- KEY_IMPORT_NAME: שם המשאב של
KeyImport, לדוגמהkey-import-test. - PROJECT: השם של מרחב השמות של הפרויקט, לדוגמה:
kms-test1.
אחרי הרצת הפקודה, הפלט אמור להיראות כך:
... Status: Conditions: Last Transition Time: 2022-12-14T20:43:50Z Message: waiting for user to provide KeyToImport Observed Generation: 1 Reason: AwaitingKeyToImport Status: False Type: Ready Imported Key Ref: Kind: KeyImport Name: key-import-test Peer Context: Private Key: Public Key: PUBLIC_KEY Events: <none>הערך PUBLIC_KEY מייצג את המפתח הציבורי שנוצר על ידי KMS. מעתיקים את המפתח הציבורי ומוסיפים אותו למשאב
KeyExportבשלב הבא.- KEY_IMPORT_NAME: שם המשאב של
יוצרים קובץ YAML נוסף, מוסיפים את המשאב
KeyExportכערך של האובייקטkindואת התוכן הבא:apiVersion: "kms.gdc.goog/v1" kind: KeyExport metadata: name: KEY_EXPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM publicKey: PUBLIC_KEY keyToExport: kind: KEY_PRIMITIVE name: KEY_NAMEמחליפים את המשתנים הבאים:
- KEY_EXPORT_NAME: השם של המשאב
KeyExport– לדוגמה:key-export-test. PROJECT: השם של מרחב השמות של הפרויקט, לדוגמה:
kms-test1.MECHANISM: מנגנון שיתוף המפתחות של המפתח – לדוגמה: `EDCH_P521_AES256` .
PUBLIC_KEY: המפתח הציבורי מ-
keyImport.Status.PeerContext.PublicKey.KEY_PRIMITIVE: ה-CRD של המפתח, לדוגמה aeadkey ו-signingkey.
KEY_NAME: שם המפתח, לדוגמה
key-1.
- KEY_EXPORT_NAME: השם של המשאב
מחילים את התוכן של קובץ ה-YAML על ה-KMS ויוצרים את המשאב
KeyExport:kubectl apply -f FILENAME.yamlמחליפים את FILENAME בשם של קובץ ה-YAML.
אחרי הרצת הפקודה, ה-KMS מעדכן את הסטטוס של המשאב
KeyExportויוצר מפתח מיוצא. כדי לקבל את המפתח שיוצא, צריך לבדוק את סטטוס המשאב.כדי לראות את סטטוס המשאב, מריצים את הפקודה הבאה:
kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECTמחליפים את המשתנים הבאים:
- KEY_EXPORT_NAME: שם המשאב ב-
KeyExport, לדוגמהkey-export-test. - PROJECT: השם של מרחב השמות של הפרויקט, לדוגמה:
kms-test1.
אחרי שמריצים את הפקודה, הפלט אמור להיראות כך:
... Status: Conditions: Last Transition Time: 2022-12-14T20:45:57Z Message: key successfully exported Observed Generation: 1 Reason: KeyExportCompleted Status: True Type: Ready Exported Key: EXPORTED_KEYEXPORTED_KEY מייצג את המטא-נתונים של המפתח שיוצא. מעתיקים את התוכן של EXPORTED_KEY כדי להמשיך לשלב הבא.
- KEY_EXPORT_NAME: שם המשאב ב-
עורכים את קובץ ה-YAML שמכיל את המשאב
KeyImport, ומוסיפים את התוכן שהעתקתם מהפלט ב-keyexport.status.exportedkey.apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: key-import-test namespace: kms-test1 spec: context: mechanism: EDCH_P521_AES256 keyToImport: EXPORTED_KEYאחרי שעורכים את קובץ ה-YAML, מחילים את התוכן על ה-KMS:
kubectl apply -f FILENAME.yamlאחרי הרצת הפקודה, מערכת KMS מייבאת את המפתח שייצאתם.
כדי להציג פרטים על המפתח המיובא, מריצים את הפקודה הבאה:
kubectl get keyimport KEY_IMPORT_NAMEהפלט אמור להיראות כך:
NAMESPACE NAME AGE READY REASON KEY KIND kms-test1 KEY_IMPORT_NAME 60s True KeyImportCompleted KEY_PRIMITIVEKEY_PRIMITIVE מייצג את סוג המפתח שייבאתם, בין מפתחות AEAD למפתחות חתימה.