שימוש במפתחות הצפנה בניהול הלקוח

כברירת מחדל, Eventarc מצפין תוכן של לקוחות במנוחה. ‫Eventarc מטפל בהצפנה בשבילכם בלי שתצטרכו לבצע פעולות נוספות. האפשרות הזו נקראת הצפנת ברירת המחדל של Google.

אם אתם רוצים לשלוט במפתחות ההצפנה, אתם יכולים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) ב-Cloud KMS עם שירותים שמשולבים עם CMEK, כולל Eventarc. שימוש במפתחות Cloud KMS מאפשר לכם לשלוט ברמת ההגנה, במיקום, בלוח הזמנים של הרוטציה, בשימוש ובהרשאות הגישה, ובגבולות הקריפטוגרפיים. בנוסף, באמצעות Cloud KMS תוכלו לצפות ביומני ביקורת ולשלוט במחזורי החיים של המפתחות. במקום ש-Google תהיה הבעלים של מפתחות ההצפנה של המפתחות (KEK) הסימטריים שמגנים על הנתונים שלכם ותנהל אותם, אתם שולטים במפתחות האלה ומנהלים אותם ב-Cloud KMS.

אחרי שמגדירים את המשאבים עם CMEK, חוויית הגישה למשאבי Eventarc דומה לשימוש בהצפנה שמוגדרת כברירת מחדל ב-Google. מידע נוסף על אפשרויות ההצפנה זמין במאמר מפתחות הצפנה בניהול הלקוח (CMEK).

מפתחות הצפנה בניהול הלקוח מאוחסנים כמפתחות תוכנה, באשכול Cloud HSM או באופן חיצוני באמצעות Cloud External Key Manager.

‫Cloud KMS יוצר יומני ביקורת כשמפעילים או משביתים מפתחות, או כשמשתמשים בהם במשאבים מתקדמים של Eventarc כדי להצפין ולפענח הודעות. מידע נוסף מופיע במאמר בנושא רישום ביומן של ביקורת ב-Cloud KMS.

מה מוגן באמצעות CMEK

אתם יכולים להגדיר CMEK לערוץ שמשמש את Eventarc Standard ולהצפין את האירועים שעוברים דרך הערוץ. הפעלת ערוץ עם CMEK מגנה על הנתונים שמשויכים אליו באמצעות מפתח הצפנה שרק לכם יש גישה אליו.

כשמפעילים CMEK לערוץ Google בפרויקט Google Cloud , כל הטריגרים של Eventarc Standard לסוגי אירועים של Google באותו פרויקט ובאותו אזור מוצפנים באופן מלא באמצעות מפתח ה-CMEK הזה. אי אפשר להחיל מפתחות CMEK על כל טריגר בנפרד.

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

לפני שמשתמשים בתכונה הזו ב-Eventarc, כדאי:

המסוף

  1. מפעילים את Cloud KMS API ואת Eventarc API.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    הפעלת ממשקי ה-API

  2. יצירת אוסף מפתחות
  3. יצירת מפתח לאוסף מפתחות ספציפי

gcloud

  1. מעדכנים את הרכיבים של gcloud.
    gcloud components update
  2. להפעיל את Cloud KMS API ואת Eventarc API בפרויקט שבו יאוחסנו מפתחות ההצפנה.
    gcloud services enable cloudkms.googleapis.com eventarc.googleapis.com
  3. יצירת אוסף מפתחות
  4. יצירת מפתח לאוסף מפתחות ספציפי

כדי לקבל מידע על כל הדגלים והערכים האפשריים, מריצים את הפקודה עם הדגל --help.

Terraform

  1. מפעילים את Cloud KMS API ואת Eventarc API בפרויקט שבו יאוחסנו מפתחות ההצפנה על ידי הגדרת המשאב google_project_service:

    # Enable Cloud KMS API
    resource "google_project_service" "cloudkms" {
      service            = "cloudkms.googleapis.com"
      disable_on_destroy = false
    }
    
    # Enable Eventarc API
    resource "google_project_service" "eventarc" {
      service            = "eventarc.googleapis.com"
      disable_on_destroy = false
    }
  2. יוצרים אוסף מפתחות ומפתח על ידי הגדרת המשאבים google_kms_key_ring ו-google_kms_crypto_key:

    resource "random_id" "default" {
      byte_length = 8
    }
    
    # Create a Cloud KMS key ring
    resource "google_kms_key_ring" "default" {
      name     = "${random_id.default.hex}-example-keyring"
      location = "us-central1"
    }
    
    # Create a Cloud KMS key
    resource "google_kms_crypto_key" "default" {
      name            = "example-key"
      key_ring        = google_kms_key_ring.default.id
      rotation_period = "7776000s"
    }

