יצירת משאבים מוגנים באמצעות מפתח אוטומטי של Cloud KMS

בדף הזה מוסבר איך ליצור משאבים מוגנים באמצעות מפתחות שנוצרו על ידי Cloud KMS Autokey להצפנה. מידע נוסף על Autokey זמין בסקירה הכללית על Autokey.

לפני שמתחילים

לפני שיוצרים משאבים מוגנים באמצעות Autokey, צריך לבצע את השלבים הבאים כדי להתכונן:

  1. אם עדיין אין לכם פרויקט שבו Autokey מופעל לניהול מפתחות מרכזי או מבוזר, אתם צריכים קודם להשלים את שלבי ההגדרה במאמר הפעלת Cloud KMS Autokey, ואז לחזור למאמר הזה.
  2. צריך הרשאות כדי ליצור משאבים בפרויקט שנבחר. כדי לראות את התפקידים הספציפיים שנדרשים לכל משאב, אפשר לעיין במסמכי העזרה שספציפיים לשירות. כדי למצוא את המאמרים האלה, מחפשים את השירות בטבלה של שילובי CMEK ועוברים לקישור של סוג המשאב שרוצים ליצור. לא נדרשות הרשאות נוספות כדי להשתמש ב-Autokey כדי לבקש מפתחות לפי דרישה.

שימוש ב-Autokey עם משאבי Compute Engine

‫Autokey יוצר מפתח חדש לכל דיסק, תמונה ותמונת מכונה באותו מיקום של המשאב שנוצר.

‫Autokey לא יוצר מפתחות חדשים לתמונות מצב. צריך להשתמש בתמונות המצב באותו מפתח שמשמש להצפנת הדיסק. אם יוצרים snapshot באמצעות מסוףGoogle Cloud , מפתח ההצפנה שבו נעשה שימוש בדיסק מוחל על ה-snapshot באופן אוטומטי. אם יוצרים תמונת מצב באמצעות ה-CLI של gcloud,‏ Terraform או Compute Engine API, צריך לזהות את המפתח ששימש להצפנת הדיסק ולהשתמש במפתח הזה כדי להצפין את תמונת המצב.

מידע נוסף על שימוש ב-CMEK עם תמונות מצב זמין במאמר יצירת תמונת מצב מדיסק מוצפן באמצעות CMEK.

יצירת משאב מוגן ב-Compute Engine

המסוף

כדי ליצור דיסק, מבצעים את השלבים הבאים:

  1. נכנסים לדף Disks במסוף Google Cloud .

    לפתיחת הדף Disks

  2. לוחצים על Create disk (יצירת דיסק) ומזינים את המאפיינים של הדיסק החדש.

  3. בקטע הצפנה, בוחרים באפשרות מפתח Cloud KMS.

  4. בקטע סוג המפתח, בוחרים באפשרות Cloud KMS עם Autokey ולוחצים על בקשת מפתח חדש. תוצג הודעה כשהמפתח ייווצר בהצלחה ויהיה מוכן לשימוש.

  5. כדי לסיים את יצירת הדיסק, לוחצים על 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

  1. כדי לבקש מפתח חדש של 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 שמופיע בפלט. תצטרכו את הערך הזה כדי לקבל את מזהה המשאב של המפתח שנוצר.

  2. מציאת מפתח 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.

  3. כדי ליצור דיסק מוצפן, משתמשים בפקודה 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

המסוף

  1. נכנסים לדף Create a bucket במסוף Google Cloud .

    כניסה לדף Create a bucket

  2. פועלים לפי ההוראות ליצירת מאגר חדש עד להוראה Choose how to protect object data.

  3. בקטע Choose how to protect object data, מרחיבים את הקטע Data encryption ובוחרים באפשרות Cloud KMS key.

  4. בקטע סוג המפתח, בוחרים באפשרות Cloud KMS עם Autokey ולוחצים על בקשת מפתח חדש. תוצג הודעה כשהמפתח ייווצר בהצלחה ויהיה מוכן לשימוש.

  5. כדי לסיים את יצירת הקטגוריה, לוחצים על יצירה.

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

  1. כדי לבקש מפתח חדש של 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 שמופיע בפלט. תצטרכו את הערך הזה כדי לקבל את מזהה המשאב של המפתח שנוצר.

  2. מציאת מפתח 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.

  3. כדי ליצור קטגוריה מוצפנת, משתמשים בפקודה 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, צריך לוודא שיש לכם את ההרשאות הנדרשות. מידע נוסף על יצירת מערכי נתונים זמין במאמר יצירת מערכי נתונים.

  1. במסוף Google Cloud , עוברים לדף BigQuery.

    כניסה לדף BigQuery

  2. פועלים לפי ההוראות ליצירת מערך נתונים עד שמגיעים אל אפשרויות מתקדמות > הצפנה.

  3. בקטע הצפנה, בוחרים באפשרות מפתח Cloud KMS.

  4. בקטע סוג המפתח, בוחרים באפשרות Cloud KMS עם Autokey ולוחצים על בקשת מפתח חדש. תוצג הודעה כשהמפתח ייווצר בהצלחה ויהיה מוכן לשימוש.

  5. כדי לסיים את יצירת מערך הנתונים, לוחצים על יצירת מערך נתונים.

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

  1. כדי לבקש מפתח חדש של 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 שמופיע בפלט. תצטרכו את הערך הזה כדי לקבל את מזהה המשאב של המפתח שנוצר.

  2. מציאת מפתח 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.

  3. כדי ליצור מערך נתונים מוצפן, משתמשים בפקודה 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

  1. כדי לבקש מפתח חדש של 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 כדי להגן על הסוד החדש.

  2. מציאת מפתח 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.

  3. כדי ליצור סוד מוצפן עם שכפול אוטומטי, משתמשים בפקודה 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

  1. כדי לבקש מפתח חדש של 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 שמופיע בפלט. הערך הזה נדרש כדי לקבל את מזהה המשאב של המפתח שנוצר.

  2. מציאת מפתח 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"
}

המאמרים הבאים