במדריך הזה נסביר איך לייבא מפתח קריפטוגרפי ל-Cloud Key Management Service כגרסה חדשה של מפתח באמצעות שיטת ייבוא חסינה מפני פיצוח קוונטי. הגישה הזו עוזרת להגן על המפתח במהלך ההעברה מפני מתקפות "איסוף מיידי ופענוח בהמשך" (SNDL) של מחשבים קוונטיים עתידיים.
ייבוא מפתחות חסינים מפני פיצוח קוונטי מתבצע באמצעות כלים סטנדרטיים של הצפנה פוסט-קוונטית (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, 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 הבאים באוסף המפתחות:
-
כדי לייבא רק למפתחות קיימים:
מייבא של Cloud KMS (
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.
בשדה שם אוסף המפתחות, מזינים את השם של אוסף המפתחות.
בקטע Location type, בוחרים סוג מיקום ומיקום.
לוחצים על יצירה. ייפתח הדף Create key.
בשדה Key name, מזינים את שם המפתח.
בקטע Protection level, בוחרים באפשרות Software.
בקטע Key material, בוחרים באפשרות Imported key ולוחצים על Continue. כך לא נוצרת גרסת מפתח ראשונית.
מגדירים את המטרה ואת האלגוריתם של המפתח ולוחצים על המשך.
אופציונלי: אם רוצים שהמפתח הזה יכיל רק גרסאות מפתח מיובאות, בוחרים באפשרות Restrict key versions to import only. כך לא תיצרו בטעות גרסאות מפתח חדשות ב-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 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 "{}"מידע נוסף זמין במאמרי העזרה של ה-API של
KeyRing.create.יוצרים מפתח ריק לייבוא בלבד:
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"}}"מידע נוסף זמין במאמרי העזרה של ה-API של
CryptoKey.create.
אוסף המפתחות והמפתח קיימים עכשיו, אבל המפתח לא מכיל חומר מפתח, אין לו גרסה והוא לא פעיל. בשלב הבא יוצרים משימת ייבוא.
יצירת משימת הייבוא
משימת ייבוא מגדירה את המאפיינים של המפתחות שהיא מייבאת, כולל רמת ההגנה ושיטת הייבוא.
אפשר לייבא מפתחות חסינים מפני פיצוח קוונטי רק ברמת ההגנה 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 .
לוחצים על השם של אוסף המפתחות שמכיל את עבודת הייבוא.
לוחצים על הכרטיסייה משימות ייבוא בחלק העליון של הדף.
הסטטוס יופיע בקטע Status לצד שם משימת הייבוא.
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 ולהתקין את 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.
כדי לבדוק את הסטטוס של משימת ייבוא, משתמשים בשיטה 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 .
לוחצים על השם של אוסף המפתחות שמכיל את משימת הייבוא.
לוחצים על הכרטיסייה משימות ייבוא בחלק העליון של הדף.
הסטטוס יופיע בקטע Status לצד שם משימת הייבוא.
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).