מידע נוסף על שימוש ב-Terraform זמין במאמרי העזרה בנושא Terraform ב- Google Cloud.

שימו לב ש-Cloud KMS ו-Eventarc הם שירותים אזוריים. האזור של מפתח Cloud KMS והאזור של ערוץ Eventarc המוגן חייבים להיות זהים.

מעניקים לחשבון השירות של Eventarc גישה למפתח

כדי לתת לחשבון השירות של Eventarc גישה למפתח Cloud KMS, צריך להוסיף את חשבון השירות כחשבון משתמש של המפתח ולהעניק לחשבון השירות את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter:

המסוף

כשמפעילים CMEK לערוץ של Google או של צד שלישי דרך המסוף, מוצגת בקשה להעניק לחשבון השירות את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter. מידע נוסף מופיע במאמר הזה בקטע הפעלת CMEK לסוגי אירועים של Google או הפעלת CMEK לערוץ אירועים של צד שלישי.

gcloud

 gcloud kms keys add-iam-policy-binding KEY_NAME \
     --keyring RING_NAME \
     --location LOCATION \
     --member serviceAccount:SERVICE_AGENT_EMAIL \
     --role roles/cloudkms.cryptoKeyEncrypterDecrypter

מחליפים את מה שכתוב בשדות הבאים:

  • KEY_NAME: השם של המפתח. לדוגמה, my-key.
  • RING_NAME: השם של אוסף המפתחות. לדוגמה, my-keyring.
  • LOCATION: המיקום של המפתח. לדוגמה, us-central1.
  • SERVICE_AGENT_EMAIL: כתובת האימייל של חשבון השירות עם התפקיד eventarc.serviceAgent.

    לדוגמה, service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com. מידע נוסף זמין במאמר בנושא סוכני שירות.

Terraform

  1. יוצרים את הזהות בשירות Eventarc על ידי הגדרת המשאב google_project_service_identity:

    resource "google_project_service_identity" "eventarc_sa" {
      provider = google-beta
      project  = data.google_project.default.project_id
      service  = "eventarc.googleapis.com"
    }
  2. מקצים את התפקיד Cloud KMS לחשבון השירות של Eventarc על ידי הגדרת המשאב google_kms_crypto_key_iam_member:

    # Grant service account access to Cloud KMS key
    resource "google_kms_crypto_key_iam_member" "default" {
      crypto_key_id = google_kms_crypto_key.default.id
      role          = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
      member        = "serviceAccount:${google_project_service_identity.eventarc_sa.email}"
    }

הפעלת CMEK לסוגי אירועים של Google

טריגרים של Eventarc שמנתבים סוגי אירועים של Google מפרסמים אירועים בערוץ וירטואלי שנקרא ערוץ Google, שהוא ספציפי לפרויקט ולאזור. הערוץ הווירטואלי הזה זמין בכל האזורים של Eventarc.

כשמפעילים CMEK לערוץ Google ב Google Cloud פרויקט, כל הטריגרים של Eventarc לסוגי אירועים של Google באותו פרויקט ובאותו אזור מוצפנים באופן מלא באמצעות מפתח ה-CMEK הזה. אתם יכולים להוסיף כמה מפתחות CMEK ולשייך כל אחד מהם לאזור ספציפי בערוץ Google. אי אפשר להחיל מפתחות CMEK על בסיס כל טריגר בנפרד.

