במאמר הזה מוסבר איך לייבא ולייצא מפתחות של מערכת לניהול מפתחות (KMS). הפעולות האלה משתמשות בממשק שורת הפקודה (CLI) של kubectl ומתקשרות עם משאבי Kubernetes הבאים:
לפרטים נוספים על המשאבים האלה, אפשר לעיין בסקירה הכללית על KMS API.
כדי לראות את הרשימה המלאה של מפתחות KMS נתמכים ואת הפרטים שלהם, אפשר לעיין בקטע מפתחות נתמכים במסמך בנושא מערכת לניהול מפתחות.
המסמך הזה מיועד לקהלים בקבוצת מפעילים של אפליקציות שמבצעים פעולות של ניהול מפתחות ב-Google Distributed Cloud (GDC) עם בידוד פיזי. למידע נוסף, אפשר לעיין במאמר בנושא קהלים ב-GDC עם air gap.
לפני שמתחילים
לפני שמייבאים או מייצאים מפתחות, צריך לוודא שיש את ההרשאות הנדרשות ולהכין את הסביבה.
שליחת בקשה לתפקידי IAM
צריך לפנות לאדמין ה-IAM בארגון ולבקש ממנו להקצות לכם את התפקידים הבאים בפרויקט:
- אדמין של ייבוא מפתחות KMS (
kms-keyimport-admin): יצירה, עדכון ומחיקה של משאביKeyImport. - KMS Key Export Admin (
kms-keyexport-admin): create, update, and deleteKeyExportresources.
הכנת הסביבה
יוצרים קובץ 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 למפתחות החתימה.