בדף הזה מוסבר איך ליצור מפתח ב-Cloud KMS. מפתח יכול להיות מפתח הצפנה סימטרי או אסימטרי, מפתח חתימה אסימטרי או מפתח חתימה של MAC.
כשיוצרים מפתח, מוסיפים אותו לאוסף מפתחות במיקום ספציפי ב-Cloud KMS. אפשר ליצור מחזיק מפתחות חדש או להשתמש במחזיק מפתחות קיים. בדף הזה יוצרים מפתח חדש של Cloud KMS או Cloud HSM ומוסיפים אותו לאוסף מפתחות קיים. כדי ליצור מפתח Cloud EKM, אפשר לעיין במאמר יצירת מפתח חיצוני. הוראות לייבוא מפתח של Cloud KMS או Cloud HSM מופיעות במאמר ייבוא מפתח.
לפני שמתחילים
לפני שמבצעים את המשימות בדף הזה, צריך לוודא שיש לכם את הדברים הבאים:
- משאב פרויקט Google Cloud שיכיל את משאבי Cloud KMS. מומלץ להשתמש בפרויקט נפרד למשאבי Cloud KMS שלא מכיל משאבי Google Cloud אחרים.
- השם והמיקום של אוסף המפתחות שבו רוצים ליצור את המפתח. בוחרים מחזיק מפתחות במיקום שקרוב למשאבים האחרים ותומך ברמת ההגנה שבחרתם. כדי לראות את המיקומים הזמינים ואת רמות ההגנה שהם תומכים בהן, אפשר לעיין במאמר בנושא מיקומים של Cloud KMS. כדי ליצור אוסף מפתחות, אפשר לעיין במאמר יצירת אוסף מפתחות.
- אופציונלי: כדי להשתמש ב-CLI של gcloud, צריך להכין את הסביבה.
במסוף Google Cloud , מפעילים את Cloud Shell.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירת מפתחות, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט או במשאב אב:
- אדמין של Cloud KMS (
roles/cloudkms.admin) -
כדי ליצור מפתחות HSM בדייר יחיד:
Cloud KMS single-tenant HSM Key Creator (
roles/cloudkms.hsmSingleTenantKeyCreator)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקידים המוגדרים מראש האלה כוללים את ההרשאות שנדרשות ליצירת מפתחות. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור מפתחות, צריך את ההרשאות הבאות:
-
cloudkms.cryptoKeys.create -
cloudkms.cryptoKeys.get -
cloudkms.cryptoKeys.list -
cloudkms.cryptoKeyVersions.create -
cloudkms.cryptoKeyVersions.get -
cloudkms.cryptoKeyVersions.list -
cloudkms.keyRings.get -
cloudkms.keyRings.list -
cloudkms.locations.get -
cloudkms.locations.list -
resourcemanager.projects.get -
כדי לאחזר מפתח ציבורי:
cloudkms.cryptoKeyVersions.viewPublicKey -
כדי ליצור מפתחות HSM עם דייר יחיד:
-
cloudkms.singleTenantHsmInstances.get -
cloudkms.singleTenantHsmInstances.use
-
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
יצירת מפתח הצפנה סימטרי
המסוף
נכנסים לדף Key Management במסוף Google Cloud .
לוחצים על השם של אוסף המפתחות שעבורו רוצים ליצור מפתח.
לוחצים על Create key.
בשדה Key name, מזינים שם למפתח.
בשדה רמת הגנה, בוחרים באפשרות תוכנה, HSM או HSM עם דייר יחיד.
אם בחרתם באפשרות Single-tenant HSM, בוחרים את המופע של Single-tenant HSM שבו רוצים ליצור את המפתח.
בקטע Key material, בוחרים באפשרות Generated key.
בשדה Purpose (מטרה), בוחרים באפשרות Symmetric encrypt/decrypt (הצפנה/פענוח סימטרי).
מאשרים את ערכי ברירת המחדל של תקופת הרוטציה והתאריך להתחלת הרוטציה.
לוחצים על יצירה.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
כדי ליצור מפתח תוכנה או מפתח Cloud HSM מרובה-דיירים, משתמשים בפקודה kms keys create:
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--protection-level "PROTECTION_LEVEL"
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_NAME: השם של המפתח. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
PROTECTION_LEVEL: רמת ההגנה שרוצים להשתמש בה עבור המפתח, לדוגמהsoftwareאוhsm. אפשר להשמיט את הדגל--protection-levelעבור מפתחותsoftware.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.
--crypto-key-backend לפקודה kms keys create:
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--protection-level "hsm-single-tenant" \
--crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_PROJECT: המזהה של הפרויקט שבו קיים מופע Cloud HSM עם דייר יחיד. -
INSTANCE_NAME: השם של מופע Single-tenant Cloud HSM שבו רוצים ליצור את המפתח. מידע נוסף על מכונות Cloud HSM עם דייר יחיד זמין במאמר יצירה וניהול של מכונת Cloud HSM עם דייר יחיד.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.
C#
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של C# ולהתקין את Cloud KMS C# SDK.
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
PHP
כדי להריץ את הקוד הזה, קודם צריך לקרוא על שימוש ב-PHP ב- Google Cloud ולהתקין את Cloud KMS PHP SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
Ruby
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Ruby ולהתקין את Cloud KMS Ruby SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
כדי ליצור מפתח תוכנה או מפתח Cloud HSM מרובה-דיירים, משתמשים ב-method CryptoKey.create:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"purpose": "ENCRYPT_DECRYPT", "versionTemplate": { "protectionLevel": "PROTECTION_LEVEL", "algorithm": "ALGORITHM" }}'
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שמכיל את מחזיק המפתחות. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
KEY_NAME: השם של המפתח. -
PROTECTION_LEVEL: רמת ההגנה של המפתח. לדוגמה:SOFTWAREאוHSM. -
ALGORITHM: אלגוריתם החתימה של HMAC – לדוגמה,HMAC_SHA256. כדי לראות את כל אלגוריתמי ה-HMAC הנתמכים, אפשר לעיין במאמר בנושא אלגוריתמים לחתימת HMAC.
PROTECTION_LEVEL לערך HSM_SINGLE_TENANT ומוסיפים את הדגל --crypto-key-backend לפקודה kms keys create:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"purpose": "ENCRYPT_DECRYPT", "versionTemplate": { "protectionLevel": "HSM_SINGLE_TENANT",
"algorithm": "ALGORITHM",
"crypto-key-backend": "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME" }}'
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_PROJECT: המזהה של הפרויקט שבו קיים מופע Cloud HSM עם דייר יחיד. -
INSTANCE_NAME: השם של מופע Single-tenant Cloud HSM שבו רוצים ליצור את המפתח. מידע נוסף על מכונות Cloud HSM עם דייר יחיד זמין במאמר יצירה וניהול של מכונת Cloud HSM עם דייר יחיד.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.
יצירת מפתח הצפנה סימטרי עם רוטציה אוטומטית בהתאמה אישית
כשיוצרים מפתח, אפשר לציין את תקופת הרוטציה שלו, כלומר את הזמן שעובר בין היצירה האוטומטית של גרסאות מפתח חדשות. אפשר גם לציין באופן עצמאי את זמן הרוטציה הבא, כך שהרוטציה הבאה תתרחש מוקדם יותר או מאוחר יותר מתקופת רוטציה אחת מעכשיו.
המסוף
כשמשתמשים במסוף Google Cloud כדי ליצור מפתח, Cloud KMS מגדיר באופן אוטומטי את תקופת הרוטציה ואת שעת הרוטציה הבאה. אתם יכולים להשתמש בערכי ברירת המחדל או לציין ערכים אחרים.
כדי לציין תקופת רוטציה ושעת התחלה שונות, כשיוצרים את המפתח, אבל לפני שלוחצים על הלחצן יצירה:
עבור תקופת רוטציית מפתחות, בוחרים באחת מהאפשרויות.
בקטע החל מ, בוחרים את התאריך שבו רוצים שהרוטציה האוטומטית הראשונה תתבצע. אפשר להשאיר את הערך שמוגדר כברירת מחדל ב-Starting on כדי שהרוטציה האוטומטית הראשונה תתחיל אחרי תקופה של רוטציית מפתחות אחת מהרגע שבו יוצרים את המפתח.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--rotation-period ROTATION_PERIOD \
--next-rotation-time NEXT_ROTATION_TIME
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_NAME: השם של המפתח. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
ROTATION_PERIOD: מרווח הזמן לרוטציה של המפתח. לדוגמה,30dלרוטציה של המפתח כל 30 יום. תקופת הרוטציה צריכה להיות לפחות יום אחד ולכל היותר 100 שנים. מידע נוסף זמין במאמר בנושא CryptoKey.rotationPeriod. -
NEXT_ROTATION_TIME: חותמת הזמן שבה תסתיים הרוטציה הראשונה. לדוגמה:2023-01-01T01:02:03. אפשר להשמיט את--next-rotation-timeכדי לתזמן את הרוטציה הראשונה לתקופה של רוטציה אחת מהרגע שבו מריצים את הפקודה. מידע נוסף זמין במאמרCryptoKey.nextRotationTime.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.
C#
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח בשפת C# ולהתקין את ה-SDK של Cloud KMS C# .
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
PHP
כדי להריץ את הקוד הזה, קודם צריך לקרוא על שימוש ב-PHP ב- Google Cloud ולהתקין את Cloud KMS PHP SDK.
Python
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Python ולהתקין את Cloud KMS Python SDK.
Ruby
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Ruby ולהתקין את Cloud KMS Ruby SDK.
API
בדוגמאות האלה נעשה שימוש ב-curl כלקוח HTTP כדי להדגים את השימוש ב-API. מידע נוסף על בקרת גישה זמין במאמר גישה ל-Cloud KMS API.
כדי ליצור מפתח, משתמשים ב-method CryptoKey.create:
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME" \
--request "POST" \
--header "authorization: Bearer TOKEN" \
--header "content-type: application/json" \
--data '{"purpose": "PURPOSE", "rotationPeriod": "ROTATION_PERIOD", "nextRotationTime": "NEXT_ROTATION_TIME"}'
מחליפים את מה שכתוב בשדות הבאים:
-
PURPOSE: המטרה של המפתח. -
ROTATION_PERIOD: מרווח הזמן לרוטציה של המפתח. לדוגמה,30dלרוטציה של המפתח כל 30 יום. תקופת הרוטציה צריכה להיות לפחות יום אחד ולכל היותר 100 שנים. מידע נוסף זמין במאמר בנושא CryptoKey.rotationPeriod. -
NEXT_ROTATION_TIME: חותמת הזמן שבה תסתיים הרוטציה הראשונה. לדוגמה:2023-01-01T01:02:03. מידע נוסף זמין במאמרCryptoKey.nextRotationTime.
הגדרת משך הזמן של המצב 'מתוכנן להשמדה'
כברירת מחדל, גרסאות של מפתחות ב-Cloud KMS נמצאות 30 ימים במצב של התקופה scheduled for destruction (DESTROY_SCHEDULED) לפני שהן נמחקות. המצב 'מתוזמן להשמדה' נקרא לפעמים מצב מחיקה עם יכולת שחזור. אפשר להגדיר את משך הזמן שגרסאות המפתח נשארות במצב הזה, עם המגבלות הבאות:
- אפשר להגדיר את משך הזמן רק במהלך יצירת המפתח.
- אחרי שמציינים את משך הזמן של המפתח, אי אפשר לשנות אותו.
- המשך תקף לכל הגרסאות של המפתח שייווצרו בעתיד.
- משך הזמן המינימלי הוא 24 שעות לכל המפתחות, חוץ ממפתחות לייבוא בלבד שמשך הזמן המינימלי שלהם הוא 0.
- משך הזמן המקסימלי הוא 120 ימים.
- משך הזמן שמוגדר כברירת מחדל הוא 30 יום.
יכול להיות שבארגון שלכם מוגדר ערך מינימלי של משך הזמן שנקבע להשמדה, בהתאם למדיניות הארגון. מידע נוסף על השמדת מפתחות
כדי ליצור מפתח עם משך זמן מותאם אישית למצב מתוזמן להשמדה:
המסוף
נכנסים לדף Key Management במסוף Google Cloud .
לוחצים על השם של אוסף המפתחות שעבורו רוצים ליצור מפתח.
לוחצים על Create key.
קובעים את ההגדרות של המפתח לאפליקציה.
לוחצים על הגדרות נוספות.
בקטע משך הזמן של המצב 'מתוזמן להשמדה', בוחרים את מספר הימים שבהם המפתח יישאר במצב מתוזמן להשמדה לפני שהוא יושמד באופן סופי.
לוחצים על Create key.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose PURPOSE \
--destroy-scheduled-duration DURATION
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_NAME: השם של המפתח. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
PURPOSE: המטרה של המפתח, לדוגמה,encryption. -
DURATION: משך הזמן שבו המפתח יישאר במצב scheduled for destruction לפני שהוא יושמד באופן סופי.
כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.
מומלץ להשתמש בברירת המחדל של משך הזמן, 30 ימים, לכל המפתחות, אלא אם יש לכם דרישות ספציפיות של אפליקציה או דרישות רגולטוריות שמחייבות ערך שונה.
יצירת מפתח אסימטרי
בקטעים הבאים מוסבר איך ליצור מפתחות אסימטריים.
יצירת מפתח פענוח אסימטרי
כדי ליצור מפתח אסימטרי לפענוח בצרור המפתחות ובמיקום שצוינו, פועלים לפי השלבים הבאים. אפשר להתאים את הדוגמאות האלה כדי לציין רמת הגנה או אלגוריתם שונים. מידע נוסף וערכים חלופיים זמינים במאמרים בנושא אלגוריתמים ורמות הגנה.
כשיוצרים את המפתח, הגרסה הראשונית של המפתח היא במצב בהמתנה ליצירה. כשהמצב משתנה למופעל, אפשר להשתמש במפתח. מידע נוסף על מצבי גרסה של מפתח זמין במאמר מצבי גרסה של מפתח.
המסוף
נכנסים לדף Key Management במסוף Google Cloud .
לוחצים על השם של אוסף המפתחות שעבורו רוצים ליצור מפתח.
לוחצים על Create key.
בשדה Key name, מזינים שם למפתח.
בשדה רמת הגנה, בוחרים באפשרות תוכנה, HSM או HSM עם דייר יחיד.
אם בחרתם באפשרות Single-tenant HSM, בוחרים את המופע של Single-tenant HSM שבו רוצים ליצור את המפתח.
בקטע Key material, בוחרים באפשרות Generated key.
בקטע מטרה, בוחרים באפשרות פענוח אסימטרי.
בקטע Algorithm (אלגוריתם), בוחרים באפשרות 3072 bit RSA - OAEP Padding - SHA256 Digest (RSA של 3,072 ביט – ריפוד OAEP – תקציר SHA256). אפשר לשנות את הערך הזה בגרסאות עתידיות של המפתח.
לוחצים על יצירה.
gcloud
כדי להשתמש ב-Cloud KMS בשורת הפקודה, קודם צריך להתקין את הגרסה האחרונה של Google Cloud CLI או לשדרג אליה.
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "asymmetric-encryption" \
--default-algorithm "ALGORITHM" \
--protection-level "PROTECTION_LEVEL"
מחליפים את מה שכתוב בשדות הבאים:
-
KEY_NAME: השם של המפתח. -
KEY_RING: השם של אוסף המפתחות שמכיל את המפתח. -
LOCATION: המיקום ב-Cloud KMS שבו נמצא אוסף המפתחות. -
ALGORITHM: האלגוריתם שבו יש להשתמש עבור המפתח, לדוגמהrsa-decrypt-oaep-3072-sha256. רשימת האלגוריתמים הנתמכים להצפנה אסימטרית מופיעה במאמר אלגוריתמים להצפנה אסימטרית. -
PROTECTION_LEVEL: רמת ההגנה שרוצים להשתמש בה עבור המפתח.
hsm-single-tenant, מוסיפים את הדגל --cryptoKeyBackend ומציינים את מזהה המשאב של מופע Cloud HSM עם דייר יחיד שבו רוצים ליצור את המפתח:
--crypto-key-backend "projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
C#
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח בשפת C# ולהתקין את ה-SDK של Cloud KMS C# .
Go
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Go ולהתקין את Cloud KMS Go SDK.
Java
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח ב-Java ולהתקין את Cloud KMS Java SDK.
Node.js
כדי להריץ את הקוד הזה, קודם צריך להגדיר סביבת פיתוח של Node.js ולהתקין את Cloud KMS Node.js SDK.
PHP
כדי להריץ את הקוד הזה, קודם צריך לקרוא על שימוש ב-PHP ב- Google Cloud ולהתקין את Cloud KMS PHP SDK.