במדריך הזה נסביר איך לייבא מפתח קריפטוגרפי ל-Cloud HSM או ל-Cloud Key Management Service כגרסה חדשה של מפתח.
מידע נוסף על ייבוא מפתחות, כולל מגבלות והגבלות, מופיע במאמר בנושא ייבוא מפתחות.
אפשר להשלים את השלבים במדריך הזה תוך 5 עד 10 דקות, לא כולל השלבים שבקטע לפני שמתחילים. הצפנה ידנית של המפתח מוסיפה מורכבות למשימה.
לפני שמתחילים
מומלץ ליצור פרויקט חדש כדי לבדוק את התכונה הזו, כדי להקל על הניקוי אחרי הבדיקה וכדי לוודא שיש לכם הרשאות מספיקות לניהול זהויות והרשאות גישה (IAM) לייבוא מפתח.
כדי לייבא מפתח, צריך להכין את הפרויקט, את המערכת המקומית ואת המפתח עצמו.
הכנת הפרויקט
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
למשתמש שמבצע את הייבוא צריכות להיות ההרשאות הבאות ב-IAM כדי ליצור אוספי מפתחות, מפתחות ועבודות ייבוא. אם המשתמש לא מוגדר כבעלים של הפרויקט, אפשר להקצות לו את שני התפקידים המוגדרים מראש הבאים:
roles/editorroles/cloudkms.importer
מידע נוסף על ההרשאות והתפקידים הזמינים ב-IAM ל-Cloud KMS מופיע במאמר הרשאות ותפקידים.
הכנת המערכת המקומית
בוחרים אחת מהאפשרויות הבאות כדי להכין את המערכת המקומית. מומלץ להשתמש בעטיפת מפתח אוטומטית ברוב המקרים.
- אם רוצים לאפשר ל-Google Cloud CLI לעטוף את המפתחות באופן אוטומטי לפני שידור שלהם אל Google Cloud, צריך להתקין את ספריית הקריפטוגרפיה Pyca במערכת המקומית. ספריית Pyca משמשת את עבודת הייבוא שעוטפת ומגנה על המפתח באופן מקומי לפני שליחתו אל Google Cloud.
- אם רוצים לעטוף את המפתחות באופן ידני, צריך להגדיר את OpenSSL לעטיפת מפתחות ידנית.
הכנת המפתח
מוודאים שהאלגוריתם והאורך של המפתח נתמכים. האלגוריתמים המותרים למפתח תלויים בשימוש במפתח – להצפנה סימטרית, להצפנה אסימטרית או לחתימה אסימטרית – וגם במיקום האחסון של המפתח – בתוכנה או ב-HSM. מציינים את האלגוריתם של המפתח כחלק מבקשת הייבוא.
בנוסף, צריך גם לאמת את אופן הקידוד של המפתח ולבצע התאמות אם צריך.
אחרי שיוצרים או מייבאים גרסת מפתח, אי אפשר לשנות את הפרטים הבאים:
רמת ההגנה מציינת אם המפתח נשמר בתוכנה, ב-HSM מרובה-דיירים, ב-HSM של דייר יחיד או במערכת חיצונית לניהול מפתחות. אי אפשר להעביר חומר מפתח מאחת מסביבות האחסון האלה לאחרת. לכל הגרסאות של מפתח יש את אותה רמת הגנה.
המטרה מציינת אם גרסאות המפתח משמשות להצפנה סימטרית, להצפנה אסימטרית או לחתימה אסימטרית. המטרה של המפתח מגבילה את האלגוריתמים האפשריים שאפשר להשתמש בהם כדי ליצור גרסאות של המפתח הזה. לכל הגרסאות של מפתח יש אותה מטרה.
אם אין לכם מפתח לייבוא אבל אתם רוצים לאמת את התהליך של ייבוא מפתחות, אתם יכולים ליצור מפתח סימטרי במערכת המקומית באמצעות הפקודה הבאה:
openssl rand 32 > ${HOME}/test.bin
השתמשו במפתח הזה לבדיקה בלבד. יכול להיות שמפתח שנוצר בדרך הזו לא מתאים לשימוש בייצור.
אם אתם צריכים לעטוף את המפתח באופן ידני, עליכם לעשות זאת לפני שתמשיכו בהליכים שמתוארים במדריך הזה.
יצירת מפתח יעד ואוסף מפתחות
מפתח Cloud KMS הוא אובייקט קונטיינר שמכיל אפס גרסאות מפתח או יותר. כל גרסת מפתח מכילה מפתח קריפטוגרפי.
כשמייבאים מפתח ל-Cloud KMS או ל-Cloud HSM, המפתח המיובא הופך לגרסת מפתח חדשה במפתח קיים ב-Cloud KMS או ב-Cloud HSM. בהמשך המדריך הזה, המפתח הזה נקרא מפתח היעד. מפתח היעד חייב להתקיים לפני שניתן לייבא אליו חומר מפתח.
ייבוא של גרסת מפתח לא משפיע על הגרסאות הקיימות של המפתח. עם זאת, מומלץ ליצור מפתח ריק כשבודקים ייבוא מפתח. למפתח ריק אין גרסה, הוא לא פעיל ואי אפשר להשתמש בו.
אפשר גם לציין שהמפתח החדש שנוצר יכיל רק גרסאות מיובאות, כדי למנוע יצירה לא מכוונת של גרסאות חדשות ב-Cloud KMS.
מפתח קיים באוסף מפתחות. במדריך הזה, אוסף המפתחות הזה נקרא אוסף מפתחות היעד. המיקום של מחזיק המפתחות של היעד קובע את המיקום שבו חומר המפתח יהיה זמין אחרי הייבוא. אי אפשר ליצור או לייבא מפתחות Cloud HSM בחלק מהמיקומים. אחרי שיוצרים מפתח, אי אפשר להעביר אותו למחזיק מפתחות או למיקום אחר.
כדי ליצור מפתח ריק בצרור מפתחות חדש באמצעות Google Cloud CLI או מסוף Google Cloud , פועלים לפי השלבים הבאים.
המסוף
נכנסים לדף Key Management במסוף Google Cloud .
לוחצים על Create key ring (יצירת מחזיק מפתחות).
בשדה Key ring name (שם אוסף המפתחות), מזינים את השם של אוסף המפתחות.
בקטע Location type, בוחרים סוג מיקום ומיקום.
לוחצים על יצירה. ייפתח הדף Create key.
בשדה שם המפתח, מזינים את השם של המפתח.
בשדה רמת הגנה, בוחרים באפשרות תוכנה, HSM או HSM עם דייר יחיד.
אם בחרתם באפשרות Single-tenant HSM, בוחרים את המופע של Single-tenant HSM שבו רוצים ליצור את המפתח.
בקטע Key material (חומר מפתח), בוחרים באפשרות Imported key (מפתח מיובא) ולוחצים על Continue (המשך). כך נמנעת יצירה של גרסת מפתח ראשונית.
מגדירים את המטרה ואת האלגוריתם של המפתח ולוחצים על המשך.
אופציונלי: אם רוצים שהמפתח הזה יכיל רק גרסאות מפתח מיובאות, בוחרים באפשרות הגבלת גרסאות המפתח לייבוא בלבד. כך לא תוכלו ליצור בטעות גרסאות מפתח חדשות ב-Cloud KMS.
אופציונלי: במפתחות מיובאים, הרוטציה האוטומטית מושבתת כברירת מחדל. כדי להפעיל רוטציית מפתחות אוטומטית, בוחרים ערך בשדה תקופת רוטציית מפתחות.
אם מפעילים רוטציה אוטומטית, גרסאות מפתח חדשות ייווצרו ב-Cloud KMS, וגרסת המפתח המיובאת לא תהיה יותר גרסת המפתח שמוגדרת כברירת מחדל אחרי הרוטציה.
לוחצים על יצירה.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
יוצרים את אוסף מפתחות היעד. בוחרים מיקום שתואם לרמת ההגנה שבה רוצים להשתמש. מידע נוסף על המיקומים הנתמכים מופיע במאמר מיקומים ב-Cloud KMS.
gcloud kms keyrings create KEY_RING \ --location LOCATION
יוצרים את מפתח היעד באמצעות הפקודה
kms keys createעם הדגל--skip-initial-version-creation. כך נוצר מפתח ללא גרסת מפתח ראשונית, וחומר המפתח שיובא הוא גרסה1. משתמשים בדגל--import-onlyכדי למנוע מ-Cloud KMS ליצור חומר מפתח לגרסאות חדשות של מפתחות. אם הדגל הזה מוגדר, צריך לייבא גרסאות חדשות של המפתח הזה. מפתחות שנוצרו כ---import-onlyחייבים להיות מוחלפים ידנית.gcloud kms keys create KEY_NAME \ --location LOCATION \ --keyring KEY_RING \ --purpose PURPOSE \ --protection-level PROTECTION_LEVEL \ --skip-initial-version-creation \ --import-only
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_NAME: השם שרוצים להשתמש בו עבור המפתח. -
LOCATION: המיקום של אוסף המפתחות. -
KEY_RING: מחזיק המפתחות שבו רוצים ליצור את המפתח. -
PURPOSE: המטרה שלשמה רוצים להשתמש במפתח. -
PROTECTION_LEVEL: רמת ההגנה שרוצים להשתמש בה עבור המפתח, לדוגמהHSM.
כדי ליצור מפתח Cloud HSM בדייר יחיד, מוסיפים את הדגל
--cryptoKeyBackendלפקודה הזו ומוסיפים את מזהה המשאב של מופע Cloud HSM בדייר יחיד שאליו רוצים לייבא את המפתח:--crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
-
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
יצירת אוסף מפתחות חדש:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?keyRingId=KEY_RING" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --header "x-goog-user-project: PROJECT_ID" \ --data "{}"מידע נוסף מופיע במאמרי העזרה של
KeyRing.createAPI.יצירה של מפתח ריק לייבוא בלבד:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?cryptoKeyId=KEY_NAME&skipInitialVersionCreation=true" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --header "x-goog-user-project: PROJECT_ID" \ --data "{"purpose":"PURPOSE", "importOnly": "true", "versionTemplate":{"protectionLevel":"PROTECTION_LEVEL","algorithm":"ALGORITHM"}}"מידע נוסף מופיע במאמרי העזרה של
CryptoKey.createAPI. אם רוצים ליצור את המפתח ב-Cloud HSM עם דייר יחיד, מוסיפים את השדהcryptoKeyBackendלגוף הפקודה ומוסיפים את מזהה המשאב של מופע Cloud HSM עם דייר יחיד שאליו רוצים לייבא את המפתח:"crypto-key-backend": "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
מחזיק המפתחות והמפתח קיימים עכשיו, אבל המפתח לא מכיל חומר מפתח, אין לו גרסה והוא לא פעיל. בשלב הבא יוצרים משימת ייבוא.
יצירת משימת ייבוא
משימת ייבוא מגדירה את המאפיינים של המפתחות שהיא מייבאת, כולל מאפיינים שלא ניתן לשנות אחרי ייבוא המפתח.
רמת ההגנה מגדירה אם המפתחות שיובאו באמצעות עבודת הייבוא הזו יאוחסנו בתוכנה, ב-HSM מרובה-דיירים, ב-HSM של דייר יחיד או במערכת חיצונית לניהול מפתחות. אחרי שמבצעים ייבוא של המפתח, אי אפשר לשנות את רמת ההגנה.
שיטת הייבוא מגדירה את האלגוריתם שמשמש ליצירת מפתח האריזה שמגן על המפתחות המיובאים במהלך ההעברה מהמערכת המקומית לפרויקט היעד Google Cloud . אפשר לבחור מפתח RSA של 3,072 ביט או של 4,096 ביט. אלא אם יש לכם דרישות ספציפיות, מומלץ להשתמש במפתח העוטף באורך 3,072 ביט.
אפשר ליצור משימת ייבוא באמצעות ה-CLI של gcloud,Google Cloud מסוף Google Cloud או Cloud Key Management Service API.
המסוף
נכנסים לדף Key Management במסוף Google Cloud .
לוחצים על השם של אוסף מפתחות היעד.
מגדירים את רמת ההגנה לתוכנה, ל-HSM או ל-HSM עם דייר יחיד. משתמשים באותה רמת הגנה שהגדרתם למפתח היעד.
לוחצים על יצירת פעולת ייבוא.
בשדה שם, מזינים את השם של עבודת הייבוא.
בתפריט הנפתח Import method (שיטת ייבוא), בוחרים באפשרות 3072 bit RSA (מפתח RSA של 3,072 ביט) או 4096 bit RSA (מפתח RSA של 4,096 ביט).
לוחצים על יצירה.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
כדי ליצור משימת ייבוא, משתמשים בפקודה כמו זו שבהמשך.
gcloud kms import-jobs create IMPORT_JOB \ --location LOCATION \ --keyring KEY_RING \ --import-method IMPORT_METHOD \ --protection-level PROTECTION_LEVEL
- משתמשים באותו מחזיק מפתחות ובאותו מיקום כמו מפתח היעד.
- מגדירים את רמת ההגנה לאותו ערך שבו השתמשתם עבור מפתח היעד.
- מגדירים את שיטת הייבוא לאחת מהאפשרויות הבאות:
rsa-oaep-3072-sha1-aes-256rsa-oaep-4096-sha1-aes-256rsa-oaep-3072-sha256-aes-256rsa-oaep-4096-sha256-aes-256rsa-oaep-3072-sha256rsa-oaep-4096-sha256
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
כדי ליצור משימת ייבוא, משתמשים בשיטה ImportJobs.create:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/importJobs?import_job_id=IMPORT_JOB_ID" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"import_method": "IMPORT_METHOD", "protection_level": "PROTECTION_LEVEL"}'
מחליפים את מה שכתוב בשדות הבאים:
- IMPORT_METHOD: שיטת עטיפת מפתח נתמכת.
- PROTECTION_LEVEL: רמת ההגנה של גרסאות המפתח שיובאו על ידי עבודת הייבוא הזו.
בדיקת הסטטוס של משימת הייבוא
הסטטוס ההתחלתי של משימת ייבוא הוא PENDING_GENERATION. כשהמצב הוא ACTIVE, אפשר להשתמש בו כדי לייבא מפתחות.
התוקף של עבודת ייבוא יפוג אחרי שלושה ימים. אם תוקף משימת הייבוא פג, צריך ליצור משימה חדשה.
אפשר לבדוק את הסטטוס של עבודת ייבוא באמצעות Google Cloud CLI, מסוףGoogle Cloud או Cloud Key Management Service API.
המסוף
נכנסים לדף Key Management במסוף Google Cloud .
לוחצים על השם של אוסף המפתחות שמכיל את עבודת הייבוא.
לוחצים על הכרטיסייה Import Jobs (פעולות ייבוא) בחלק העליון של הדף.
הסטטוס יופיע מתחת לסטטוס לצד השם של עבודת הייבוא.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
כשמשימת ייבוא פעילה, אפשר להשתמש בה כדי לייבא מפתחות. הפעולה הזו עשויה להימשך כמה דקות. משתמשים בפקודה הזו כדי לוודא שמשימת הייבוא פעילה. משתמשים במיקום ובמחזיק המפתחות שבהם יצרתם את עבודת הייבוא.
gcloud kms import-jobs describe IMPORT_JOB \ --location LOCATION \ --keyring KEY_RING \ --format="value(state)"
הפלט אמור להיראות כך:
state: ACTIVE
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
כדי לבדוק את הסטטוס של משימת ייבוא, משתמשים בשיטה ImportJobs.get:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/importJobs/IMPORT_JOB_ID" \
--request "GET" \
--header "authorization: Bearer TOKEN"
ברגע שעבודת הייבוא פעילה, אפשר לשלוח בקשה לייבוא מפתח.
מניעת שינוי של משימות ייבוא
עבודת הייבוא קובעת מאפיינים רבים של המפתח המיובא, כולל האלגוריתם של המפתח והאם מדובר במפתח HSM או במפתח תוכנה. אתם יכולים להגדיר הרשאות IAM כדי למנוע מהמשתמשים ליצור משימות ייבוא, אבל לאפשר להם להשתמש במשימות ייבוא כדי לייבא מפתחות.
- מומלץ להעניק את ההרשאה
importjobs.createרק לאדמינים מרכזיים. - נותנים את ההרשאה
importjobs.useToImportלמפעיל שישתמש במשימת הייבוא כדי לייבא מפתחות. - כשיוצרים את עבודת הייבוא, מציינים את רמת ההגנה ואת האלגוריתם של גרסאות המפתח שמייבאים באמצעותה.
עד שתוקף משימת הייבוא יפוג, משתמשים שיש להם הרשאה importjobs.useToImport אבל אין להם הרשאה importjobs.create למשימת ייבוא מסוימת יכולים לייבא מפתחות, אבל לא יכולים לשנות את המאפיינים של משימת הייבוא.
ייבוא המפתח
אחרי בדיקת הסטטוס של משימת הייבוא, אפשר לשלוח בקשת ייבוא.
משתמשים בדגלים שונים כדי לשלוח את בקשת הייבוא, בהתאם לשאלה אם רוצים ש-Google Cloud CLI יעטוף את המפתח באופן אוטומטי או אם כבר עטפתם את המפתח באופן ידני.
בין אם עטפתם את המפתח באופן ידני או אוטומטי, אתם צריכים להגדיר את האלגוריתם לאלגוריתם נתמך שתואם לאורך המפתח בפועל שאתם רוצים לייבא, ולציין את מטרת המפתח.
מפתחות עם המטרה
ENCRYPT_DECRYPTמשתמשים באלגוריתםgoogle-symmetric-encryption, והאורך שלהם הוא 32.מפתחות עם המטרה
ASYMMETRIC_DECRYPTאוASYMMETRIC_SIGNתומכים במגוון אלגוריתמים ואורכים.אי אפשר לשנות את המטרה של מפתח אחרי שיוצרים אותו, אבל אפשר ליצור גרסאות עוקבות של המפתח באורכים שונים מאלה של גרסת המפתח הראשונית.
הוספה וייבוא אוטומטיים של מפתח
אם רוצים להשתמש בהוספת שורות אוטומטית, צריך להשתמש ב-Google Cloud CLI.
משתמשים בפקודה כמו זו שבהמשך. מגדירים את --target-key-file למיקום של המפתח הלא עטוף כדי לעטוף ולייבא אותו. לא להגדיר את --wrapped-key-file.
אפשר להגדיר את הדגל --public-key-file למיקום שבו המפתח הציבורי כבר הורד. כשמייבאים מספר גדול של מפתחות, האפשרות הזו מונעת את ההורדה של המפתח הציבורי במהלך כל ייבוא. לדוגמה, אפשר לכתוב סקריפט שיוריד את המפתח הציבורי פעם אחת, ואז יספק את המיקום שלו כשמייבאים כל מפתח.
gcloud kms keys versions import \
--import-job IMPORT_JOB \
--location LOCATION \
--keyring KEY_RING \
--key KEY_NAME \
--algorithm ALGORITHM \
--target-key-file PATH_TO_UNWRAPPED_KEY
המפתח נארז על ידי מפתח האריזה שמשויך לעבודת הייבוא, מועבר אל Google Cloudומיובא כגרסת מפתח חדשה במפתח היעד.
ייבוא של מפתח שעטוף באופן ידני
בקטע הזה מוסבר איך לייבא מפתח שעטפתם באופן ידני. מגדירים את --wrapped-key-file למיקום של המפתח שעטפתם באופן ידני.
לא להגדיר את --target-key-file.
אפשר להגדיר את הדגל --public-key-file למיקום שבו המפתח הציבורי כבר הורד. כשמייבאים מספר גדול של מפתחות, האפשרות הזו מונעת את ההורדה של המפתח הציבורי במהלך כל ייבוא. לדוגמה, אפשר לכתוב סקריפט שיוריד את המפתח הציבורי פעם אחת, ואז יספק את המיקום שלו כשמייבאים כל מפתח.
המסוף
פותחים את הדף Key Management במסוףGoogle Cloud .
לוחצים על השם של אוסף המפתחות שמכיל את עבודת הייבוא. מפתח היעד מוצג, יחד עם כל המפתחות האחרים בצרור המפתחות.
לוחצים על השם של מפתח היעד ואז על ייבוא גרסת מפתח.
בוחרים את משימת הייבוא מהתפריט הנפתח בחירת משימת ייבוא.
בבורר Upload the wrapped key, בוחרים את המפתח שכבר עטפתם.
אם מייבאים מפתח אסימטרי, בוחרים את האלגוריתם מהתפריט הנפתח Algorithm (אלגוריתם). הדף ייבוא גרסת מפתח אמור להיראות כך:

