בדף הזה מוסבר איך ליצור משאבים מוגנים באמצעות מפתחות שנוצרו על ידי Cloud KMS Autokey להצפנה. מידע נוסף על Autokey זמין בסקירה הכללית על Autokey.
לפני שמתחילים
לפני שיוצרים משאבים מוגנים באמצעות Autokey, צריך לבצע את השלבים הבאים כדי להתכונן:
- אם עדיין אין לכם פרויקט שבו Autokey מופעל לניהול מפתחות מרכזי או מבוזר, אתם צריכים קודם להשלים את שלבי ההגדרה במאמר הפעלת Cloud KMS Autokey, ואז לחזור למאמר הזה.
- צריך הרשאות כדי ליצור משאבים בפרויקט שנבחר. כדי לראות את התפקידים הספציפיים שנדרשים לכל משאב, אפשר לעיין במסמכי העזרה שספציפיים לשירות. כדי למצוא את המאמרים האלה, מחפשים את השירות בטבלה של שילובי CMEK ועוברים לקישור של סוג המשאב שרוצים ליצור. לא נדרשות הרשאות נוספות כדי להשתמש ב-Autokey כדי לבקש מפתחות לפי דרישה.
שימוש ב-Autokey עם משאבי Compute Engine
Autokey יוצר מפתח חדש לכל דיסק, תמונה ותמונת מכונה באותו מיקום של המשאב שנוצר.
Autokey לא יוצר מפתחות חדשים לתמונות מצב. צריך להשתמש בתמונות המצב באותו מפתח שמשמש להצפנת הדיסק. אם יוצרים snapshot באמצעות מסוףGoogle Cloud , מפתח ההצפנה שבו נעשה שימוש בדיסק מוחל על ה-snapshot באופן אוטומטי. אם יוצרים תמונת מצב באמצעות ה-CLI של gcloud, Terraform או Compute Engine API, צריך לזהות את המפתח ששימש להצפנת הדיסק ולהשתמש במפתח הזה כדי להצפין את תמונת המצב.
מידע נוסף על שימוש ב-CMEK עם תמונות מצב זמין במאמר יצירת תמונת מצב מדיסק מוצפן באמצעות CMEK.
יצירת משאב מוגן ב-Compute Engine
המסוף
כדי ליצור דיסק, מבצעים את השלבים הבאים:
נכנסים לדף Disks במסוף Google Cloud .
לוחצים על Create disk (יצירת דיסק) ומזינים את המאפיינים של הדיסק החדש.
בקטע הצפנה, בוחרים באפשרות מפתח Cloud KMS.
בקטע סוג המפתח, בוחרים באפשרות Cloud KMS עם Autokey ולוחצים על בקשת מפתח חדש. תוצג הודעה כשהמפתח ייווצר בהצלחה ויהיה מוכן לשימוש.
כדי לסיים את יצירת הדיסק, לוחצים על Create.
אפשר לפעול לפי תהליך דומה כדי ליצור משאבים של מכונות וירטואליות מוגנות, תמונות ותמונות מכונה.
Terraform
בדוגמה הבאה של Terraform נוצר key handle, והמפתח שמוחזר משמש להגנה על משאב חדש של דיסק מתמשך:
resource "google_kms_key_handle" "my_key_handle" {
provider = google-beta
project = "RESOURCE_PROJECT_ID"
name = "KEY_HANDLE"
location = "LOCATION"
resource_type_selector = "compute.googleapis.com/Disk"
}
resource "google_compute_disk" "persistent_disk" {
project = "RESOURCE_PROJECT_ID"
name = "DISK_NAME"
type = "pd-ssd"
zone = "ZONE"
size = 30
physical_block_size_bytes = 4096
disk_encryption_key {
kms_key_self_link = google_kms_key_handle.my_key_handle.kms_key
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
KEY_HANDLE: מזהה לשימוש עבור ה-key handle. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
DISK_NAME: השם של הדיסק החדש. -
ZONE: האזור של המשאב המוגן. האזור הזה חייב להיות במיקום שבו אתם יוצרים את המשאב. לדוגמה, אם יוצרים את המשאב במיקוםus-central1, האזור יכול להיותus-central1-a.
ב-Cloud KMS אי אפשר למחוק משאבי KeyHandle. אם אתם משתמשים בתבנית של יצירה והשמדה, ניסיון ליצור מחדש את KeyHandle יפיק שגיאה ALREADY_EXISTS. כדי להימנע מהבעיה הזו, אפשר לייבא KeyHandle שנוצר בעבר. מידע נוסף מופיע בקטע יצירה ומחיקה של דפוסים ב-Terraform שבדף הזה.
REST
כדי לבקש מפתח חדש של Cloud KMS, יוצרים
KeyHandle:curl -H "Content-Type: application/json" \ -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \ -d '{"resource_type_selector": "RESOURCE_TYPE"}'מחליפים את מה שכתוב בשדות הבאים:
-
USER_PROJECT: הפרויקט שיחויב על העלויות שמשויכות לבקשה הזו. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
RESOURCE_TYPE: סוג המשאב שרוצים ליצור, לדוגמהcompute.googleapis.com/Disk.
הפלט אמור להיראות כך:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata" } }שימו לב ל-
OPERATION_IDשמופיע בפלט. תצטרכו את הערך הזה כדי לקבל את מזהה המשאב של המפתח שנוצר.-
מציאת מפתח Cloud KMS שמשויך ל-key handle:
curl -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
-
USER_PROJECT: הפרויקט שיחויב על העלויות שמשויכות לבקשה הזו. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
OPERATION_ID: המזהה של פעולת הבקשה של ה-key handle מהפלט של השלב הקודם.
הפלט אמור להיראות כך:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "done": true, "response": { "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle", "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE", "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME", "resourceTypeSelector": "RESOURCE_TYPE" } }הערך של הרכיב
kmsKeyבפלט הוא מזהה המשאב המלא של המפתח שנוצר על ידי Autokey בשביל המשאב הזה. אפשר להשתמש במזהה המשאב הזה באותו אופן שבו משתמשים במזהה משאב של כל משאב אחר ב-Cloud KMS.-
כדי ליצור דיסק מוצפן, משתמשים בפקודה
gcloud compute disks createעם הדגל--kms-key:gcloud compute disks create DISK_NAME \ --kms-key projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAMEמחליפים את מה שכתוב בשדות הבאים:
-
DISK_NAME: השם של הדיסק החדש. -
KEY_PROJECT_ID: מזהה הפרויקט שבו נוצר המפתח. -
LOCATION: המיקום שבו רוצים ליצור את המשאב. -
KEY_NAME: השם של המפתח שהוחזר בפלט מהשלב הקודם.
-
שימוש ב-Autokey עם משאבים של Cloud Storage
Autokey יוצר מפתח חדש באותו מיקום של הקטגוריה. המפתח שנוצר על ידי Autokey מוקצה כמפתח ברירת המחדל של הקטגוריה.
התכונה Autokey לא יוצרת מפתחות לאובייקטים. כברירת מחדל, אובייקטים שנוצרים בקטגוריה משתמשים במפתח ברירת המחדל של הקטגוריה. אם רוצים להצפין אובייקט באמצעות מפתח שונה ממפתח ברירת המחדל של הקטגוריה, אפשר ליצור מפתח CMEK ולהשתמש בו כשיוצרים את האובייקט.
אם רוצים לשנות את מפתח ברירת המחדל שמוקצה לקטגוריה, אפשר להשתמש במפתח CMEK קיים, כולל מפתחות שנוצרו על ידי Autokey.
יצירת משאב מוגן ב-Cloud Storage
המסוף
נכנסים לדף Create a bucket במסוף Google Cloud .
פועלים לפי ההוראות ליצירת מאגר חדש עד להוראה Choose how to protect object data.
בקטע Choose how to protect object data, מרחיבים את הקטע Data encryption ובוחרים באפשרות Cloud KMS key.
בקטע סוג המפתח, בוחרים באפשרות Cloud KMS עם Autokey ולוחצים על בקשת מפתח חדש. תוצג הודעה כשהמפתח ייווצר בהצלחה ויהיה מוכן לשימוש.
כדי לסיים את יצירת הקטגוריה, לוחצים על יצירה.
Terraform
בדוגמה הבאה של Terraform נוצר key handle, והמפתח שמוחזר משמש להגנה על קטגוריית אחסון חדשה:
resource "google_kms_key_handle" "my_key_handle" {
provider = google-beta
project = "RESOURCE_PROJECT_ID"
name = "KEY_HANDLE"
location = "LOCATION"
resource_type_selector = "storage.googleapis.com/Bucket"
}
resource "google_storage_bucket" "simple_bucket_name" {
name = "BUCKET_NAME"
location = "LOCATION"
force_destroy = true
project = "RESOURCE_PROJECT_ID"
uniform_bucket_level_access = true
encryption {
default_kms_key_name = google_kms_key_handle.my_key_handle.kms_key
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
KEY_HANDLE: מזהה לשימוש עבור ה-key handle. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
BUCKET_NAME: השם של הקטגוריה החדשה.
ב-Cloud KMS אי אפשר למחוק משאבי KeyHandle. אם אתם משתמשים בתבנית של יצירה והשמדה, ניסיון ליצור מחדש את KeyHandle יפיק שגיאה ALREADY_EXISTS. כדי להימנע מהבעיה הזו, אפשר לייבא KeyHandle שנוצר בעבר. מידע נוסף מופיע בקטע יצירה ומחיקה של דפוסים ב-Terraform שבדף הזה.
REST
כדי לבקש מפתח חדש של Cloud KMS, יוצרים
KeyHandle:curl -H "Content-Type: application/json" \ -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \ -d '{"resource_type_selector": "RESOURCE_TYPE"}'מחליפים את מה שכתוב בשדות הבאים:
-
USER_PROJECT: הפרויקט שיחויב על העלויות שמשויכות לבקשה הזו. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
RESOURCE_TYPE: סוג המשאב שרוצים ליצור, לדוגמהstorage.googleapis.com/Bucket.
הפלט אמור להיראות כך:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata" } }שימו לב ל-
OPERATION_IDשמופיע בפלט. תצטרכו את הערך הזה כדי לקבל את מזהה המשאב של המפתח שנוצר.-
מציאת מפתח Cloud KMS שמשויך ל-key handle:
curl -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
-
USER_PROJECT: הפרויקט שיחויב על העלויות שמשויכות לבקשה הזו. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
OPERATION_ID: המזהה של פעולת הבקשה של ה-key handle מהפלט של השלב הקודם.
הפלט אמור להיראות כך:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "done": true, "response": { "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle", "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE", "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME", "resourceTypeSelector": "RESOURCE_TYPE" } }הערך של הרכיב
kmsKeyבפלט הוא מזהה המשאב המלא של המפתח שנוצר על ידי Autokey בשביל המשאב הזה. אפשר להשתמש במזהה המשאב הזה בדיוק כמו במזהה משאב של כל משאב אחר ב-Cloud KMS.-
כדי ליצור קטגוריה מוצפנת, משתמשים בפקודה
gcloud storage buckets createעם הדגל--default-encryption-key:gcloud storage buckets create gs://BUCKET_NAME \ --location=LOCATION \ --default-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAMEמחליפים את מה שכתוב בשדות הבאים:
-
BUCKET_NAME: השם של הקטגוריה החדשה. שם הקטגוריה צריך לעמוד בקריטריונים לשמות של קטגוריות. -
LOCATION: המיקום שבו רוצים ליצור את הקטגוריה. -
KEY_PROJECT_ID: מזהה הפרויקט שבו נוצר המפתח. -
LOCATION: המיקום שבו רוצים ליצור את המשאב. -
KEY_NAME: השם של המפתח שהוחזר בפלט מהשלב הקודם.
-
שימוש ב-Autokey עם משאבי BigQuery
Cloud KMS זמין בכמה מהדורות של BigQuery. לפני שמנסים להשתמש ב-Autokey כדי להגן על משאבי BigQuery, צריך לוודא שהמהדורה של BigQuery שבה אתם משתמשים תואמת ל-Cloud KMS. מידע נוסף על מהדורות BigQuery זמין במאמר הסבר על מהדורות BigQuery.
לכל מערך נתונים חדש, Autokey יוצר מפתח חדש באותו מיקום של המשאב עצמו, והמפתח הזה הופך למפתח ברירת המחדל של מערך הנתונים.
תכונת Autokey לא יוצרת מפתחות לטבלאות, לשאילתות, לטבלאות זמניות או למודלים. כברירת מחדל, המשאבים האלה מוגנים באמצעות מפתח ברירת המחדל של מערך הנתונים. אם רוצים להגן על משאב במערך נתונים באמצעות מפתח שונה ממפתח ברירת המחדל של מערך הנתונים, אפשר ליצור באופן ידני מפתח CMEK ולהשתמש בו כשיוצרים את המשאב.
בשביל שאילתות וטבלאות זמניות שלא נמצאות בתוך מערך נתונים, משתמשים במפתחות ברירת המחדל של הפרויקט. משתמשים במפתח ברירת מחדל שונה לפרויקט לכל מיקום בפרויקט שמכיל משאבי BigQuery. מידע נוסף על שימוש במפתחות ברירת מחדל של פרויקט זמין במאמר הגדרת מפתח ברירת מחדל של פרויקט.
מידע נוסף על שימוש ב-CMEK עם BigQuery זמין במאמר בנושא מפתחות Cloud KMS בניהול הלקוח.
יצירת משאב מוגן ב-BigQuery
המסוף
לפני שמנסים ליצור מערך נתונים ב-BigQuery באמצעות Autokey, צריך לוודא שיש לכם את ההרשאות הנדרשות. מידע נוסף על יצירת מערכי נתונים זמין במאמר יצירת מערכי נתונים.
במסוף Google Cloud , עוברים לדף BigQuery.
פועלים לפי ההוראות ליצירת מערך נתונים עד שמגיעים אל אפשרויות מתקדמות > הצפנה.
בקטע הצפנה, בוחרים באפשרות מפתח Cloud KMS.
בקטע סוג המפתח, בוחרים באפשרות Cloud KMS עם Autokey ולוחצים על בקשת מפתח חדש. תוצג הודעה כשהמפתח ייווצר בהצלחה ויהיה מוכן לשימוש.
כדי לסיים את יצירת מערך הנתונים, לוחצים על יצירת מערך נתונים.
Terraform
בדוגמה הבאה של Terraform נוצר key handle, והמפתח שמוחזר משמש להגנה על מערך נתונים חדש:
resource "google_kms_key_handle" "my_key_handle" {
provider = google-beta
project = "RESOURCE_PROJECT_ID"
name = "test-key-handle"
location = "LOCATION"
resource_type_selector = "bigquery.googleapis.com/Dataset"
}
resource "google_bigquery_dataset" "dataset" {
project = "RESOURCE_PROJECT_ID"
dataset_id = "DATASET_ID"
friendly_name = "DATASET_NAME"
description = "DATASET_DESCRIPTION"
location = "LOCATION"
default_table_expiration_ms = 3600000
default_encryption_configuration {
kms_key_name = google_kms_key_handle.my_key_handle.kms_key
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
DATASET_ID: המזהה שבו רוצים להשתמש עבור מערך הנתונים החדש. DATASET_NAME: שם ידידותי למשתמש למערך הנתונים החדש.-
DATASET_DESCRIPTION: תיאור של מערך הנתונים החדש.
ב-Cloud KMS אי אפשר למחוק משאבי KeyHandle. אם אתם משתמשים בתבנית של יצירה והשמדה, ניסיון ליצור מחדש את KeyHandle יפיק שגיאה ALREADY_EXISTS. כדי להימנע מהבעיה הזו, אפשר לייבא KeyHandle שנוצר בעבר. מידע נוסף מופיע בקטע יצירה ומחיקה של דפוסים ב-Terraform שבדף הזה.
REST
כדי לבקש מפתח חדש של Cloud KMS, יוצרים
KeyHandle:curl -H "Content-Type: application/json" \ -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \ -d '{"resource_type_selector": "RESOURCE_TYPE"}'מחליפים את מה שכתוב בשדות הבאים:
-
USER_PROJECT: הפרויקט שיחויב על העלויות שמשויכות לבקשה הזו. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
RESOURCE_TYPE: סוג המשאב שרוצים ליצור, לדוגמהbigquery.googleapis.com/Dataset.
הפלט אמור להיראות כך:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata" } }שימו לב ל-
OPERATION_IDשמופיע בפלט. תצטרכו את הערך הזה כדי לקבל את מזהה המשאב של המפתח שנוצר.-
מציאת מפתח Cloud KMS שמשויך ל-key handle:
curl -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
-
USER_PROJECT: הפרויקט שיחויב על העלויות שמשויכות לבקשה הזו. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
OPERATION_ID: המזהה של פעולת הבקשה של ה-key handle מהפלט של השלב הקודם.
הפלט אמור להיראות כך:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "done": true, "response": { "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle", "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE", "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME", "resourceTypeSelector": "RESOURCE_TYPE" } }הערך של הרכיב
kmsKeyבפלט הוא מזהה המשאב המלא של המפתח שנוצר על ידי Autokey בשביל המשאב הזה. אפשר להשתמש במזהה המשאב הזה בדיוק כמו במזהה משאב של כל משאב אחר ב-Cloud KMS.-
כדי ליצור מערך נתונים מוצפן, משתמשים בפקודה
bq mkעם הדגל--destination_kms_key.bq --location=LOCATION mk \ --dataset \ --default_kms_key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME \ --default_table_expiration=TABLE_EXPIRATION \ --description="DATASET_DESCRIPTION" \ RESOURCE_PROJECT_ID:DATASET_IDמחליפים את מה שכתוב בשדות הבאים:
-
LOCATION: המיקום שבו רוצים ליצור את מערך הנתונים. -
KEY_PROJECT_ID: מזהה הפרויקט שבו נוצר המפתח. -
KEY_NAME: השם של המפתח שהוחזר בפלט מהשלב הקודם. -
TABLE_EXPIRATION: משך החיים שמוגדר כברירת מחדל לטבלאות חדשות במערך הנתונים הזה, בשניות. -
DATASET_DESCRIPTION: תיאור של מערך הנתונים החדש. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
DATASET_ID: המזהה של מערך הנתונים שיוצרים.
מידע נוסף על הכלי
bqזמין במאמר מידע נוסף על כלי שורת הפקודה של BigQuery.-
שימוש ב-Autokey עם משאבים של Secret Manager
Autokey יוצר מפתח יחיד להגנה על כל הסודות באותו פרויקט ובאותו מיקום. כשמבצעים רוטציה למפתח, סודות חדשים שנוספים לפרויקט משתמשים בגרסה הראשית החדשה של המפתח.
Secret Manager תואם ל-Cloud KMS Autokey רק כשיוצרים משאבים באמצעות Terraform או API בארכיטקטורת REST.
יצירת משאב מוגן ב-Secret Manager
Terraform
בדוגמה הבאה ל-Terraform נוצר key handle, והמפתח שמוחזר משמש להגנה על סוד חדש עם שכפול אוטומטי:
resource "google_kms_key_handle" "my_key_handle" {
provider = google-beta
project = "RESOURCE_PROJECT_ID"
name = "test-key-handle"
location = "global"
resource_type_selector = "secretmanager.googleapis.com/Secret"
}
resource "google_secret_manager_secret" "my_secret" {
project = "RESOURCE_PROJECT_ID"
secret_id = "SECRET_ID"
replication {
auto {
customer_managed_encryption {
kms_key_name = google_kms_key_handle.my_key_handle.kms_key
}
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
-
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
SECRET_ID: המזהה לשימוש בסוד החדש.
אם תנסו ליצור key handle לסוד באותו פרויקט ובאותו מיקום שבו כבר קיים key handle, תקבלו הודעת שגיאה עם הפרטים של ה-key handle הקיים. אם זה קורה, צריך לוודא שיש רק בלוק אחד שיוצר את ה-key handle. אפשר להשתמש מחדש ב-key handle באמצעות המזהה שלו (KEY_HANDLE) כדי ליצור סודות נוספים שצריכים לשתף את המפתח.
ב-Cloud KMS אי אפשר למחוק משאבי KeyHandle. אם אתם משתמשים בתבנית של יצירה והשמדה, ניסיון ליצור מחדש את KeyHandle יפיק שגיאה ALREADY_EXISTS. כדי להימנע מהבעיה הזו, אפשר לייבא KeyHandle שנוצר בעבר. מידע נוסף מופיע בקטע יצירה ומחיקה של דפוסים ב-Terraform שבדף הזה.
REST
כדי לבקש מפתח חדש של Cloud KMS, יוצרים
KeyHandle:curl -H "Content-Type: application/json" \ -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \ -d '{"resource_type_selector": "RESOURCE_TYPE"}'מחליפים את מה שכתוב בשדות הבאים:
-
USER_PROJECT: הפרויקט שיחויב על העלויות שמשויכות לבקשה הזו. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
RESOURCE_TYPE: סוג המשאב שרוצים ליצור, לדוגמהsecretmanager.googleapis.com/Secret.
הפלט אמור להיראות כך:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata" } }שימו לב ל-
OPERATION_IDשמופיע בפלט. תצטרכו את הערך הזה כדי לקבל את מזהה המשאב של המפתח שנוצר.אם תנסו ליצור אובייקט של מפתח לסוד באותו פרויקט ובאותו מיקום שבו כבר קיים אובייקט של מפתח, תוצג הודעת שגיאה עם הפרטים של אובייקט המפתח הקיים. במקרה כזה, מדלגים על השלב הבא ומשתמשים במזהה משאב המפתח בשדה
existingKmsKeyכדי להגן על הסוד החדש.-
מציאת מפתח Cloud KMS שמשויך ל-key handle:
curl -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
-
USER_PROJECT: הפרויקט שיחויב על העלויות שמשויכות לבקשה הזו. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
OPERATION_ID: המזהה של פעולת הבקשה של ה-key handle מהפלט של השלב הקודם.
הפלט אמור להיראות כך:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "done": true, "response": { "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle", "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE", "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME", "resourceTypeSelector": "RESOURCE_TYPE" } }הערך של הרכיב
kmsKeyבפלט הוא מזהה המשאב המלא של המפתח שנוצר על ידי Autokey בשביל המשאב הזה. אפשר להשתמש במזהה המשאב הזה בדיוק כמו במזהה משאב של כל משאב אחר ב-Cloud KMS.-
כדי ליצור סוד מוצפן עם שכפול אוטומטי, משתמשים בפקודה
gcloud secrets createעם הדגל--kms-key-name.gcloud secrets create "SECRET_ID" \ --replication-policy "automatic" \ --kms-key-name "projects/KEY_PROJECT_ID/locations/global/keyRings/autokey/cryptoKeys/KEY_NAME" \ --project "RESOURCE_PROJECT_ID"מחליפים את מה שכתוב בשדות הבאים:
-
SECRET_ID: המזהה לשימוש בסוד החדש. -
KEY_PROJECT_ID: מזהה הפרויקט שבו נוצר המפתח. -
KEY_NAME: השם של המפתח שהוחזר בפלט מהשלב הקודם. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן.
-
שימוש ב-Autokey עם משאבי Dataflow
אפשר להשתמש ב-Autokey כדי ליצור מפתח יחיד לכל עבודת Dataflow.
REST
כדי לבקש מפתח חדש של Cloud KMS, יוצרים
KeyHandle:curl -H "Content-Type: application/json" \ -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \ -d '{"resource_type_selector": "dataflow.googleapis.com/Job"}'מחליפים את מה שכתוב בשדות הבאים:
-
USER_PROJECT: הפרויקט שיחויב על העלויות שמשויכות לבקשה הזו. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן.
הפלט אמור להיראות כך:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata" } }שימו לב ל-
OPERATION_IDשמופיע בפלט. הערך הזה נדרש כדי לקבל את מזהה המשאב של המפתח שנוצר.-
מציאת מפתח Cloud KMS שמשויך ל-key handle:
curl -H "X-Goog-User-Project: USER_PROJECT" \ -H "Authorization: Bearer TOKEN" \ -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_IDמחליפים את מה שכתוב בשדות הבאים:
-
USER_PROJECT: הפרויקט שיחויב על העלויות שמשויכות לבקשה הזו. -
RESOURCE_PROJECT_ID: מזהה הפרויקט של משאב הפרויקט שבו מופעל Autokey ושבו רוצים ליצור משאב מוגן. -
LOCATION: המיקום שבו רוצים ליצור את המשאב המוגן. -
OPERATION_ID: המזהה של פעולת הבקשה של ה-key handle מהפלט של השלב הקודם.
הפלט אמור להיראות כך:
{ "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "done": true, "response": { "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle", "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE", "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME", "resourceTypeSelector": "RESOURCE_TYPE" } }הערך של רכיב
kmsKeyבפלט הוא מזהה המשאב המלא של המפתח שנוצר על ידי Autokey עבור המשאב הזה. אפשר להשתמש במזהה המשאב הזה בדיוק כמו במזהה משאב של כל משאב אחר ב-Cloud KMS.-
דפוסי יצירה והשמדה ב-Terraform
ב-Cloud KMS אי אפשר למחוק משאבי KeyHandle. אם אתם משתמשים ב-Terraform ובדפוס של יצירה ומחיקה, ניסיון ליצור מחדש KeyHandle יגרום לשגיאה ALREADY_EXISTS. כדי להימנע מהבעיה הזו, אפשר להשתמש בחסימה של import. מוסיפים את הבלוק הבא לפני הבלוק resource של המשאב google_kms_key_handle:
import {
to = google_kms_key_handle.KEY_HANDLE
id = "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE"
}