במדריך הזה נסביר איך לייבא מפתח קריפטוגרפי ל-Cloud Key Management Service כגרסה חדשה של מפתח באמצעות שיטת ייבוא חסינה מפני פיצוח קוונטי. הגישה הזו עוזרת להגן על המפתח במהלך ההעברה מפני מתקפות מסוג "איסוף עכשיו, פענוח אחר כך" (HNDL) על ידי מחשבים קוונטיים עתידיים.
ייבוא מפתחות בטוחים מפני מתקפות קוונטיות מתבסס על כלים סטנדרטיים של קריפטוגרפיה פוסט-קוונטית (PQC), כולל מנגנוני הצפנת מפתחות (KEM) והצפנה היברידית של מפתח ציבורי (HPKE), כדי להגן על המפתח בזמן ההעברה.
יש תמיכה בייבוא מפתחות חסינים מפני פיצוח קוונטי למפתחות שמגובים על ידי תוכנה (רמת ההגנה SOFTWARE).
לפני שמתחילים
כדי לייבא מפתח, צריך להכין את הפרויקט, את המערכת המקומית ואת חומר המפתח עצמו.
הכנת הפרויקט
- נכנסים לחשבון 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
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.-
התקינו את ה-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
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.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לייבוא מפתח, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים במחזיק המפתחות:
-
כדי לייבא רק למפתחות קיימים:
Cloud KMS Importer (
roles/cloudkms.importer) -
כדי לייבא למפתחות חדשים:
אדמין של Cloud KMS (
roles/cloudkms.admin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הכנת המערכת המקומית
אתם צריכים ספרייה קריפטוגרפית במערכת המקומית שתומכת בכלים של קריפטוגרפיה פוסט-קוונטית (PQC), כולל מנגנוני אנקפסולציה של מפתחות (KEM) והצפנה היברידית של מפתח ציבורי (HPKE). אפשר להשתמש ב-Tink, ב-OpenSSL או בספרייה קריפטוגרפית אחרת שתומכת בפעולות הבאות:
- הצפנה היברידית של מפתח ציבורי (HPKE)
- אחד מהאלגוריתמים הבאים של KEM:
ML-KEM-768ML-KEM-1024-
X-WING(שילוב שלML-KEM-768ו-X25519)
- פונקציית נגזרת המפתח (KDF)
HKDF-SHA256 - הצפנה מאומתת עם נתונים משויכים (AEAD) באמצעות אלגוריתם
AES-256-GCM
הכנת המפתח
מוודאים שהאלגוריתם והאורך של המפתח נתמכים. לכל הגרסאות של מפתח צריך להיות אותו רמת הגנה (SOFTWARE).
יצירת מפתח יעד ואוסף מפתחות
כשמייבאים חומר מפתח, הוא הופך לגרסת מפתח חדשה במפתח קיים. המפתח הזה נקרא מפתח היעד. אוסף המפתחות ומפתח היעד צריכים להתקיים לפני שתוכלו לייבא חומר מפתח.
כדי ליצור מחזיק מפתחות חדש עם מפתח ריק שמגובה בתוכנה באמצעות Google Cloud CLI או מסוף Google Cloud , פועלים לפי השלבים הבאים.
המסוף
נכנסים לדף Key Management במסוף Google Cloud .
לוחצים על Create key ring (יצירת מחזיק מפתחות).
בשדה Key ring name (שם אוסף המפתחות), מזינים את השם של אוסף המפתחות.
בקטע Location type, בוחרים סוג מיקום ומיקום.
לוחצים על יצירה. ייפתח הדף Create key.
בשדה שם המפתח, מזינים את השם של המפתח.
בקטע רמת הגנה, בוחרים באפשרות תוכנה.
בקטע 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 SOFTWARE \ --skip-initial-version-creation \ --import-only
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_NAME: השם שרוצים להשתמש בו עבור המפתח. -
LOCATION: המיקום של אוסף המפתחות. -
KEY_RING: מחזיק המפתחות שבו רוצים ליצור את המפתח. -
PURPOSE: המטרה שלשמה רוצים להשתמש במפתח.
-
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.
מחזיק המפתחות והמפתח קיימים עכשיו, אבל המפתח לא מכיל חומר מפתח, אין לו גרסה והוא לא פעיל. בשלב הבא יוצרים משימת ייבוא.
יצירת משימת ייבוא
משימת ייבוא מגדירה את המאפיינים של המפתחות שהיא מייבאת, כולל רמת ההגנה ושיטת הייבוא.
ייבוא מפתחות חסינים מפני פיצוח קוונטי נתמך רק ברמת ההגנה SOFTWARE.
בוחרים אחת משיטות הייבוא הבאות שחסינות מפני פיצוח קוונטי:
HPKE_KEM_XWING_HKDF_SHA256_AES_256_GCMHPKE_KEM_ML_KEM_768_HKDF_SHA256_AES_256_GCMHPKE_KEM_ML_KEM_1024_HKDF_SHA256_AES_256_GCM
gcloud
מריצים את הפקודה הבאה כדי ליצור משימת ייבוא עם שיטת ייבוא חסינה מפני פיצוח קוונטי:
gcloud kms import-jobs create IMPORT_JOB \
--location LOCATION \
--keyring KEY_RING \
--import-method IMPORT_METHOD \
--protection-level software
מחליפים את מה שכתוב בשדות הבאים:
-
IMPORT_JOB: שם ייחודי לשימוש בעבודת הייבוא. -
LOCATION: המיקום של אוסף המפתחות שבו יצרתם את מפתח היעד. -
KEY_RING: השם של אוסף המפתחות שבו יצרתם את מפתח היעד. IMPORT_METHOD: שיטת הייבוא חסין מפני פיצוח קוונטי שרוצים להשתמש בה, לדוגמהhpke-kem-xwing-hkdf-sha256-aes-256-gcm.
REST
מבצעים קריאה ל-keyRings.importJobs.create:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/importJobs?import_job_id=IMPORT_JOB" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"import_method": "IMPORT_METHOD", "protection_level": "SOFTWARE"}'
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה של פרויקט Cloud KMS. -
LOCATION: המיקום של אוסף המפתחות שבו יצרתם את מפתח היעד. -
KEY_RING: השם של אוסף המפתחות שבו יצרתם את מפתח היעד. -
IMPORT_JOB: שם ייחודי לשימוש בעבודת הייבוא. -
TOKEN: הטוקן לאימות הבקשה. IMPORT_METHOD: שיטת הייבוא חסין מפני פיצוח קוונטי שרוצים להשתמש בה, לדוגמהHPKE_KEM_XWING_HKDF_SHA256_AES_256_GCM.
בדיקת הסטטוס של משימת הייבוא
הסטטוס ההתחלתי של משימת ייבוא הוא 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"
ברגע שעבודת הייבוא פעילה, אפשר לשלוח בקשה לייבוא מפתח.
שליפת מפתח האריזה הציבורי
אחרי שמשימת הייבוא מסתיימת (ACTIVE), מאחזרים את המפתח הציבורי שמשויך אליה. תשתמשו במפתח הציבורי הזה במערכת המקומית כדי לארוז את חומר המפתח שאתם רוצים לייבא.
gcloud
מריצים את הפקודה הבאה כדי להוריד את המפתח הציבורי:
gcloud kms import-jobs describe IMPORT_JOB
--location LOCATION
--keyring KEY_RING
--format="value(publicKey.data)"
מחליפים את מה שכתוב בשדות הבאים:
-
IMPORT_JOB: השם של עבודת הייבוא. -
LOCATION: המיקום של אוסף המפתחות שבו יצרתם את משימת הייבוא. -
KEY_RING: השם של אוסף המפתחות שבו יצרתם את משימת הייבוא.
המפתח הציבורי מקודד ב-base64.
REST
- מבצעים קריאה ל-method
keyRings.importJobs.get. - שולפים את המפתח הציבורי מהשדה
publicKey.dataשל התשובה, ושומרים אותו באופן מקומי כ-public_key.data.
הכנה ואריזה של חומר המפתח
משתמשים בספרייה קריפטוגרפית חיצונית נתמכת במערכת המקומית כדי לעטוף את חומר המפתח באמצעות מפתח האריזה הציבורי שאוחזר.
תהליך העטיפה צריך לבצע HPKE.Seal() (RFC 9180) כדי ליצור מפתח עטוף. הפעולה הזו משלימה את השלבים הבאים:
- מבצעים אנקפסולציה של המפתח הציבורי שאוחזר כדי ליצור סוד לשימוש עם טוקן צרכן ומפתח אנקפסולציה.
- מפיקים מפתח סימטרי זמני מהסוד המשותף באמצעות HKDF-SHA256.
- מצפינים את חומר המפתח באמצעות המפתח האפמרי באמצעות AES-256-GCM.
- משרשרים את מפתח האנקפסולציה ואת חומר המפתח המוצפן כמידע מוצפן (ciphertext). זהו המפתח העטוף שנוצר, שבו תשתמשו כדי לייבא את המפתח. שומרים את הקובץ בשם
wrapped_key.bin.
בדוגמת הקוד הבאה ב-Go אפשר לראות איך עוטפים חומרי מפתח באמצעות הספרייה tink-go:
package main
import (
"bytes"
"encoding/base64"
"flag"
"fmt"
"log"
"google.golang.org/protobuf/proto"
"github.com/tink-crypto/tink-go/v2/hybrid"
"github.com/tink-crypto/tink-go/v2/keyset"
hpkepb "github.com/tink-crypto/tink-go/v2/proto/hpke_go_proto"
tinkpb "github.com/tink-crypto/tink-go/v2/proto/tink_go_proto"
)
var (
publicKeyB64Flag = flag.String("public_key", "", "Base64 encoded public key for wrapping.")
targetKeyB64Flag = flag.String("target_key", "", "Base64 encoded 32-byte target key to be wrapped.")
)
func main() {
flag.Parse()
if *publicKeyB64Flag == "" {
log.Fatal("-public_key is required")
}
if *targetKeyB64Flag == "" {
log.Fatal("-target_key is required")
}
pkBytes, err := base64.StdEncoding.DecodeString(*publicKeyB64Flag)
if err != nil {
log.Fatalf("failed to decode public key: %v", err)
}
targetKey, err := base64.StdEncoding.DecodeString(*targetKeyB64Flag)
if err != nil {
log.Fatalf("failed to decode target key: %v", err)
}
hpkePubKey := &hpkepb.HpkePublicKey{
Version: 0,
Params: &hpkepb.HpkeParams{
Kem: hpkepb.HpkeKem_ML_KEM768,
Kdf: hpkepb.HpkeKdf_HKDF_SHA256,
Aead: hpkepb.HpkeAead_AES_256_GCM,
},
PublicKey: pkBytes,
}
serializedPubKey, err := proto.Marshal(hpkePubKey)
if err != nil {
log.Fatalf("failed to marshal HPKE public key: %v", err)
}
ks := &tinkpb.Keyset{
PrimaryKeyId: 1,
Key: []*tinkpb.Keyset_Key{
{
KeyData: &tinkpb.KeyData{
TypeUrl: "type.googleapis.com/google.crypto.tink.HpkePublicKey",
Value: serializedPubKey,
KeyMaterialType: tinkpb.KeyData_ASYMMETRIC_PUBLIC,
},
Status: tinkpb.KeyStatusType_ENABLED,
KeyId: 1,
OutputPrefixType: tinkpb.OutputPrefixType_RAW,
},
},
}
serializedKeyset, err := proto.Marshal(ks)
if err != nil {
log.Fatalf("failed to marshal keyset: %v", err)
}
// Create a KeysetHandle and retrieve the HybridEncrypt primitive.
reader := keyset.NewBinaryReader(bytes.NewReader(serializedKeyset))
handle, err := keyset.ReadWithNoSecrets(reader)
if err != nil {
log.Fatalf("failed to create keyset handle: %v", err)
}
enc, err := hybrid.NewHybridEncrypt(handle)
if err != nil {
log.Fatalf("failed to create hybrid encrypt primitive: %v", err)
}
// Perform the wrapping operation. Tink's HPKE implementation handles the
// 'enc || ciphertext' concatenation automatically.
wrappedKey, err := enc.Encrypt(targetKey, nil)
if err != nil {
log.Fatalf("failed to wrap key: %v", err)
}
fmt.Printf("Final wrappedKey (base64):\n%s\n", base64.StdEncoding.EncodeToString(wrappedKey))
}
שומרים את מחרוזת הפלט ב-Base64 או מפענחים אותה לקובץ בינארי:
bash
echo "BASE64_WRAPPED_KEY" | base64 --decode > wrapped_key.bin
ייבוא המפתח העטוף
מייבאים את המפתח העטוף המוכן כגרסת מפתח חדשה של מפתח היעד.
gcloud
מריצים את הפקודה kms keys versions import:
gcloud kms keys versions import \
--location LOCATION \
--keyring KEY_RING \
--key KEY_NAME \
--import-job IMPORT_JOB \
--algorithm ALGORITHM \
--wrapped-key-file wrapped_key.bin
מחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: המיקום של אוסף המפתחות שמכיל את מפתח היעד. -
KEY_RING: השם של אוסף המפתחות שמכיל את מפתח היעד. -
KEY_NAME: השם של מפתח היעד. -
IMPORT_JOB: השם של עבודת הייבוא. -
ALGORITHM: האלגוריתם של חומר המפתחות לייבוא.
REST
מבצעים קריאה ל-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", "algorithm": "ALGORITHM", "wrappedKey": "PATH_TO_WRAPPED_KEY"}'
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה של פרויקט Cloud KMS. -
LOCATION: המיקום של אוסף המפתחות שמכיל את מפתח היעד. -
KEY_RING: השם של אוסף המפתחות שמכיל את מפתח היעד. -
KEY_NAME: השם של מפתח היעד. -
TOKEN: הטוקן לאימות הבקשה. -
IMPORT_JOB: המזהה של משימת הייבוא המתאימה. -
ALGORITHM: האלגוריתם של חומר המפתחות לייבוא. -
PATH_TO_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.
מבצעים קריאה ל-method ImportJob.get ובודקים את השדה [state][api_importjob_fields_state]. אם הערך של state הוא PENDING_GENERATION, משימת הייבוא עדיין בתהליך יצירה.
בודקים מחדש את הסטטוס באופן תקופתי עד שהוא משתנה ל-ACTIVE.
אחרי שמייבאים את הגרסה הראשונית של המפתח, הסטטוס של המפתח משתנה לENABLED. לפני שתוכלו להשתמש במפתחות סימטריים, אתם צריכים להגדיר את גרסת המפתח המיובאת כגרסה הראשית.
ייבוא מחדש של מפתח שהושמד בעבר
אם אתם צריכים לשחזר גרסה של מפתח מיובא שנמצאת במצב DESTROYED
או במצב IMPORT_FAILED למצב ENABLED, אתם יכולים לייבא מחדש את אותם נתוני מפתח בדיוק.
כשמייבאים מחדש גרסת מפתח שנמחקה, משתמשים באותו תהליך כמו בייבוא הראשוני, באמצעות משימת הייבוא המקורית או משימת ייבוא חדשה (עם אותה רמת הגנה SOFTWARE).