המסוף

  1. במסוף Google Cloud , נכנסים לדף Eventarc > Channels.

    מעבר אל 'ערוצים'

  2. לוחצים על ערוץ עם ספק של Google.

  3. בדף Edit channel (עריכת הערוץ), מסמנים את התיבה Use a customer-managed encryption key (CMEK) (שימוש במפתח הצפנה בניהול הלקוח (CMEK)).

  4. לוחצים על הוספת מפתח הצפנה.

  5. בוחרים אזור וברשימה מפתח הצפנה מסוג CMEK בוחרים חבילת מפתחות שיצרתם עבור האזור. שימו לב שאפשר להוסיף רק מפתח הצפנה אחד לכל אזור בערוץ.

  6. אופציונלי: כדי להזין ידנית את שם המשאב של המפתח, ברשימה CMEK encryption key (מפתח הצפנה CMEK), לוחצים על Don't see your key? מזינים את שם המשאב של המפתח, ומזינים את שם המפתח בפורמט שצוין.

  7. אם תתבקשו, תנו לחשבון השירות של Eventarc את התפקיד cloudkms.cryptoKeyEncrypterDecrypter עם התפקיד eventarc.serviceAgent.

  8. אופציונלי: לוחצים על הוספת מפתח הצפנה כדי להוסיף עוד מחזיק מפתחות שיצרתם עבור אזור אחר.

  9. לוחצים על Save.

gcloud

 gcloud eventarc google-channels update \
     --location=LOCATION \
     --crypto-key=KEY

מחליפים את מה שכתוב בשדות הבאים:

  • LOCATION: האזור של ערוץ Google שרוצים להגן עליו. המיקום צריך להיות זהה למיקום של המפתח שבו נעשה שימוש. הערה: אפשר להוסיף רק מפתח הצפנה אחד לכל אזור בערוץ.
  • KEY: השם המלא של מפתח Cloud KMS בפורמט projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Terraform

מפעילים את CMEK עבור המשאב GoogleChannelConfig בפרויקט ובמיקום נתונים על ידי הגדרת המשאב google_eventarc_google_channel_config:

# Specify a CMEK key for the `GoogleChannelConfig` resource
resource "google_eventarc_google_channel_config" "default" {
  location        = "us-central1"
  name            = "googleChannelConfig"
  crypto_key_name = google_kms_crypto_key.default.id
  depends_on      = [google_kms_crypto_key_iam_member.default]
}

REST

אפשר לעדכן את המשאב GoogleChannelConfig באמצעות method‏ projects.locations.updateGoogleChannelConfig ולציין מפתח CMEK לפרויקט ולמיקום מסוימים.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  • LOCATION: האזור של ערוץ Google שרוצים להגן עליו. הוא חייב להיות זהה למיקום של המפתח שבו נעשה שימוש – לדוגמה, us-central1. שימו לב שאפשר להוסיף רק מפתח הצפנה אחד לכל אזור בערוץ.
  • KEY_NAME: השם של המפתח, לדוגמה my-key.
  • RING_NAME: השם של מחזיק המפתחות, למשל my-keyring.

תוכן בקשת JSON:

