במדריך הזה נסביר איך לייבא מפתח קריפטוגרפי ל-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, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
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, if it is not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init -
למשתמש שמבצע את הייבוא צריכות להיות ההרשאות הבאות ב-IAM כדי ליצור אוספי מפתחות, מפתחות ועבודות ייבוא. אם המשתמש לא מוגדר כ-Project Owner, אפשר להקצות לו את שני התפקידים המוגדרים מראש הבאים:
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.
בשדה שם אוסף המפתחות, מזינים את השם של אוסף המפתחות.
בקטע Location type, בוחרים סוג מיקום ומיקום.
לוחצים על יצירה. ייפתח הדף Create key.
בשדה Key name, מזינים את שם המפתח.
בשדה Protection level, בוחרים באפשרות Software, HSM או Single-tenant HSM.
אם בחרתם באפשרות Single-tenant HSM, בוחרים את המופע של Single-tenant HSM שבו רוצים ליצור את המפתח.
בקטע Key material (חומר מפתח), בוחרים באפשרות Imported key (מפתח מיובא) ולוחצים על Continue (המשך). כך לא נוצרת גרסת מפתח ראשונית.
מגדירים את המטרה ואת האלגוריתם של המפתח ולוחצים על המשך.
אופציונלי: אם רוצים שהמפתח הזה יכיל רק גרסאות מיובאות של מפתחות, בוחרים באפשרות הגבלת גרסאות המפתח לייבוא בלבד. כך לא תוכלו ליצור בטעות גרסאות מפתח חדשות ב-Cloud KMS.
אופציונלי: במפתחות מיובאים, הרוטציה האוטומטית מושבתת כברירת מחדל. כדי להפעיל רוטציית מפתחות אוטומטית, בוחרים ערך בשדה Key rotation period.
אם מפעילים רוטציה אוטומטית, גרסאות מפתח חדשות ייווצרו ב-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 ולהתקין את Java SDK של Cloud KMS.
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 של 3072 ביט או של 4096 ביט. אם אין לכם דרישות ספציפיות, מומלץ להשתמש במפתח אריזה של 3,072 ביטים.
אפשר ליצור משימת ייבוא באמצעות ה-CLI של gcloud, מסוףGoogle Cloud או Cloud Key Management Service API.
המסוף
נכנסים לדף Key Management במסוף Google Cloud .
לוחצים על השם של אוסף המפתחות הרצוי.
מגדירים את Protection level ל-Software, HSM או Single-tenant HSM. משתמשים באותה רמת הגנה שהגדרתם עבור מפתח היעד.
לוחצים על יצירת פעולת ייבוא.
בשדה שם, מזינים את השם של פעולת הייבוא.
בתפריט הנפתח שיטת ייבוא, בוחרים באפשרות 3072 ביט RSA או 4096 ביט RSA.
לוחצים על יצירה.
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 ולהתקין את Java SDK של Cloud KMS.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
כדי ליצור משימת ייבוא, משתמשים ב-method 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 .
לוחצים על השם של אוסף המפתחות שמכיל את עבודת הייבוא.
לוחצים על הכרטיסייה ייבוא משרות בחלק העליון של הדף.
הסטטוס יופיע מתחת לסטטוס לצד השם של פעולת הייבוא.
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.
כדי לבדוק את הסטטוס של משימת ייבוא, משתמשים ב-method 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תומכים במגוון אלגוריתמים ואורכים.אי אפשר לשנות את המטרה של מפתח אחרי שיוצרים אותו, אבל אפשר ליצור גרסאות עוקבות של המפתח באורכים שונים מאורך הגרסה הראשונית של המפתח.
העברה אוטומטית של מפתח והייבוא שלו
כדי להשתמש ב-wrapping אוטומטי, צריך להשתמש ב-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 .
לוחצים על השם של אוסף המפתחות שמכיל את עבודת הייבוא. מפתח היעד מוצג, יחד עם כל המפתחות האחרים באוסף המפתחות.
לוחצים על השם של מפתח היעד ואז על Import key version.
בתפריט הנפתח בחירת משימת ייבוא, בוחרים את משימת הייבוא.
בבורר 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 ולהתקין את Java SDK של Cloud KMS.
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 .
לוחצים על השם של אוסף המפתחות שמכיל את עבודת הייבוא.
לוחצים על הכרטיסייה ייבוא משרות בחלק העליון של הדף.
הסטטוס יופיע מתחת לסטטוס לצד השם של פעולת הייבוא.
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 ולהתקין את Java SDK של Cloud KMS.
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 .
לוחצים על השם של אוסף המפתחות שמכיל את המפתח שאת גרסת המפתח שלו רוצים לייבא מחדש.
לוחצים על המפתח שרוצים לייבא מחדש את גרסת המפתח שלו.
לוחצים על סמל שלוש הנקודות לצד גרסת המפתח שרוצים לייבא מחדש.
בוחרים באפשרות ייבוא מחדש של גרסת מפתח.
בתפריט הנפתח בחירת משימת ייבוא, בוחרים את משימת הייבוא.
בבורר 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.
המאמרים הבאים
- אימות מפתח מיובא אחרי שתאשרו שחומר המפתח המיובא זהה למפתח המקורי, תוכלו להשתמש במפתח לחתימה או להגנה על נתונים.
- פתרון בעיות בייבוא מפתחות שנכשל