כשמשתמשים בשירות המנוהל ל-Apache Spark, נתוני האשכול והמשימות מאוחסנים בדיסקים קשיחים קבועים שמשויכים למכונות הווירטואליות ב-Compute Engine באשכול, ובמאגר זמני ב-Cloud Storage. כברירת מחדל, הנתונים בדיסק הקשיח ובדלי מוצפנים באמצעות מפתח להצפנת נתונים (DEK) ומפתח להצפנת מפתחות הצפנה (KEK) שנוצרו על ידי Google.
אם רוצים לשלוט במפתח להצפנת מפתחות הצפנה (KEK) ולנהל אותו, אפשר להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) (Google ממשיכה לשלוט במפתח להצפנת נתונים (DEK)). מידע נוסף על מפתחות הצפנה של הנתונים בחשבון Google זמין במאמר בנושא הצפנה במנוחה.
הצפנת נתונים באשכול CMEK
אתם יכולים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) כדי להצפין את נתוני האשכול הבאים:
- נתונים בדיסקים קשיחים קבועים שמצורפים למכונות וירטואליות של אשכולות Managed Service for Apache Spark
- נתוני ארגומנטים של משימות שנשלחו לאשכול, כמו מחרוזת שאילתה שנשלחה עם משימת Spark SQL
- מטא-נתונים של אשכול, פלט של מנהל המשימות ונתונים אחרים שנכתבו לקטגוריית ההכנה של אשכול Managed Service for Apache Spark
לפני שמתחילים
- נכנסים לחשבון 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 Dataproc, Cloud Key Management Service, Compute Engine, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
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 Dataproc, Cloud Key Management Service, Compute Engine, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init
יצירת מפתחות
כדי להגן על המשאבים שלכם ב-Managed Service for Apache Spark באמצעות CMEK, אתם יכולים להפוך את יצירת המפתחות לאוטומטית או ליצור מפתחות באופן ידני.
יצירת מפתחות אוטומטית
משתמשים ב-Autokey כדי להקצות ולספק CMEK באופן אוטומטי. Autokey יוצרת אוספי מפתחות ומפתחות לפי דרישה כשיוצרים משאבים. סוכני השירות משתמשים במפתחות בפעולות הצפנה ופענוח. במקרה הצורך, Autokey יוצר את הסוכנים ומקצה להם את התפקידים הנדרשים בניהול הזהויות והרשאות הגישה (IAM). מידע נוסף זמין במאמר סקירה כללית על Autokey.
יצירה ידנית של מפתחות
כדי ליצור מפתחות באופן ידני להצפנת נתוני אשכול באמצעות CMEK:
יוצרים מפתח אחד או יותר באמצעות Cloud KMS. שם המשאב, שנקרא גם מזהה המשאב של מפתח, שבו תשתמשו בשלבים הבאים, בנוי באופן הבא:
המפתח (CMEK) צריך להיות באותו מיקום שבו נמצא המשאב המוצפן. לדוגמה, מפתח ה-CMEK שמשמש להצפנת משאב באזורprojects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
us-central1צריך להיות ממוקם גם באזורus-central1.כדי לוודא שלכל אחד מחשבונות השירות הבאים – חשבון השירות של סוכן Compute Engine, חשבון השירות של סוכן Cloud Storage וחשבון השירות של סוכן Managed Service for Apache Spark – יש את ההרשאות הנדרשות להגנה על משאבים באמצעות מפתחות Cloud KMS, צריך לבקש מהאדמין להקצות לכל אחד מחשבונות השירות האלה את תפקיד ה-IAM Cloud KMS CryptoKey Encrypter/Decrypter (
roles/cloudkms.cryptoKeyEncrypterDecrypter) בפרויקט.דוגמה להקצאת התפקיד Cloud KMS CryptoKey Encrypter/Decrypter לחשבון השירות של סוכן השירות Managed Service for Apache Spark באמצעות Google Cloud CLI:
gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
מחליפים את מה שכתוב בשדות הבאים:
KMS_PROJECT_ID: המזהה של פרויקט Google Cloud שמכיל את מפתח Cloud KMS.
PROJECT_NUMBER: מספר הפרויקט (לא מזהה הפרויקט) של הפרויקט שבו מופעלים משאבי Managed Service for Apache Spark. Google Cloudאם התפקיד של סוכן השירות Managed Service for Apache Spark לא מצורף אל חשבון השירות של סוכן השירות Managed Service for Apache Spark, צריך להוסיף את ההרשאה
serviceusage.services.useלתפקיד מותאם אישית שמצורף אל חשבון השירות של סוכן השירות Managed Service for Apache Spark.
יצירת אשכול עם CMEK
מעבירים את מזהה המשאב של המפתח כשיוצרים את אשכול Managed Service for Apache Spark.
CLI של gcloud
- כדי להצפין נתונים בדיסק לאחסון מתמיד של אשכול באמצעות המפתח שלכם, מעבירים את מזהה המשאב של המפתח לדגל
--gce-pd-kms-keyכשיוצרים את האשכול.gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --gce-pd-kms-key='projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME' \ other arguments ...אפשר לאמת את הגדרת המפתח באמצעות כלי שורת הפקודה
gcloud.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONקטע קוד של פלט הפקודה:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name ... - כדי להצפין נתונים בדיסק לאחסון מתמיד של אשכול ונתוני ארגומנטים של משימות באמצעות המפתח, מעבירים את מזהה המשאב של המפתח אל הדגל
--kms-keyכשיוצרים את האשכול. במאמר [Cluster.EncryptionConfig.kmsKey](/managed-spark/docs/reference/rest/v1/ClusterConfig#EncryptionConfig.FIELDS.kms_key) מפורטת רשימה של סוגי משימות וארגומנטים שמוצפנים באמצעות הדגל `--kms-key` .gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --kms-key='projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME' \ other arguments ...אפשר לוודא את הגדרות המפתח באמצעות הפקודה
dataproc clusters describeב-CLI של gcloud. מזהה משאב המפתח מוגדר ב-gcePdKmsKeyNameוב-kmsKeyכדי להשתמש במפתח שלכם בהצפנה של דיסק לאחסון מתמיד של אשכול ונתוני ארגומנטים של משימות.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONקטע קוד של פלט הפקודה:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ... - כדי להצפין את המטא-נתונים של האשכול, את מנהל המשימות ונתוני פלט אחרים שנכתבים לקטגוריית האחסון הזמני של Managed Service for Apache Spark ב-Cloud Storage:
- יצירת קטגוריה משלכם עם CMEK כשמוסיפים את המפתח לקטגוריה, משתמשים במפתח שיצרתם בשלב 1.
- מעבירים את שם הקטגוריה לדגל
--bucketכשיוצרים את האשכול.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAME \ other arguments ...אפשר גם להעביר קטגוריות עם CMEK לפקודה `gcloud dataproc jobs submit` אם העבודה שלכם מקבלת ארגומנטים של קטגוריות, כמו בדוגמה הבאה של `cmek-bucket`:
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
API בארכיטקטורת REST
- כדי להצפין נתונים בדיסק לאחסון מתמיד של מכונת VM באשכול באמצעות המפתח שלכם, צריך לכלול את השדה ClusterConfig.EncryptionConfig.gcePdKmsKeyName כחלק מבקשת cluster.create.
אפשר לוודא את הגדרת המפתח באמצעות הפקודה
dataproc clusters describeב-CLI של gcloud.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONקטע קוד של פלט הפקודה:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ... - כדי להצפין את נתוני הדיסקים לאחסון מתמיד של מכונות וירטואליות באשכול ואת נתוני הארגומנטים של המשימות באמצעות המפתח שלכם, צריך לכלול את השדה
Cluster.EncryptionConfig.kmsKeyכחלק מבקשת cluster.create. Cluster.EncryptionConfig.kmsKey מפורטים סוגי המשימות והארגומנטים שמוצפנים בשדה--kms-key.אפשר לוודא את הגדרות המפתח באמצעות הפקודה
dataproc clusters describeב-CLI של gcloud. מזהה משאב המפתח מוגדר ב-gcePdKmsKeyNameוב-kmsKeyכדי להשתמש במפתח שלכם בהצפנה של דיסק לאחסון מתמיד של אשכול ונתוני ארגומנטים של משימות.gcloud dataproc clusters describe CLUSTER_NAME \ --region=REGIONקטע קוד של פלט הפקודה:
... configBucket: dataproc- ... encryptionConfig: gcePdKmsKeyName: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ... - כדי להצפין את המטא-נתונים של האשכול, את מנהל המשימות ואת נתוני הפלט האחרים שנכתבים לקטגוריית אחסון זמני של Managed Service for Apache Spark ב-Cloud Storage:
- יצירת קטגוריה משלכם עם CMEK כשמוסיפים את המפתח לקטגוריה, משתמשים במפתח שיצרתם בשלב 1.
- מעבירים את שם הקטגוריה לשדה ClusterConfig.configBucket כחלק מבקשת cluster.create.
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --bucket=CMEK_BUCKET_NAME \ other arguments ...אפשר גם להעביר קטגוריות עם CMEK לפקודה `gcloud dataproc jobs submit` אם העבודה שלכם מקבלת ארגומנטים של קטגוריות, כמו בדוגמה הבאה של `cmek-bucket`:
gcloud dataproc jobs submit pyspark gs://cmek-bucket/wordcount.py \ --region=region \ --cluster=cluster-name \ -- gs://cmek-bucket/shakespeare.txt gs://cmek-bucket/counts
שימוש ב-CMEK עם נתונים של תבניות זרימת עבודה
אפשר להצפין באמצעות CMEK נתונים של ארגומנטים של משימות בתבנית של זרימת עבודה ב-Managed Service for Apache Spark, כמו מחרוזת השאילתה של משימת Spark SQL. כדי להשתמש ב-CMEK עם תבנית של תהליך עבודה בשירות מנוהל ל-Apache Spark, פועלים לפי שלבים 1, 2 ו-3 בקטע הזה. WorkflowTemplate.EncryptionConfig.kmsKey מפורטת רשימה של סוגי משימות וארגומנטים של תבניות של תהליכי עבודה שמוצפנים באמצעות CMEK כשהתכונה הזו מופעלת.
- יוצרים מפתח באמצעות Cloud KMS.
שם המשאב של המפתח, שבו תשתמשו בשלבים הבאים, בנוי כך:
projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name
כדי לאפשר לחשבונות השירות של Managed Service for Apache Spark להשתמש במפתח שלכם:
מקצים את התפקיד
CryptoKey Encrypter/Decrypterב-Cloud KMS לחשבון השירות של סוכן השירות Managed Service for Apache Spark. אפשר להשתמש ב-CLI של gcloud כדי להקצות את התפקיד:gcloud projects add-iam-policy-binding KMS_PROJECT_ID \ --member serviceAccount:service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
מחליפים את מה שכתוב בשדות הבאים:
KMS_PROJECT_ID: המזהה של פרויקט Google Cloud שבו פועל Cloud KMS. הפרויקט הזה יכול להיות גם הפרויקט שבו מופעלים משאבי Managed Service for Apache Spark.
PROJECT_NUMBER: מספר הפרויקט (לא מזהה הפרויקט) של הפרויקט שבו מופעלים משאבי Managed Service for Apache Spark. Google Cloud
מפעילים את Cloud KMS API בפרויקט שבו פועלים משאבי Managed Service for Apache Spark.
אם התפקיד Managed Service for Apache Spark Service Agent לא מצורף לחשבון השירות Managed Service for Apache Spark Service Agent, צריך להוסיף את ההרשאה
serviceusage.services.useלתפקיד המותאם אישית שמצורף לחשבון השירות Managed Service for Apache Spark Service Agent. אם התפקיד Managed Service for Apache Spark Service Agent מצורף לחשבון השירות Managed Service for Apache Spark Service Agent, אפשר לדלג על השלב הזה.
אפשר להשתמש ב-CLI של gcloud או ב-Dataproc API כדי להגדיר את המפתח שיצרתם בשלב 1 בתהליך עבודה. אחרי שמגדירים את המפתח בתהליך עבודה, כל הארגומנטים והשאילתות של משימות בתהליך העבודה מוצפנים באמצעות המפתח לכל סוגי המשימות והארגומנטים שמפורטים ב-WorkflowTemplate.EncryptionConfig.kmsKey.
CLI של gcloud
מעבירים את מזהה המשאב של המפתח לדגל
--kms-keyכשיוצרים את תבנית תהליך העבודה באמצעות הפקודה gcloud dataproc workflow-templates create.לדוגמה:
אפשר לאמת את הגדרת המפתח באמצעות כלי שורת הפקודהgcloud dataproc workflow-templates create my-template-name \ --region=region \ --kms-key='projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name' \ other arguments ...
gcloud.gcloud dataproc workflow-templates describe TEMPLATE_NAME \ --region=REGION
... id: my-template-name encryptionConfig: kmsKey: projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME ...
API בארכיטקטורת REST
משתמשים ב-WorkflowTemplate.EncryptionConfig.kmsKey כחלק מבקשת workflowTemplates.create.
כדי לוודא שההגדרה של המפתח נכונה, אפשר לשלוח בקשת workflowTemplates.get. קובץ ה-JSON שמוחזר מכיל את
kmsKey:... "id": "my-template-name", "encryptionConfig": { "kmsKey": "projects/project-id/locations/region/keyRings/key-ring-name/cryptoKeys/key-name" },
Cloud External Key Manager
Cloud External Key Manager (Cloud EKM) מאפשר לכם להגן על נתונים ב-Managed Service for Apache Spark באמצעות מפתחות שמנוהלים על ידי שותף חיצוני לניהול מפתחות. השלבים לשימוש ב-Cloud EKM ב-Managed Service for Apache Spark זהים לאלה שמשמשים להגדרת מפתחות CMEK, עם ההבדל הבא: המפתח מצביע על URI של מפתח בניהול חיצוני (ראו סקירה כללית על Cloud EKM).
שגיאות ב-Cloud EKM
כשמשתמשים ב-Cloud EKM, יכול להיות שניסיון ליצור אשכול ייכשל בגלל שגיאות שקשורות לקלט, ל-Cloud EKM, למערכת של שותף חיצוני לניהול מפתחות או לתקשורת בין Cloud EKM לבין המערכת החיצונית. אם משתמשים ב-API בארכיטקטורת REST או במסוף, השגיאות נרשמות ביומן ב-Cloud Logging. Google Cloud אפשר לבדוק את השגיאות של האשכול שנכשל בכרטיסייה הצגת היומן.