{
  "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע מעודכן של GoogleChannelConfig:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig",
  "updateTime": "2025-03-05T17:56:54.106390447Z",
  "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}

אם אתם יוצרים טריגרים של Pub/Sub באמצעות נושאים קיימים משלכם, מומלץ להגדיר גם את מפתח KMS בנושא כדי לקבל הגנה מקיפה של CMEK. מידע נוסף על הגדרת נושאים ב-Pub/Sub

אימות השימוש ב-Cloud KMS

כדי לוודא שהערוץ עומד עכשיו בדרישות של CMEK:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Eventarc >Triggers.

    כניסה לדף Triggers

  2. לוחצים על טריגר שמופיע בו ספק האירועים Google Cloud מקור ואזור שמוגנים באמצעות CMEK.

  3. בדף פרטי הטריגר מוצג הסטטוס הצפנה, עם ההודעה Events encrypted using Customer-managed encryption keys.

gcloud

כדי לאשר את מפתח ה-CMEK, אפשר להשתמש בפקודה google-channels describe.

 gcloud eventarc google-channels describe \
     --location=LOCATION

הפלט אמור להיראות כך:

 cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig
 updateTime: '2022-06-28T17:24:56.365866104Z'

הערך cryptokeyName מציג את מפתח Cloud KMS שבו נעשה שימוש בערוץ Google.

Terraform

כדי לאשר את מפתח ה-CMEK, אפשר להשתמש בפקודה state show של Terraform.

terraform state show google_eventarc_google_channel_config.default

הפלט אמור להיראות כך:

# google_eventarc_google_channel_config.default:
resource "google_eventarc_google_channel_config" "default" {
    crypto_key_name = "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
    id              = "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig"
    location        = "LOCATION"
    name            = "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig"
    project         = "PROJECT_ID"
    update_time     = "2025-03-24T17:15:08.809635011Z"
}

REST

כדי לאשר את מפתח ה-CMEK, אפשר לאחזר את המשאב GoogleChannelConfig באמצעות השיטה projects.locations.getGoogleChannelConfig.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  • LOCATION: האזור של ערוץ Google המוגן.

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של GoogleChannelConfig:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig",
  "updateTime": "2025-03-05T17:56:54.106390447Z",
  "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}

הפעלת CMEK בערוץ של צד שלישי

ערוץ Eventarc לצדדים שלישיים הוא משאב שדרכו ישויות שאינןGoogle Cloud שמציעות מקור Eventarc יכולות לקיים אינטראקציה עם יעדים. הערוץ הזה ספציפי לאזור מסוים, ואפשר להוסיף רק מפתח אחד לכל ערוץ של צד שלישי.

כדי להפעיל CMEK בערוץ של צד שלישי:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Eventarc > Channels.

    מעבר אל 'ערוצים'

  2. לוחצים על ערוץ עם ספק צד שלישי.

  3. בדף פרטי הערוץ, לוחצים על עריכה.

  4. בדף Edit channel, בקטע Encryption, בוחרים באפשרות Cloud KMS key.

  5. ברשימה סוג המפתח, בוחרים שיטה לניהול המפתחות.

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

  6. בוחרים מפתח מהרשימה Select a Cloud KMS key. חשוב לזכור שאפשר להוסיף רק מפתח הצפנה אחד לכל אזור בערוץ.

  7. אופציונלי: כדי להזין ידנית את שם המשאב של המפתח, ברשימה Select a Cloud KMS key (בחירת מפתח Cloud KMS), לוחצים על Enter key manually (הזנת מפתח באופן ידני) ומזינים את שם המפתח בפורמט שצוין.

  8. אם מתבקשים, מקצים את התפקיד cloudkms.cryptoKeyEncrypterDecrypter לסוכן השירות של Eventarc.

  9. לוחצים על Save.

gcloud

 gcloud eventarc channels update CHANNEL_NAME \
     --location=LOCATION \
     --crypto-key=KEY

מחליפים את מה שכתוב בשדות הבאים:

  • CHANNEL_NAME: השם של הערוץ של הצד השלישי. כדי ליצור ערוץ חדש של צד שלישי, אפשר לעיין במאמר בנושא יצירת ערוץ.
  • LOCATION: האזור של הערוץ של הצד השלישי שרוצים להגן עליו. המיקום צריך להיות זהה למיקום של המפתח.
  • KEY: השם המלא של מפתח Cloud KMS בפורמט projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Terraform

כדי לציין מפתח CMEK לערוץ של צד שלישי, צריך להגדיר את המשאב google_eventarc_channel. לדוגמה:

resource "google_eventarc_channel" "default" {
  location        = "us-central1"
  name            = "CHANNEL_NAME"
  crypto_key_name = google_kms_crypto_key.default.id
}

מחליפים את CHANNEL_NAME בשם של הערוץ של הצד השלישי.

REST

אתם יכולים לעדכן משאב Channel באמצעות ה-method‏ projects.locations.channels.patch ולציין מפתח CMEK לפרויקט ולמיקום מסוימים.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • CHANNEL_NAME: שם הערוץ.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  • LOCATION: האזור של הערוץ שרוצים להגן עליו. הוא חייב להיות זהה למיקום של המפתח שבו נעשה שימוש – לדוגמה, us-central1. שימו לב שאפשר להוסיף רק מפתח הצפנה אחד לכל אזור בערוץ.
  • KEY_NAME: השם של המפתח, לדוגמה my-key.
  • RING_NAME: השם של מחזיק המפתחות, למשל my-keyring.

תוכן בקשת JSON:

{
  "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע חדש של Operation:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
    "verb": "update",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

אימות השימוש ב-Cloud KMS

כדי לוודא שהערוץ עומד עכשיו בדרישות של CMEK:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Eventarc >Triggers.

    כניסה לדף Triggers

  2. לוחצים על טריגר עם מקור צד שלישי בתור ספק האירועים ואזור שמוגן באמצעות CMEK.

  3. בדף פרטי הטריגר, הסטטוס של הצפנה מציג את ההודעה Events encrypted using Customer-managed encryption keys.

gcloud

 gcloud eventarc channels describe CHANNEL_NAME \
     --location=LOCATION

הפלט אמור להיראות כך:

 createTime: '2022-06-28T18:05:52.403999904Z'
 cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig
 pubsubTopic: projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID
 state: ACTIVE
 uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
 updateTime: '2022-06-28T18:09:18.650727516Z'

הערך cryptokeyName מציג את המפתח של Cloud KMS ששימש לערוץ של צד שלישי.

Terraform

כדי לאשר את מפתח ה-CMEK, אפשר להשתמש בפקודה state show של Terraform.

terraform state show google_eventarc_channel.default

הפלט אמור להיראות כך:

# google_eventarc_channel.default:
resource "google_eventarc_channel" "default" {
create_time     = "2025-03-31T13:07:44.721274062Z"
crypto_key_name = "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
id              = "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME"
location        = "LOCATION"
name            = "CHANNEL_NAME"
project         = "PROJECT_ID"
pubsub_topic    = "projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID"
state           = "ACTIVE"
uid             = "406302e9-1d41-4479-8f4f-2524a803790e"
update_time     = "2025-03-31T13:07:49.708241490Z"
}

REST

כדי לאשר את מפתח ה-CMEK של ערוץ, אפשר לאחזר משאב Channel באמצעות השיטה projects.locations.channels.get.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • CHANNEL_NAME: שם הערוץ.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  • LOCATION: האזור של הערוץ המוגן.

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של Channel:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
  "uid": "12f941a6-196a-457b-bfdb-ca21138859d0",
  "createTime": "2025-01-29T15:05:12.113912689Z",
  "updateTime": "2025-01-29T15:05:17.210986285Z",
  "pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
  "state": "ACTIVE",
  "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}

הצגת המפתח שמשמש לערוץ

אפשר לתאר ערוץ Eventarc ולהציג את מפתח Cloud KMS שמשמש את הערוץ.

המסוף

  1. במסוף Google Cloud , נכנסים לדף Eventarc > Channels.

    מעבר אל 'ערוצים'

  2. לוחצים על שם הערוץ.

  3. מוצגים כל מפתחות ההצפנה בניהול הלקוח (CMEK) שמשמשים לערוץ.

gcloud

בהתאם לסוג הערוץ, מריצים את הפקודה הבאה:

פלטפורמה של Google

gcloud eventarc google-channels describe \
    --location=LOCATION

ערוץ של צד שלישי

gcloud eventarc channels describe CHANNEL_NAME \
    --location=LOCATION

הפלט צריך לכלול שורה שדומה לזו:

cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME

הערך cryptoKeyName מציג את המפתח של Cloud KMS שמשמש לערוץ.

Terraform

בהתאם לסוג הערוץ, מריצים את הפקודה הבאה:

פלטפורמה של Google

terraform state show google_eventarc_google_channel_config.default

ערוץ של צד שלישי

terraform state show google_eventarc_channel.default

הפלט צריך לכלול שורה שדומה לזו:

crypto_key_name= "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"

הערך crypto_key_name מציג את מפתח Cloud KMS שבו נעשה שימוש בערוץ.

REST

בהתאם לסוג הערוץ, שולחים את הבקשה הבאה:

פלטפורמה של Google

כדי לאשר את מפתח ה-CMEK עבור פרויקט ומיקום מסוימים, אפשר לאחזר את משאב GoogleChannelConfig באמצעות ה-method‏ projects.locations.getGoogleChannelConfig.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  • LOCATION: האזור של ערוץ Google המוגן.

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של GoogleChannelConfig:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig",
  "updateTime": "2025-03-05T17:56:54.106390447Z",
  "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}

ערוץ של צד שלישי

כדי לאשר את מפתח ה-CMEK עבור פרויקט ומיקום מסוימים, אפשר לאחזר משאב Channel באמצעות ה-method‏ projects.locations.channels.get.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • CHANNEL_NAME: שם הערוץ.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  • LOCATION: האזור של הערוץ המוגן.

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע של Channel:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
  "uid": "12f941a6-196a-457b-bfdb-ca21138859d0",
  "createTime": "2025-01-29T15:05:12.113912689Z",
  "updateTime": "2025-01-29T15:05:17.210986285Z",
  "pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
  "state": "ACTIVE",
  "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}

השבתת CMEK

אפשר להשבית את ההגנה באמצעות CMEK שמשויכת לערוץ. האירועים שמועברים דרך ערוצים כאלה עדיין מוגנים על ידי Google-owned and Google-managed encryption keys. כדי למחוק את ההגנה באמצעות CMEK שמשויכת לערוץ:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Eventarc > Channels.

    מעבר אל 'ערוצים'

  2. בהתאם לסוג הערוץ, מבצעים את השלבים הבאים:

    פלטפורמה של Google

    1. לוחצים על ערוץ עם ספק של Google.
    2. בדף עריכת הערוץ, מעבירים את מצביע העכבר מעל הרשימה מפתח הצפנה מסוג CMEK כדי לראות את הכפתור מחיקת פריט.
    3. לוחצים על מחיקת הפריט.
    4. לוחצים על Save.

      יכול להיות שתצטרכו לרענן את הדף כדי להפעיל את תיבת הסימון Use a customer-managed encryption key (CMEK) (שימוש במפתח הצפנה בניהול הלקוח).

    ערוץ של צד שלישי

    1. לוחצים על ערוץ עם ספק צד שלישי.
    2. בדף פרטי הערוץ, לוחצים על עריכה.
    3. בדף Edit channel, בקטע Encryption, בוחרים באפשרות Google-managed encryption key.
    4. לוחצים על Save.

gcloud

בהתאם לסוג הערוץ, מריצים את הפקודה הבאה:

פלטפורמה של Google

gcloud eventarc google-channels \
    update --clear-crypto-key

ערוץ של צד שלישי

gcloud eventarc channels CHANNEL_NAME \
    update --clear-crypto-key

Terraform

בהתאם לסוג הערוץ, צריך לנקות את הערך crypto_key_name על ידי אי-ציון שלו כשמגדירים את משאב Terraform:

פלטפורמה של Google

resource "google_eventarc_google_channel_config" "default" {
  location        = "us-central1"
  name            = "googleChannelConfig"
}

ערוץ של צד שלישי

resource "google_eventarc_channel" "default" {
  location        = "us-central1"
  name            = "CHANNEL_NAME"
}

REST

בהתאם לסוג הערוץ, שולחים את הבקשה הבאה:

פלטפורמה של Google

כדי למחוק את מפתח ה-CMEK, אפשר לעדכן את המשאב GoogleChannelConfig עבור פרויקט ומיקום מסוימים באמצעות השיטה projects.locations.updateGoogleChannelConfig.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  • LOCATION: האזור של ערוץ Google המוגן שרוצים להגן עליו.

תוכן בקשת JSON:

{
  "cryptoKeyName": ""
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע מעודכן של GoogleChannelConfig:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig",
  "updateTime": "2025-03-05T17:56:54.106390447Z"
}

ערוץ של צד שלישי

כדי למחוק את מפתח ה-CMEK, אפשר לעדכן משאב Channel עבור פרויקט ומיקום מסוימים באמצעות ה-method‏ projects.locations.channels.patch.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • CHANNEL_NAME: שם הערוץ.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud.
  • LOCATION: האזור של הערוץ המוגן.

תוכן בקשת JSON:

{
  "cryptoKeyName": ""
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אם הפעולה בוצעה ללא שגיאות, גוף התגובה יכיל מופע חדש של Operation:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
    "verb": "update",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

החלה של מדיניות הארגון ל-CMEK

‫Eventarc משולב עם שני אילוצים של מדיניות הארגון כדי לוודא שנעשה שימוש ב-CMEK בכל הארגון:

  • התג constraints/gcp.restrictNonCmekServices משמש לדרישה של הגנה באמצעות CMEK.
  • constraints/gcp.restrictCmekCryptoKeyProjects משמש להגבלת המפתחות ב-Cloud KMS שמשמשים להגנה באמצעות CMEK.

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

שיקולים בהחלת מדיניות הארגון

לפני שמחילים מדיניות ארגונית של CMEK, חשוב להביא בחשבון את הנקודות הבאות.

  • הכנה לעיכוב בהפצה

    אחרי שמגדירים או מעדכנים מדיניות ארגונית, יכולות לחלוף עד 15 דקות עד שהמדיניות החדשה תיכנס לתוקף.

  • שיקולים לגבי משאבים קיימים

    משאבים קיימים לא כפופים למדיניות ארגון שנוצרה לאחרונה. לדוגמה, מדיניות ארגונית לא חלה באופן רטרואקטיבי על צינורות קיימים. עדיין אפשר לגשת למשאבים האלה בלי מפתח CMEK, ואם רלוונטי, הם עדיין מוצפנים באמצעות מפתחות קיימים.

  • אימות ההרשאות הנדרשות להגדרת מדיניות הארגון

    יכול להיות שיהיה קשה לקבל את ההרשאה להגדיר או לעדכן את מדיניות הארגון לצורך בדיקות. צריך לקבל את התפקיד 'אדמין מדיניות ארגונית', שאפשר לתת רק ברמת הארגון (ולא ברמת הפרויקט או התיקייה).

    למרות שצריך לתת את התפקיד ברמת הארגון, עדיין אפשר לציין מדיניות שתחול רק על פרויקט או תיקייה ספציפיים.

דרישה להשתמש במפתחות CMEK למשאבי Eventarc חדשים

אתם יכולים להשתמש באילוץ constraints/gcp.restrictNonCmekServices כדי לדרוש שימוש במפתחות CMEK להגנה על משאבי Eventarc חדשים בארגון.

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

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

המסוף

  1. במסוף Google Cloud , נכנסים לדף מדיניות הארגון.

    מעבר למדיניות הארגון

  2. משתמשים בFilter כדי לחפש את האילוץ הבא:

    constraints/gcp.restrictNonCmekServices
    
  3. בעמודה Name (שם), לוחצים על Restrict which services may create resources without CMEK (הגבלת השירותים שיכולים ליצור משאבים ללא CMEK).

  4. לוחצים על ניהול המדיניות.

  5. בדף עריכת מדיניות, בקטע מקור המדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.

  6. בקטע כללים, לוחצים על הוספת כלל.

  7. ברשימה ערכי מדיניות, בוחרים באפשרות בהתאמה אישית.

  8. ברשימה Policy type (סוג המדיניות), בוחרים באפשרות Deny (דחייה).

  9. בשדה ערכים מותאמים אישית, מזינים את הערכים הבאים:

    is:eventarc.googleapis.com
    
  10. לוחצים על סיום ואז על הגדרת מדיניות.

gcloud

  1. יוצרים קובץ זמני /tmp/policy.yaml לאחסון המדיניות:

      name: projects/PROJECT_ID/policies/gcp.restrictNonCmekServices
      spec:
        rules:
        - values:
            deniedValues:
            - is:eventarc.googleapis.com

    מחליפים את PROJECT_ID במזהה הפרויקט שבו רוצים להחיל את האילוץ הזה.

  2. מריצים את הפקודה org-policies set-policy:

    gcloud org-policies set-policy /tmp/policy.yaml

כדי לוודא שהמדיניות הוחלה בהצלחה, אפשר לנסות ליצור ערוץ Eventarc Standard בפרויקט. התהליך ייכשל אם לא תציינו מפתח Cloud KMS.

הגבלת מפתחות Cloud KMS לפרויקט Eventarc

אפשר להשתמש באילוץ constraints/gcp.restrictCmekCryptoKeyProjects כדי להגביל את מפתחות Cloud KMS שבהם אפשר להשתמש כדי להגן על משאב בפרויקט Eventarc.

לדוגמה, אפשר לציין כלל שדומה לכלל הבא: "לגבי משאבי Eventarc רלוונטיים ב-projects/my-company-data-project, מפתחות Cloud KMS שמשמשים בפרויקט הזה חייבים להגיע מ-projects/my-company-central-keys או מ-projects/team-specific-keys".

המסוף

  1. במסוף Google Cloud , נכנסים לדף מדיניות הארגון.

    מעבר למדיניות הארגון

  2. משתמשים בFilter כדי לחפש את האילוץ הבא:

    constraints/gcp.restrictCmekCryptoKeyProjects
    
  3. בעמודה 'שם', לוחצים על הגבלת הפרויקטים שיכולים לספק מפתחות הצפנה של KMS ל-CMEK.

  4. לוחצים על ניהול המדיניות.

  5. בדף עריכת מדיניות, בקטע מקור המדיניות, בוחרים באפשרות במקום המדיניות של המשאב הראשי.

  6. בקטע כללים, לוחצים על הוספת כלל.

  7. ברשימה ערכי מדיניות, בוחרים באפשרות בהתאמה אישית.

  8. ברשימה סוג המדיניות, בוחרים באפשרות הרשאה.

  9. בשדה ערכים מותאמים אישית, מזינים את הערכים הבאים:

    under:projects/KMS_PROJECT_ID
    

    מחליפים את הערך KMS_PROJECT_ID במזהה הפרויקט שבו נמצאים מפתחות Cloud KMS שרוצים להשתמש בהם.

    לדוגמה, under:projects/my-kms-project.

  10. לוחצים על סיום ואז על הגדרת מדיניות.

gcloud

  1. יוצרים קובץ זמני /tmp/policy.yaml לאחסון המדיניות:

      name: projects/PROJECT_ID/policies/gcp.restrictCmekCryptoKeyProjects
      spec:
        rules:
        - values:
            allowedValues:
            - under:projects/KMS_PROJECT_ID

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט שבו רוצים להחיל את האילוץ הזה.
    • KMS_PROJECT_ID: המזהה של הפרויקט שבו נמצאים מפתחות Cloud KMS שרוצים להשתמש בהם.
  2. מריצים את הפקודה org-policies set-policy:

    gcloud org-policies set-policy /tmp/policy.yaml

כדי לוודא שהמדיניות הוחלה בהצלחה, אפשר לנסות ליצור ערוץ Eventarc Standard באמצעות מפתח Cloud KMS מפרויקט אחר. התהליך ייכשל.

השבתה והפעלה של מפתחות Cloud KMS

בגרסת מפתח מאוחסנים חומרי המפתח הקריפטוגרפיים שמשמשים להצפנה, לפענוח, לחתימה ולאימות של נתונים. אפשר להשבית את גרסת המפתח הזו כדי שלא תהיה גישה לנתונים שהוצפנו באמצעות המפתח.

אם ל-Eventarc אין גישה למפתחות Cloud KMS, פרסום האירועים בערוצים נכשל עם שגיאות FAILED_PRECONDITION ומסירת האירועים נפסקת. אפשר להפעיל מפתח במצב מושבת כדי לקבל שוב גישה לנתונים המוצפנים.

השבתת מפתחות Cloud KMS

כדי למנוע מ-Eventarc להשתמש במפתח להצפנה או לפענוח של נתוני האירועים, אפשר לבצע אחת מהפעולות הבאות:

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

הפעלה מחדש של מפתחות Cloud KMS

כדי לחדש את העברת האירועים ואת הפרסום שלהם, צריך לשחזר את הגישה ל-Cloud KMS.

תמחור

השילוב הזה לא כרוך בעלויות נוספות מעבר לפעולות העיקריות, שמחויבות בפרויקט שלכם. Google Cloudהשימוש ב-CMEK בערוץ כרוך בתשלום על גישה לשירות Cloud KMS על סמך תמחור Pub/Sub.

מידע נוסף על התמחור העדכני ביותר זמין במאמר תמחור של Cloud KMS.

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