לוחצים על Import.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
משתמשים בפקודה כמו זו שבהמשך.
gcloud kms keys versions import \ --import-job IMPORT_JOB \ --location LOCATION \ --keyring KEY_RING \ --key KEY_NAME \ --algorithm ALGORITHM \ --wrapped-key-file PATH_TO_WRAPPED_KEY
מידע נוסף זמין בפלט של הפקודה gcloud kms keys versions import --help.
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
משתמשים ב-method cryptoKeyVersions.import כדי לייבא מפתח.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME/cryptoKeyVersions:import" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"importJob": "IMPORT_JOB_ID", "algorithm": "ALGORITHM", "wrappedKey": "WRAPPED_KEY"}'
מחליפים את מה שכתוב בשדות הבאים:
IMPORT_JOB_ID: שם המשאב המלא של עבודת הייבוא המתאימה.
ALGORITHM:
algorithmשל המפתח שמייבאים, שהוא מסוגCryptoKeyVersionAlgorithm.WRAPPED_KEY: המפתח שעטפתם באופן ידני בפורמט base64.
הבקשה לייבוא המפתח נשלחת. אפשר לעקוב אחרי הסטטוס שלו.
בדיקת המצב של גרסת המפתח המיובאת
המצב הראשוני של גרסת מפתח מיובאת הוא PENDING_IMPORT. כשהמצב הוא ENABLED, גרסת המפתח יובאה בהצלחה. אם הייבוא נכשל, הסטטוס הוא IMPORT_FAILED.
אפשר לבדוק את הסטטוס של בקשת ייבוא באמצעות Google Cloud CLI,Google Cloud המסוף או Cloud Key Management Service API.
המסוף
פותחים את הדף Key Management במסוףGoogle Cloud .
לוחצים על השם של אוסף המפתחות שמכיל את עבודת הייבוא.
לוחצים על הכרטיסייה Import Jobs (פעולות ייבוא) בחלק העליון של הדף.
הסטטוס יופיע מתחת לסטטוס לצד השם של עבודת הייבוא.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
משתמשים בפקודה versions list כדי לבדוק את המצב. משתמשים באותו מיקום, באותו אוסף מפתחות יעד ובאותו מפתח יעד שיצרתם קודם בנושא הזה.
gcloud kms keys versions list \ --keyring KEY_RING \ --location LOCATION \ --key KEY_NAME
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
מבצעים קריאה ל-ImportJob.get ובודקים את השדה state. אם הערך של state הוא PENDING_GENERATION, משימת הייבוא עדיין בתהליך יצירה.
בודקים מחדש את הסטטוס מדי פעם עד שהוא משתנה ל-ACTIVE.
אחרי שמייבאים את גרסת המפתח הראשונית, הסטטוס של המפתח משתנה לפעיל. לפני שמשתמשים במפתחות סימטריים, צריך להגדיר את גרסת המפתח המיובאת כגרסה הראשית.
מפתחות סימטריים: הגדרת הגרסה הראשית
השלב הזה נדרש כשמייבאים מפתחות סימטריים, והוא לא רלוונטי למפתחות אסימטריים. למפתח אסימטרי אין גרסה ראשית. צריך להשתמש ב-Google Cloud CLI כדי להגדיר את הגרסה הראשית.
gcloud kms keys set-primary-version KEY_NAME\
--location=LOCATION\
--keyring=KEY_RING\
--version=KEY_VERSION
ייבוא מחדש של מפתח שהושמד בעבר
Cloud Key Management Service תומך בייבוא מחדש של מפתחות, שמאפשר לשחזר גרסת מפתח שיוצאה בעבר במצב DESTROYED או IMPORT_FAILED למצב ENABLED על ידי אספקת חומר המפתח המקורי. אם לא בוצע ייבוא של חומר מפתח מקורי בגלל כשל בייבוא הראשוני, אפשר לספק כל חומר מפתח.
הגבלות
- אפשר לייבא מחדש רק את
CryptoKeyVersionsשיוצאו בעבר. - אם הגרסה יובאה בהצלחה בעבר, חומר המפתח שיובא מחדש חייב להיות זהה לחומר המפתח המקורי.
- אי אפשר לייבא מחדש קבצים שנמחקו לפני השקת התכונה הזו.
CryptoKeyVersionsהשדהreimport_eligibleשלCryptoKeyVersionהואtrueאם הגרסה כשירה לייבוא מחדש, ו-falseאם היא לא כשירה.
אפשר לייבא מחדש מפתחות תוכנה ומפתחות Cloud HSM, אבל אי אפשר לייבא מחדש מפתחות חיצוניים.
ייבוא מחדש של מפתח שהושמד
יוצרים ImportJob לייבוא מחדש לפי השלבים במאמר יצירת משימת ייבוא. אתם יכולים להשתמש בImportJob קיים או בImportJob חדש, כל עוד רמת ההגנה תואמת לרמת ההגנה המקורית.
המסוף
נכנסים לדף Key Management במסוף Google Cloud .
לוחצים על השם של אוסף המפתחות שמכיל את המפתח שאת גרסת המפתח שלו רוצים לייבא מחדש.
לוחצים על המפתח שאת גרסת המפתח שלו רוצים לייבא מחדש.
לוחצים על סמל האפשרויות הנוספות (3 נקודות) לצד גרסת המפתח שרוצים לייבא מחדש.
בוחרים באפשרות ייבוא מחדש של גרסת המפתח.
בוחרים את משימת הייבוא מהתפריט הנפתח בחירת משימת ייבוא.
בבורר Upload the wrapped key, בוחרים את המפתח שכבר עטפתם. המפתח הזה צריך להיות זהה לחומר המפתח המקורי.
לוחצים על ייבוא מחדש.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
מייבאים מחדש את גרסת המפתח באמצעות חומר המפתח המקורי.
gcloud kms keys versions import \ --location LOCATION \ --keyring KEY_RING \ --key KEY_NAME \ --version KEY_VERSION \ --algorithm ALGORITHM \ --import-job IMPORT_JOB \ --target-key-file PATH_TO_KEY \
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
בגוף הבקשה של שיטת
cryptoKeyVersions.import, מגדירים את השדהcryptoKeyVersionלשם גרסת המפתח של הגרסה שמייבאים. הוא חייב להיות צאצא של מפתח ההצפנה.בגוף הבקשה, מגדירים את השדה
algorithmלאלגוריתם של המפתח שמייבאים. הערך הזה צריך להיות זהה לאלגוריתם של גרסת המפתח המקורית. השדהalgorithmהוא מסוגCryptoKeyVersionAlgorithm.בגוף הבקשה, מגדירים את השדה
wrappedKeyMaterialלחומרי המפתח שכבר עברו עטיפה.מבצעים קריאה ל-method
cryptoKeyVersions.import. התגובהcryptoKeyVersions.importהיא מסוגCryptoKeyVersion. אחרי שמייבאים מפתח בהצלחה, המצב שלו הואENABLEDואפשר להשתמש בו ב-Cloud KMS.
המאמרים הבאים
- אימות מפתח מיובא אחרי שתאשרו שחומר המפתח המיובא זהה למפתח המקורי, תוכלו להשתמש במפתח לחתימה או להגנה על נתונים.
- פתרון בעיות שקשורות לייבוא מפתחות שנכשל