מפתחות Cloud KMS בניהול הלקוח
כברירת מחדל, BigQuery מצפין את התוכן שלכם שמאוחסן במצב לא פעיל. BigQuery מטפל בהצפנה הזו כברירת מחדל ומנהל אותה בשבילכם, בלי שתצטרכו לבצע פעולות נוספות. קודם כל, הנתונים בטבלת BigQuery מוצפנים באמצעות מפתח להצפנת נתונים. לאחר מכן, המפתחות להצפנת נתונים מוצפנים באמצעות מפתחות להצפנת מפתחות הצפנה, תהליך שנקרא הצפנת מעטפה. מפתחות להצפנת מפתחות לא מצפינים ישירות את הנתונים שלכם, אלא משמשים להצפנת המפתחות להצפנת נתונים שבהם Google משתמשת כדי להצפין את הנתונים שלכם.
אם אתם רוצים לשלוט בהצפנה בעצמכם, אתם יכולים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK) ב-BigQuery. במקום ש-Google תהיה הבעלים של מפתחות ההצפנה של המפתחות שמגנים על הנתונים שלכם ותנהל אותם, אתם שולטים במפתחות ההצפנה של המפתחות ומנהלים אותם ב-Cloud KMS. במאמר הזה מוסבר איך ליצור באופן ידני מפתחות Cloud KMS ל-BigQuery.
מידע נוסף על אפשרויות ההצפנה ב- Google Cloud מידע ספציפי על CMEK, כולל היתרונות והמגבלות שלו, זמין במאמר מפתחות הצפנה בניהול הלקוח.
לפני שמתחילים
כל נכסי הנתונים שמאוחסנים באחסון מנוהל ב-BigQuery תומכים ב-CMEK. עם זאת, אם אתם גם שולחים שאילתות לנתונים שמאוחסנים במקור נתונים חיצוני כמו Cloud Storage, שבו הנתונים מוצפנים באמצעות CMEK, אז הצפנת הנתונים מנוהלת על ידי Cloud Storage. לדוגמה, טבלאות BigLake תומכות בנתונים שמוצפנים באמצעות CMEK ב-Cloud Storage.
ב-BigQuery ובטבלאות BigLake אין תמיכה במפתחות הצפנה שסופקו על ידי הלקוח (CSEK).
מחליטים אם להריץ את BigQuery ואת Cloud KMS באותו Google Cloud פרויקט או בפרויקטים שונים. לצורך הדוגמאות בתיעוד, נעשה שימוש במוסכמה הבאה:
-
PROJECT_ID: מזהה הפרויקט של הפרויקט שבו פועל BigQuery -
PROJECT_NUMBER: מספר הפרויקט של הפרויקט שבו פועל BigQuery -
KMS_PROJECT_ID: מזהה הפרויקט של הפרויקט שבו פועל Cloud KMS (גם אם זה אותו פרויקט שבו פועל BigQuery)
-
מערכת BigQuery מופעלת באופן אוטומטי בפרויקטים חדשים. אם אתם משתמשים בפרויקט קיים כדי להריץ את BigQuery, אתם צריכים להפעיל את BigQuery API.
ב Google Cloud פרויקט שבו פועל Cloud KMS, מפעילים את Cloud Key Management Service API.
קריאת פענוח מתבצעת באמצעות Cloud KMS פעם אחת לכל שאילתה בטבלה מוצפנת באמצעות CMEK. מידע נוסף זמין במאמר תמחור של Cloud KMS.
מפרט ההצפנה
מפתחות Cloud KMS שמשמשים להגנה על הנתונים ב-BigQuery הם מפתחות AES-256. המפתחות האלה משמשים כמפתחות להצפנת מפתחות הצפנה ב-BigQuery, כלומר הם מצפינים את המפתחות להצפנת נתונים שמצפינים את הנתונים שלכם.
יצירה ידנית או אוטומטית של מפתחות
אתם יכולים ליצור את מפתחות ה-CMEK באופן ידני או להשתמש ב-Cloud KMS Autokey. Autokey מפשט את תהליך היצירה והניהול של מפתחות CMEK על ידי אוטומציה של הקצאת הרשאות והקצאת מפתחות. עם Autokey, אין צורך להקצות מראש אוספי מפתחות, מפתחות וחשבונות שירות. במקום זאת, הן נוצרות על פי דרישה כחלק מיצירת משאבי BigQuery. מידע נוסף מופיע בסקירה הכללית על Autokey.
יצירה ידנית של אוסף מפתחות ומפתח
ב Google Cloud פרויקט שבו פועל Cloud KMS, יוצרים אוסף מפתחות ומפתח כמו שמתואר במאמר יצירה של אוספי מפתחות ומפתחות. יוצרים את מחזיק המפתחות במיקום שתואם למיקום של מערך הנתונים ב-BigQuery:
בכל מערך נתונים רב-אזורי צריך להשתמש במחזיק מפתחות רב-אזורי ממיקום תואם. לדוגמה, מערך נתונים באזור
USצריך להיות מוגן באמצעות מחזיק מפתחות מאזורus, ומערך נתונים באזורEUצריך להיות מוגן באמצעות מחזיק מפתחות מאזורeurope.במערכי נתונים אזוריים צריך להשתמש במפתחות אזוריים תואמים. לדוגמה, קבוצת נתונים באזור
asia-northeast1צריכה להיות מוגנת באמצעות מחזיק מפתחות מהאזורasia-northeast1.אי אפשר להשתמש באזור
globalכשמגדירים CMEK ל-BigQuery במסוף Google Cloud . עם זאת, אפשר להשתמש באזורglobalכשמגדירים CMEK ל-BigQuery באמצעות כלי שורת הפקודה של BigQuery או GoogleSQL.
מידע נוסף על המיקומים הנתמכים ב-BigQuery וב-Cloud KMS זמין במאמר מיקומים ב-Cloud.
מתן הרשאה להצפנה ולפענוח
כדי להגן על נתוני BigQuery באמצעות מפתח CMEK, צריך להעניק לחשבון השירות של BigQuery הרשאה להצפין ולפענח באמצעות המפתח הזה. התפקיד Cloud KMS CryptoKey Encrypter/Decrypter נותן את ההרשאה הזו.
מוודאים שחשבון השירות נוצר, ואז משתמשים בGoogle Cloud מסוף כדי לקבוע את מזהה חשבון השירות של BigQuery. לאחר מכן, צריך להקצות לחשבון השירות את התפקיד המתאים כדי להצפין ולפענח באמצעות Cloud KMS.
הפעלת יצירה של חשבון השירות
כשיוצרים פרויקט, חשבון השירות של BigQuery לא נוצר בהתחלה. כדי להפעיל את היצירה של חשבון השירות, מזינים פקודה שמשתמשת בו, כמו הפקודה bq show --encryption_service_account, או מבצעים קריאה ל-method
projects.getServiceAccount של API. לדוגמה:
bq show --encryption_service_account --project_id=PROJECT_ID
איך קובעים את המזהה של חשבון השירות
מזהה חשבון השירות של BigQuery הוא מהצורה:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
בשיטות הבאות מוסבר איך אפשר לקבוע את מזהה חשבון השירות של BigQuery בפרויקט.
המסוף
נכנסים לדף Dashboard במסוף Google Cloud .
לוחצים על הרשימה הנפתחת Select from בחלק העליון של הדף. בחלון בחירה מתוך שמופיע, בוחרים את הפרויקט.
מזהה הפרויקט ומספר הפרויקט מוצגים שניהם בכרטיס Project info בלוח הבקרה של הפרויקט:

במחרוזת הבאה, מחליפים את PROJECT_NUMBER במספר הפרויקט. המחרוזת החדשה מזהה את מזהה חשבון השירות שלכם ב-BigQuery.
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
BQ
משתמשים בפקודה bq show עם הדגל --encryption_service_account כדי לקבוע את מזהה חשבון השירות:
bq show --encryption_service_account
הפקודה מציגה את מזהה חשבון השירות:
ServiceAccountID
-------------------------------------------------------------
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
הקצאת התפקיד Encrypter/Decrypter
מקצים את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter לחשבון השירות של מערכת BigQuery שהעתקתם ללוח. החשבון הזה הוא מהצורה:
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
המסוף
פותחים את הדף Cryptographic Keys במסוף Google Cloud .
לוחצים על השם של אוסף המפתחות שמכיל את המפתח.
לוחצים על תיבת הסימון של מפתח ההצפנה שאליו רוצים להוסיף את התפקיד. נפתחת הכרטיסייה הרשאות.
לוחצים על Add member.
מזינים את כתובת האימייל של חשבון השירות,
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com.- אם חשבון השירות כבר מופיע ברשימת החברים, יש לו תפקידים קיימים. לוחצים על התפריט הנפתח של התפקיד הנוכחי של חשבון השירות
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com.
- אם חשבון השירות כבר מופיע ברשימת החברים, יש לו תפקידים קיימים. לוחצים על התפריט הנפתח של התפקיד הנוכחי של חשבון השירות
לוחצים על הרשימה הנפתחת Select a role, לוחצים על Cloud KMS ואז על התפקיד Cloud KMS CryptoKey Encrypter/Decrypter.
כדי להקצות את התפקיד לחשבון השירות
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com, לוחצים על Save.
gcloud
אפשר להקצות את התפקיד באמצעות Google Cloud CLI:
gcloud kms keys add-iam-policy-binding \ --project=KMS_PROJECT_ID \ --member serviceAccount:bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter \ --location=KMS_KEY_LOCATION \ --keyring=KMS_KEY_RING \ KMS_KEY
מחליפים את מה שכתוב בשדות הבאים:
-
KMS_PROJECT_ID: המזהה של הפרויקט שבו פועל Cloud KMS Google Cloud -
PROJECT_NUMBER: מספר הפרויקט (לא מזהה הפרויקט) של פרויקט Google Cloud שמופעל בו BigQuery -
KMS_KEY_LOCATION: שם המיקום של מפתח Cloud KMS -
KMS_KEY_RING: השם של אוסף המפתחות שלכם ב-Cloud KMS -
KMS_KEY: שם המפתח של מפתח Cloud KMS
המזהה של מקום המפתח
כדי להשתמש ב-CMEK, צריך לציין את מזהה המשאב של מפתח Cloud KMS, כמו שמוצג בדוגמאות. המפתח הזה הוא תלוי אותיות רישיות והפורמט שלו הוא:
projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY
אחזור המזהה של מקום המפתח
פותחים את הדף Cryptographic Keys במסוף Google Cloud .
לוחצים על השם של אוסף המפתחות שמכיל את המפתח.
למפתח שרוצים לאחזר את מזהה המשאב שלו, לוחצים על עוד more_vert.
לוחצים על העתקת שם המשאב. מזהה המשאב של המפתח מועתק ללוח. מזהה המשאב נקרא גם שם המשאב.
יצירת טבלה שמוגנת על ידי Cloud KMS
כדי ליצור טבלה שמוגנת על ידי Cloud KMS:
המסוף
פותחים את הדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על כלי הניתוחים:

אם החלונית הימנית לא מוצגת, לוחצים על הרחבת החלונית הימנית כדי לפתוח אותה.
בחלונית Explorer, מרחיבים את הפרויקט, לוחצים על Datasets ואז לוחצים על מערך נתונים. מערך הנתונים ייפתח בכרטיסייה.
בחלונית הפרטים, לוחצים על יצירת טבלה.
בדף Create table ממלאים את הפרטים שנדרשים כדי ליצור טבלה ריקה עם הגדרת סכימה. לפני שלוחצים על Create Table (יצירת טבלה), מגדירים את סוג ההצפנה ומציינים את מפתח Cloud KMS שבו רוצים להשתמש עם הטבלה:
- לוחצים על אפשרויות מתקדמות.
- לוחצים על מפתח מנוהל של לקוח.
- בוחרים את המפתח. אם המפתח שרוצים להשתמש בו לא מופיע ברשימה, מזינים את מזהה המשאב של המפתח.
לוחצים על יצירת טבלה.
SQL
משתמשים בהצהרה CREATE TABLE עם האפשרות kms_key_name:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
CREATE TABLE DATASET_ID.TABLE_ID ( name STRING, value INT64 ) OPTIONS ( kms_key_name = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
אפשר להשתמש בכלי שורת הפקודה של BigQuery עם הדגל --destination_kms_key כדי ליצור את הטבלה. הדגל --destination_kms_key מציין את מזהה המשאב של המפתח שבו רוצים להשתמש עם הטבלה.
כדי ליצור טבלה ריקה עם סכימה:
bq mk --schema name:string,value:integer -t \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.TABLE_ID
כדי ליצור טבלה משאילתה:
bq query --destination_table=DATASET_ID.TABLE_ID \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ "SELECT name,count FROM DATASET_ID.TABLE_ID WHERE gender = 'M' ORDER BY count DESC LIMIT 6"
מידע נוסף על כלי שורת הפקודה של BigQuery זמין במאמר שימוש בכלי שורת הפקודה של BigQuery.
Terraform
משתמשים במשאב google_bigquery_table.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
בדוגמה הבאה נוצרת טבלה בשם mytable, ונעשה שימוש במשאבים google_kms_crypto_key ו-google_kms_key_ring כדי לציין מפתח של Cloud Key Management Service לטבלה.
כדי להריץ את הדוגמה הזו, צריך להפעיל את Cloud Resource Manager API ואת Cloud Key Management Service API.
כדי להחיל את ההגדרות של Terraform בפרויקט ב- Google Cloud , מבצעים את השלבים בקטעים הבאים.
הכנת Cloud Shell
- מפעילים את Cloud Shell.
-
מגדירים את פרויקט ברירת המחדל שבו רוצים להחיל את ההגדרות של Terraform. Google Cloud
תצטרכו להריץ את הפקודה הזו רק פעם אחת לכל פרויקט, ותוכלו לעשות זאת בכל ספרייה.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.
הכנת הספרייה
לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).
-
יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת
.tf, למשלmain.tf. במדריך הזה, הקובץ נקראmain.tf.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.
מעתיקים את הקוד לדוגמה בקובץ
main.tfהחדש שיצרתם.לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.
- בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
- שומרים את השינויים.
-
מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
terraform init
אופציונלי: תוכלו לכלול את האפשרות
-upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:terraform init -upgrade
החלה של השינויים
-
בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
terraform plan
מתקנים את ההגדרות לפי הצורך.
-
מריצים את הפקודה הבאה ומזינים
yesבהודעה שמופיעה, כדי להחיל את הגדרות Terraform:terraform apply
ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!".
- פותחים את Google Cloud הפרויקט כדי לראות את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כדי להגן על טבלה חדשה באמצעות מפתח הצפנה בניהול הלקוח, צריך להגדיר את המאפיין Table.encryption_configuration לאובייקט EncryptionConfiguration לפני שיוצרים את הטבלה.שאילתה בטבלה שמוגנת באמצעות מפתח Cloud KMS
לא צריך שום דבר מיוחד כדי להריץ שאילתה בטבלה שמוגנת על ידי Cloud KMS. BigQuery שומר את השם של המפתח שמשמש להצפנת התוכן של הטבלה, ומשתמש במפתח הזה כשמבצעים שאילתה בטבלה שמוגנת על ידי Cloud KMS.
כל הכלים הקיימים, מסוף BigQuery וכלי שורת הפקודה bq, פועלים באותו אופן כמו בטבלאות שמוצפנות כברירת מחדל, כל עוד ל-BigQuery יש גישה למפתח Cloud KMS שמשמש להצפנת התוכן של הטבלה.
הגנה על תוצאות של שאילתות באמצעות מפתח Cloud KMS
כברירת מחדל, תוצאות השאילתה מאוחסנות בטבלה זמנית שמוצפנת באמצעותGoogle-owned and Google-managed encryption key. אם בפרויקט כבר יש מפתח ברירת מחדל, המפתח יוחל על טבלת תוצאות השאילתות הזמנית (ברירת המחדל). כדי להשתמש במפתח Cloud KMS להצפנת תוצאות השאילתה, בוחרים באחת מהאפשרויות הבאות:
המסוף
פותחים את הדף BigQuery במסוף Google Cloud .
לוחצים על Compose new query (כתיבת שאילתה חדשה).
מזינים שאילתת GoogleSQL תקינה באזור הטקסט של השאילתה.
לוחצים על עוד, על הגדרות שאילתה ואז על אפשרויות מתקדמות.
בוחרים באפשרות הצפנה בניהול הלקוח.
בוחרים את המפתח. אם המפתח שרוצים להשתמש בו לא מופיע ברשימה, מזינים את מזהה המשאב של המפתח.
לוחצים על Save.
לוחצים על Run.
BQ
מציינים את הדגל --destination_kms_key כדי להגן על טבלת היעד או על תוצאות השאילתה (אם משתמשים בטבלה זמנית) באמצעות מפתח Cloud KMS.
הדגל --destination_kms_key מציין את מזהה המשאב של המפתח שבו רוצים להשתמש עם היעד או הטבלה שמתקבלת.
אפשר להשתמש בדגל --destination_table כדי לציין את היעד של תוצאות השאילתה. אם לא משתמשים ב---destination_table, תוצאות השאילתה נכתבות בטבלה זמנית.
כדי להריץ שאילתה על טבלה:
bq query \ --destination_table=DATASET_ID.TABLE_ID \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ "SELECT name,count FROM DATASET_ID.TABLE_ID WHERE gender = 'M' ORDER BY count DESC LIMIT 6"
מידע נוסף על כלי שורת הפקודה של BigQuery זמין במאמר שימוש בכלי שורת הפקודה של BigQuery.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כדי להגן על טבלה חדשה באמצעות מפתח הצפנה בניהול הלקוח, צריך להגדיר את המאפיין Table.encryption_configuration לאובייקט EncryptionConfiguration לפני שיוצרים את הטבלה.Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כדי להגן על טבלה חדשה באמצעות מפתח הצפנה בניהול הלקוח, צריך להגדיר את המאפיין Table.encryption_configuration לאובייקט EncryptionConfiguration לפני שיוצרים את הטבלה.Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כדי להגן על טבלת יעד של שאילתה באמצעות מפתח הצפנה בניהול הלקוח, מגדירים את המאפיין QueryJobConfig.destination_encryption_configuration ל-EncryptionConfiguration ומריצים את השאילתה.
טעינת טבלה שמוגנת על ידי Cloud KMS
כדי לטעון קובץ נתונים לטבלה שמוגנת על ידי Cloud KMS:
המסוף
כדי להגן על טבלת יעד של משימת טעינה באמצעות מפתח הצפנה בניהול הלקוח, צריך לציין את המפתח כשמטעינים את הטבלה.
פותחים את הדף BigQuery במסוף Google Cloud .
בחלונית הימנית, לוחצים על כלי הניתוחים:

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

לוחצים על יצירת טבלה.
BQ
כדי להגן על טבלת יעד של משימת טעינה באמצעות מפתח הצפנה בניהול הלקוח, צריך להגדיר את הדגל --destination_kms_key.
bq --location=LOCATION load \ --autodetect \ --source_format=FORMAT \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET.TABLE \ path_to_source
bq load \ --autodetect \ --source_format=NEWLINE_DELIMITED_JSON \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ test2.table4 \ gs://cloud-samples-data/bigquery/us-states/us-states.json
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כדי להגן על טבלת היעד של משימת טעינה באמצעות מפתח הצפנה בניהול הלקוח, מגדירים את המאפיין LoadJobConfig.destination_encryption_configuration ל-EncryptionConfiguration וטוענים את הטבלה.
הזרמת נתונים לטבלה שמוגנת על ידי Cloud KMS
אפשר להזרים נתונים לטבלת BigQuery שמוגנת באמצעות CMEK בלי לציין פרמטרים נוספים. שימו לב שהנתונים האלה מוצפנים באמצעות מפתח Cloud KMS במאגר הזמני וגם במיקום הסופי. לפני שמשתמשים בסטרימינג עם טבלת CMEK, חשוב לעיין בדרישות בנושא זמינות ונגישות של מפתחות.
מידע נוסף על סטרימינג זמין במאמר העברת נתונים בסטרימינג באמצעות BigQuery Storage Write API.
שינוי טבלה מהצפנה שמוגדרת כברירת מחדל להגנה באמצעות Cloud KMS
BQ
אפשר להשתמש בפקודה bq cp עם הדגל --destination_kms_key כדי להעתיק טבלה שמוגנת על ידי הצפנת ברירת המחדל לטבלה חדשה, או לטבלה המקורית, שמוגנת על ידי Cloud KMS. הדגל --destination_kms_key מציין את מזהה המשאב של המפתח שבו רוצים להשתמש עם טבלת היעד.
כדי להעתיק טבלה עם הצפנה שמוגדרת כברירת מחדל לטבלה חדשה עם הגנה של Cloud KMS:
bq cp \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ SOURCE_DATASET_ID.SOURCE_TABLE_ID DESTINATION_DATASET_ID.DESTINATION_TABLE_ID
אם רוצים להעתיק טבלה עם הצפנה שמוגדרת כברירת מחדל לאותה טבלה עם הגנה של Cloud KMS:
bq cp -f \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.TABLE_ID DATASET_ID.TABLE_ID
אם רוצים לשנות טבלה מהגנה באמצעות Cloud KMS להצפנת ברירת מחדל, מעתיקים את הקובץ לעצמו על ידי הפעלת הפקודה bq cp בלי להשתמש בדגל --destination_kms_key.
מידע נוסף על כלי שורת הפקודה של BigQuery זמין במאמר שימוש בכלי שורת הפקודה של BigQuery.
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
כדי להגן על היעד של העתקת טבלה באמצעות מפתח הצפנה בניהול הלקוח, מגדירים את המאפיין QueryJobConfig.destination_encryption_configuration ל-EncryptionConfiguration ומעתיקים את הטבלה.
קביעה אם טבלה מוגנת על ידי Cloud KMS
ב Google Cloud מסוף, לוחצים על החץ הכחול שמימין לקבוצת הנתונים כדי להרחיב אותה, או לוחצים לחיצה כפולה על שם קבוצת הנתונים. יוצגו הטבלאות והתצוגות במערך הנתונים.
לוחצים על שם הטבלה.
לוחצים על פרטים. בדף Table Details מוצגים תיאור הטבלה ופרטי הטבלה.
אם הטבלה מוגנת על ידי Cloud KMS, בשדה מפתח הצפנה בניהול הלקוח מוצג מזהה משאב המפתח.

לכל אחד מהמפתחות שיצרתם או שמגנים על הטבלאות שלכם, תוכלו לראות אילו משאבים המפתח מגן עליהם באמצעות מעקב אחר השימוש במפתח. מידע נוסף זמין במאמר הצגת השימוש במפתחות.
שינוי מפתח Cloud KMS בטבלת BigQuery
כדי לשנות את מפתח Cloud KMS של טבלה קיימת שמוגנת באמצעות CMEK, אפשר להריץ שאילתת ALTER TABLE, להשתמש ב-API או להשתמש בכלי שורת הפקודה של BigQuery.
יש שתי דרכים לשנות את מפתח Cloud KMS באמצעות ה-API וכלי שורת הפקודה של BigQuery: update או cp.
אם משתמשים ב-update, אפשר לשנות את מפתח Cloud KMS שמשמש להצפנה של טבלה שמוגנת באמצעות CMEK.
אם משתמשים ב-cp, אפשר לשנות את מפתח Cloud KMS שמשמש להגנה באמצעות CMEK על טבלה, לשנות טבלה מהצפנה כברירת מחדל להגנה באמצעות CMEK, או לשנות טבלה מהגנה באמצעות CMEK להצפנה כברירת מחדל.
יתרון של update הוא שהוא מהיר יותר מ-cp, ואפשר להשתמש בו במעצבי טבלאות.
SQL
כדי לעדכן את השדה kms_key_name בטבלה, משתמשים בהצהרה ALTER TABLE SET OPTIONS:
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
ALTER TABLE DATASET_ID.mytable SET OPTIONS ( kms_key_name = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
אפשר להשתמש בפקודה bq cp עם הדגל --destination_kms_key כדי לשנות את המפתח של טבלה שמוגנת על ידי Cloud KMS. הדגל --destination_kms_key מציין את מזהה המשאב של המפתח שבו יש להשתמש עם הטבלה.
bq update \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ -t DATASET_ID.TABLE_ID
Go
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Goהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Go API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Javaהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Java API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
כדי לשנות את מפתח ההצפנה בניהול הלקוח של טבלה, משנים את המאפיין Table.encryption_configuration לאובייקט EncryptionConfiguration חדש ומעדכנים את הטבלה.
לפני שמנסים את הדוגמה הזו, צריך לפעול לפי Pythonהוראות ההגדרה שבמדריך למתחילים של BigQuery באמצעות ספריות לקוח. מידע נוסף מופיע במאמרי העזרה של BigQuery Python API.
כדי לבצע אימות ב-BigQuery, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
הגדרת מפתח ברירת מחדל למערך נתונים
אתם יכולים להגדיר מפתח ברירת מחדל של Cloud KMS ברמת מערך הנתונים, שיחול על כל הטבלאות החדשות שייווצרו במערך הנתונים, אלא אם תציינו מפתח Cloud KMS אחר כשתיצרו את הטבלה. מפתח ברירת המחדל לא חל על טבלאות קיימות. שינוי מפתח ברירת המחדל לא משנה טבלאות קיימות, והוא חל רק על טבלאות חדשות שנוצרו אחרי השינוי.
אפשר להחיל, לשנות או להסיר מפתח ברירת מחדל של קבוצת נתונים על ידי
מציינים את מפתח ברירת המחדל בשדה
EncryptionConfiguration.kmsKeyNameכשמבצעים קריאה לשיטותdatasets.insertאוdatasets.patch.מציינים את מפתח ברירת המחדל בדגל
--default_kms_keyכשמריצים את הפקודהbq mk --dataset.bq mk \ --default_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ --dataset DATASET_ID
bq update \ --default_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ --dataset DATASET_ID
הגדרת מפתח ברירת מחדל לפרויקט
אפשר להגדיר מפתחות Cloud KMS שמשמשים כברירת מחדל בפרויקט, ויחולו על כל תוצאות השאילתות ועל כל הטבלאות שייווצרו בפרויקט במיקום הזה, אלא אם תציינו מפתח Cloud KMS אחר. מפתח ברירת המחדל חל גם על טבלאות חדשות של תוצאות שמורות במטמון, שמאוחסנות במערכי נתונים אנונימיים.
מפתח ברירת המחדל לא חל על טבלאות קיימות. שינוי מפתח ברירת המחדל לא משנה טבלאות קיימות, והוא חל רק על טבלאות חדשות שנוצרות אחרי השינוי.
SQL
כדי לעדכן את השדה default_kms_key_name בפרויקט, משתמשים בהצהרה ALTER PROJECT SET OPTIONS. אפשר למצוא את שם המשאב של המפתח בדף Cloud KMS.
במסוף Google Cloud , עוברים לדף BigQuery.
מזינים את ההצהרה הבאה בעורך השאילתות:
ALTER PROJECT PROJECT_ID SET OPTIONS ( `region-LOCATION.default_kms_key_name` = 'projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY');
לוחצים על הפעלה.
מידע נוסף על הרצת שאילתות זמין במאמר הרצת שאילתה אינטראקטיבית.
BQ
אפשר להשתמש בפקודה bq כדי להריץ הצהרה של ALTER PROJECT SET OPTIONS ולעדכן את השדה default_kms_key_name של פרויקט:
bq query --nouse_legacy_sql \
'ALTER PROJECT PROJECT_ID
SET OPTIONS (
`region-LOCATION.default_kms_key_name`
="projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY");'
שימוש ב-CMEK להגנה על מודלים של BigQuery ML
BigQuery ML תומך ב-CMEK. בנוסף להצפנת ברירת המחדל שמסופקת על ידי BigQuery, אתם יכולים להשתמש במפתחות משלכם של Cloud Key Management Service כדי להצפין מודלים של למידת מכונה, כולל מודלים של TensorFlow שיובאו.
יצירת מודל מוצפן באמצעות מפתח Cloud KMS
כדי ליצור מודל מוצפן, משתמשים בהצהרה CREATE MODEL ומציינים KMS_KEY_NAME באפשרויות האימון:
CREATE MODEL my_dataset.my_model OPTIONS( model_type='linear_reg', input_label_cols=['your_label'], kms_key_name='projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key') AS SELECT * FROM my_dataset.my_data
אותו תחביר חל גם על מודלים של TensorFlow שיובאו:
CREATE MODEL my_dataset.my_model OPTIONS( model_type='tensorflow', path='gs://bucket/path/to/saved_model/*', kms_key_name='projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key') AS SELECT * FROM my_dataset.my_data
מגבלות
כשמצפינים מודלים של למידת מכונה באמצעות מפתחות הצפנה בניהול הלקוח, חלות ההגבלות הבאות:
אין תמיכה במפתחות CMEK באזור
Globalבסוגי המודלים הבאים:כשיוצרים את סוגי המודלים הבאים, אי אפשר להשתמש במפתחות CMEK באזור
Globalובמפתחות CMEK במספר אזורים, למשלEUאוUS:אין תמיכה במפתחות CMEK במודלים מרוחקים:
שינוי מודל מהצפנה שמוגדרת כברירת מחדל להגנה באמצעות Cloud KMS
אפשר להשתמש בפקודה bq cp עם הדגל --destination_kms_key כדי להעתיק מודל שמוגן על ידי הצפנת ברירת מחדל למודל חדש שמוגן על ידי Cloud KMS.
לחלופין, אפשר להשתמש בפקודה bq cp עם הדגל -f כדי להחליף מודל שמוגן באמצעות הצפנה כברירת מחדל, ולעדכן אותו כך שישתמש בהגנה של Cloud KMS במקום זאת. הדגל --destination_kms_key מציין את מזהה המשאב של המפתח שבו רוצים להשתמש עם מודל היעד.
כדי להעתיק מודל עם הצפנה שמוגדרת כברירת מחדל למודל חדש עם הגנה של Cloud KMS:
bq cp \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ SOURCE_DATASET_ID.SOURCE_MODEL_ID DESTINATION_DATASET_ID.DESTINATION_MODEL_ID
כדי להחליף מודל עם הצפנת ברירת מחדל באותו מודל עם הגנה של Cloud KMS:
bq cp -f \ --destination_kms_key projects/KMS_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY \ DATASET_ID.MODEL_ID DATASET_ID.MODEL_ID
כדי לשנות מודל מהגנה של Cloud KMS להצפנה שמוגדרת כברירת מחדל:
bq cp -f \ DATASET_ID.MODEL_ID DATASET_ID.MODEL_ID
מידע נוסף על כלי שורת הפקודה של BigQuery זמין במאמר שימוש בכלי שורת הפקודה של BigQuery.
איך בודקים אם מודל מוגן על ידי Cloud KMS
כדי לבדוק אם מודל מוגן באמצעות מפתח Cloud KMS, משתמשים בפקודה bq show. מפתח ההצפנה מופיע בשדה kmsKeyName.
bq show -m my_dataset.my_model
אפשר גם להשתמש במסוף Google Cloud כדי למצוא את המפתח של Cloud KMS עבור מודל מוצפן. פרטי CMEK מופיעים בשדה מפתח בניהול הלקוח בקטע פרטי המודל בחלונית פרטים של המודל.
שינוי מפתח Cloud KMS של מודל מוצפן
משתמשים בפקודה bq update עם הדגל --destination_kms_key כדי לשנות את המפתח של מודל שמוגן על ידי Cloud KMS:
bq update --destination_kms_key \ projects/my_project/locations/my_location/keyRings/my_ring/cryptoKeys/my_key \ -t my_dataset.my_model
שימוש במפתחות ברירת מחדל של פרויקט או של מערך נתונים
אם מוגדר מפתח ברירת מחדל של Cloud KMS ברמת הפרויקט או מערך הנתונים, מערכת BigQuery ML משתמשת במפתח הזה באופן אוטומטי כשיוצרים מודלים.
אם לא רוצים להשתמש במפתח ברירת המחדל, אפשר להשתמש בהצהרה CREATE MODEL כדי לציין מפתח אחר להצפנת המודל.
שימוש בפונקציות של BigQuery ML עם מודלים מוצפנים
אפשר להשתמש בכל הפונקציות של BigQuery ML עם מודל מוצפן בלי לציין מפתח הצפנה.
שימוש ב-CMEK כדי להגן על BigQuery Connection API
בחיבורים ל-Cloud SQL, אפשר להשתמש ב-CMEK כדי להגן על פרטי הכניסה של BigQuery Connection API.
מידע נוסף על יצירת חיבור שמוגן באמצעות CMEK זמין במאמר יצירת חיבורים ל-Cloud SQL.
שימוש ב-CMEK כדי להגן על נכסי קוד ב-BigQuery Studio
כדי להשתמש ב-CMEK להגנה על נכסי הקוד ב-BigQuery Studio, צריך להגדיר מפתח CMEK של Dataform כברירת מחדל עבור פרויקט Google Cloud שמכיל את נכסי הקוד. נכסי קוד כוללים את הפריטים הבאים:
אחרי שמגדירים מפתח CMEK כברירת מחדל ב-Dataform, המערכת מחילה את המפתח על כל המשאבים החדשים שנוצרו בפרויקט Google Cloud כברירת מחדל, כולל משאבים מוסתרים שנוצרו לאחסון נכסי הקוד.
מפתח ה-CMEK שמוגדר כברירת מחדל ב-Dataform לא חל על משאבים קיימים. אם כבר יש לכם נכסי קוד בפרויקט הזה, הם לא יוצפנו באמצעות מפתח ה-CMEK שמוגדר כברירת מחדל ב-Dataform. כדי להשתמש ב-CMEK עם נכס קוד שנוצר לפני שהגדרתם את מפתח ה-CMEK שמוגדר כברירת מחדל בפרויקט Dataform, אתם יכולים לשמור את הנכס כנכס קוד חדש ב-BigQuery Studio.
אי אפשר להגדיר את תצורת ברירת המחדל של CMEK ב-Dataform לנכסי קוד ב-BigQuery באמצעות Terraform. במקום זאת, כדאי להשתמש ב-Dataform API. ההגדרה הזו צריכה לחול על כל פרויקט בנפרד, ולא ברמת הארגון. הוראות מפורטות זמינות במאמר הגדרת מפתח CMEK כברירת מחדל ב-Dataform.
הסרת הגישה של BigQuery למפתח Cloud KMS
אפשר להסיר את הגישה של BigQuery למפתח Cloud KMS בכל שלב, על ידי ביטול ההרשאה של ניהול זהויות והרשאות גישה (IAM) למפתח הזה.
אם ל-BigQuery תאבד הגישה למפתח Cloud KMS, חוויית המשתמש עלולה להיפגע באופן משמעותי ועלול להתרחש אובדן נתונים:
לא ניתן יותר לגשת לנתונים בטבלאות האלה שמוגנות באמצעות CMEK: כל הפעולות
query,cp,extractו-tabledata.listייכשלו.אי אפשר להוסיף נתונים חדשים לטבלאות האלה שמוגנות באמצעות CMEK.
אחרי שהגישה תוחזר, יכול להיות שהביצועים של השאילתות לטבלאות האלה ירדו למשך כמה ימים.
שליטה בשימוש ב-CMEK באמצעות מדיניות הארגון
BigQuery משתלב עם אילוצי מדיניות הארגון של CMEK כדי לאפשר לכם לציין דרישות תאימות להצפנה של משאבי BigQuery בארגון.
השילוב הזה מאפשר לכם:
הגדרת חובה של CMEK לכל המשאבים של BigQuery בפרויקט.
הגבלת המפתחות של Cloud KMS שאפשר להשתמש בהם כדי להגן על משאבים בפרויקט.
דרישה ל-CMEK לכל המשאבים
מדיניות נפוצה היא לדרוש שימוש במפתחות CMEK כדי להגן על כל המשאבים בקבוצה ספציפית של פרויקטים. אפשר להשתמש באילוץ constraints/gcp.restrictNonCmekServices כדי לאכוף את המדיניות הזו ב-BigQuery.
אם המדיניות הזו מוגדרת, כל הבקשות ליצירת משאבים ללא מפתח Cloud KMS ייכשלו.
אחרי שמגדירים את המדיניות הזו, היא חלה רק על משאבים חדשים בפרויקט. משאבים קיימים שלא הוגדרו להם מפתחות Cloud KMS ימשיכו להתקיים ותהיה אליהם גישה ללא בעיות.
המסוף
פותחים את הדף מדיניות הארגון.
בשדה Filter (מסנן), מזינים
constraints/gcp.restrictNonCmekServicesולוחצים על Restrict which services may create resources without CMEK (הגבלת השירותים שיכולים ליצור משאבים ללא CMEK).לוחצים על עריכה.
בוחרים באפשרות Customize, בוחרים באפשרות Replace ולוחצים על Add Rule.
בוחרים באפשרות בהתאמה אישית ואז לוחצים על דחייה.
בשדה ערך מותאם אישית, מזינים
is:bigquery.googleapis.com.לוחצים על סיום ואז על שמירה.
gcloud
gcloud resource-manager org-policies --project=PROJECT_ID \
deny gcp.restrictNonCmekServices is:bigquery.googleapis.com
כדי לוודא שהמדיניות הוחלה בהצלחה, אפשר לנסות ליצור טבלה בפרויקט. התהליך ייכשל אם לא תציינו מפתח Cloud KMS.
המדיניות הזו חלה גם על טבלאות של תוצאות שאילתות בפרויקט. אפשר לציין מפתח ברירת מחדל לפרויקט כדי שהמשתמשים לא יצטרכו לציין מפתח באופן ידני בכל פעם שהם מריצים שאילתה בפרויקט.
הגבלת מפתחות Cloud KMS לפרויקט BigQuery
אפשר להשתמש באילוץ constraints/gcp.restrictCmekCryptoKeyProjects כדי להגביל את מפתחות Cloud KMS שבהם אפשר להשתמש כדי להגן על משאב בפרויקט BigQuery.
לדוגמה, אפשר לציין כלל: "לכל המשאבים ב-BigQuery בפרויקט projects/my-company-data-project, מפתחות Cloud KMS שמשמשים בפרויקט הזה צריכים להגיע מ-projects/my-company-central-keys או מ-projects/team-specific-keys".
המסוף
פותחים את הדף מדיניות הארגון.
בשדה Filter, מזינים
constraints/gcp.restrictCmekCryptoKeyProjectsולוחצים על Restrict which projects may supply KMS CryptoKeys for CMEK.לוחצים על עריכה.
בוחרים באפשרות Customize, בוחרים באפשרות Replace ולוחצים על Add Rule.
בוחרים באפשרות בהתאמה אישית ואז לוחצים על אישור.
בשדה ערך מותאם אישית, מזינים
under:projects/<var>KMS_PROJECT_ID</var>.לוחצים על סיום ואז על שמירה.
gcloud
gcloud resource-manager org-policies --project=PROJECT_ID \
allow gcp.restrictCmekCryptoKeyProjects under:projects/KMS_PROJECT_ID
כדי לוודא שהמדיניות הוחלה בהצלחה, אפשר לנסות ליצור טבלה באמצעות מפתח Cloud KMS מפרויקט אחר. התהליך ייכשל.
מגבלות של מדיניות הארגון
יש מגבלות שקשורות להגדרת מדיניות ארגונית.
זמן הפצה
אחרי שמגדירים או מעדכנים מדיניות ארגונית, יכולות לחלוף עד 15 דקות עד שהמדיניות החדשה תיכנס לתוקף. מדיניות BigQuery היא מדיניות שמוטמנת במטמון כדי שלא תשפיע לרעה על השהייה של שאילתות ושל יצירת טבלאות.
ההרשאות שנדרשות להגדרת מדיניות הארגון
יכול להיות שיהיה קשה לקבל את ההרשאה להגדיר או לעדכן את מדיניות הארגון לצורך בדיקות. צריך לקבל את תפקיד האדמין של מדיניות הארגון, שאפשר לתת רק ברמת הארגון (ולא ברמת הפרויקט או התיקייה).
למרות שצריך לתת את התפקיד ברמת הארגון, עדיין אפשר לציין מדיניות שתחול רק על פרויקט או תיקייה ספציפיים.
ההשפעה של רוטציית מפתחות Cloud KMS
BigQuery לא מבצע רוטציה אוטומטית למפתח הצפנה של טבלה כשמתבצעת רוטציה של מפתח Cloud KMS שמשויך לטבלה. כל הנתונים בטבלאות הקיימות ממשיכים להיות מוגנים על ידי גרסת המפתח שבאמצעותה הם נוצרו.
כדי לעדכן טבלה לשימוש בגרסה האחרונה של המפתח, מעדכנים את הטבלה עם אותו מפתח Cloud KMS. העדכון הזה לא יבדוק מדיניות ארגונית. רק עדכון המפתח יבדוק את מדיניות הארגון.
אם יש מפתח ברירת מחדל במערך הנתונים, ואתם מבצעים רוטציה למפתח, כל הטבלאות החדשות שנוצרות במערך הנתונים אחרי הרוטציה משתמשות בגרסה האחרונה של המפתח.
השפעה על החיוב ב-Cloud KMS
כשיוצרים טבלה שמוגנת באמצעות CMEK או חותכים טבלה כזו, BigQuery יוצר מפתח ביניים להצפנת מפתחות, שמוצפן באמצעות מפתח Cloud KMS שצוין.
למטרות חיוב, המשמעות היא שהקריאות ל-Cloud KMS והעלויות שמשויכות אליהן לא גדלות בהתאם לגודל הטבלה. בטבלאות שמוגנות באמצעות CMEK, צפו לקריאה אחת ל-Cloud KMS cryptoKeys.encrypt לכל יצירה או חיתוך של טבלה, וקריאה אחת ל-Cloud KMS cryptoKeys.decrypt לכל טבלה שמשתתפת בשאילתה. שתי השיטות האלה שייכות לקטגוריה פעולות על מפתחות: קריפטוגרפיות שמפורטת בתמחור של Cloud KMS.
קריאה מטבלה קיימת שמוגנת באמצעות CMEK או כתיבה לטבלה כזו מפעילות את Cloud KMS cryptoKeys.decrypt כי צריך לפענח את המפתח הזמני.
מגבלות
גישה ל-BigQuery למפתח Cloud KMS
מפתח Cloud KMS נחשב לזמין ולנגיש ל-BigQuery בתנאים הבאים:
- המפתח מופעל
- לחשבון השירות של BigQuery יש הרשאות הצפנה ופענוח במפתח
בקטעים הבאים מתוארת ההשפעה על הוספות לסטרימינג ועל נתונים שלא ניתן לגשת אליהם לטווח ארוך, כשאין גישה למפתח.
ההשפעה על הוספת מודעות לסטרימינג
מפתח Cloud KMS צריך להיות זמין ונגיש למשך 24 שעות רצופות לפחות בפרק הזמן של 48 שעות אחרי בקשה להוספת סטרימינג. אם המפתח לא זמין ואין אליו גישה, יכול להיות שהנתונים שמוזרמים לא יישמרו במלואם ויימחקו. מידע נוסף על הזנת זרם נתונים זמין במאמר הזנת נתונים ל-BigQuery.
השפעה על נתונים לטווח ארוך שלא ניתן לגשת אליהם
מכיוון ש-BigQuery מספק אחסון מנוהל, נתונים שלא ניתן לגשת אליהם לטווח ארוך לא תואמים לארכיטקטורה של BigQuery. אם מפתח Cloud KMS של טבלה ב-BigQuery לא זמין ולא ניתן לגשת אליו במשך 60 ימים רצופים, יכול להיות ש-BigQuery יבחר למחוק את הטבלה ואת הנתונים שמשויכים אליה. לפחות 7 ימים לפני מחיקת הנתונים, מערכת BigQuery שולחת אימייל לכתובת האימייל שמשויכת לחשבון לחיוב.
שימוש במקורות נתונים חיצוניים
אם אתם שולחים שאילתות לנתונים שמאוחסנים במקור נתונים חיצוני כמו Cloud Storage, שבו הנתונים מוצפנים באמצעות CMEK, אז הצפנת הנתונים מנוהלת על ידי Cloud Storage. לדוגמה, טבלאות BigLake תומכות בנתונים שמוצפנים באמצעות CMEK ב-Cloud Storage.
ב-BigQuery ובטבלאות BigLake אין תמיכה במפתחות הצפנה שסופקו על ידי הלקוח (CSEK).
מעבר בין הצפנה שמוגנת באמצעות CMEK לבין הצפנה שמוגדרת כברירת מחדל
אי אפשר להחליף טבלה במקום בין הצפנות ברירת מחדל לבין הצפנת CMEK. כדי להחליף את ההצפנה, מעתיקים את הטבלה עם מידע על הצפנת היעד או משתמשים בשאילתת SELECT * כדי לבחור את הטבלה בעצמה עם WRITE_TRUNCATE disposition.
שימוש ב-table decorators
אם מגנים על טבלה באמצעות Cloud KMS ואז מחליפים את הנתונים בטבלה באמצעות הערך WRITE_TRUNCATE לפעולה load, cp או query, אז קישוטי טווח לא פועלים מעבר לגבול של שינוי ההצפנה. עדיין אפשר להשתמש במעצבי טבלאות, כולל מעצבי טווח, כדי לשלוח שאילתה לנתונים לפני או אחרי הגבול, או לשלוח שאילתה לתמונת המצב בנקודת זמן מסוימת.
שאילתות של טבלאות עם תווים כלליים לחיפוש
אי אפשר להריץ שאילתות על טבלאות שמוגנות באמצעות CMEK עם סיומת של wildcard.
תמיכה בסקריפטים
סקריפטים לא יכולים להגדיר טבלאות יעד לפעולות CMEK.
תמיכה במהדורות
התמיכה ב-CMEK ב-BigQuery זמינה רק ב-BigQuery Enterprise, ב-BigQuery Enterprise Plus וב-BigQuery On-Demand.
תמיכה ב-BigQuery Studio
נכסי קוד ב-BigQuery Studio תומכים ב-CMEK. נכסי קוד כוללים את הדברים הבאים:
מידע נוסף זמין במאמר בנושא שימוש ב-CMEK להגנה על נכסי קוד ב-BigQuery Studio.
שאלות נפוצות
למי צריך לתת הרשאה למפתח Cloud KMS?
כשמשתמשים במפתחות הצפנה בניהול הלקוח, לא צריך לציין את ההרשאות שוב ושוב. כל עוד לחשבון השירות של BigQuery יש הרשאה להשתמש במפתח Cloud KMS להצפנה ולפענוח, כל מי שיש לו הרשאה לטבלה ב-BigQuery יכול לגשת לנתונים, גם אם אין לו גישה ישירה למפתח Cloud KMS.
באיזה חשבון שירות נעשה שימוש?
חשבון השירות ב-BigQuery שמשויך לGoogle Cloud פרויקט של הטבלה משמש לפענוח הנתונים בטבלה. חשבונות השירות של BigQuery הם ייחודיים לכל פרויקט. לגבי עבודה שכותבת נתונים לטבלה אנונימית שמוגנת באמצעות Cloud KMS, נעשה שימוש בחשבון השירות של הפרויקט שבו מוגדרת העבודה.
לדוגמה, נניח שיש שלוש טבלאות שמוגנות באמצעות CMEK: table1, table2 ו-table3. כדי להריץ שאילתה על נתונים מ-{project1.table1, project2.table2} עם טבלת יעד {project3.table3}:
- שימוש בחשבון השירות
project1עבורproject1.table1 - שימוש בחשבון השירות
project2עבורproject2.table2 - שימוש בחשבון השירות
project3עבורproject3.table3
באילו דרכים אפשר להשתמש במפתח Cloud KMS ב-BigQuery?
BigQuery משתמש במפתח Cloud KMS כדי לפענח נתונים בתגובה לשאילתת משתמש, למשל tabledata.list או jobs.insert.
בנוסף, אפשר להשתמש במפתח ב-BigQuery למשימות של תחזוקת נתונים ואופטימיזציה של אחסון, כמו המרת נתונים לפורמט שמותאם לקריאה.
באילו ספריות קריפטוגרפיה נעשה שימוש?
הפונקציונליות של CMEK ב-BigQuery מסתמכת על Cloud KMS. Cloud KMS משתמש ב-Tink להצפנה.
איך מקבלים עזרה נוספת?
אם יש לכם שאלות שלא מופיעות כאן, תוכלו להיעזר בתמיכה ב-BigQuery.
פתרון לשגיאות
בהמשך מתוארות שגיאות נפוצות ומומלצים פתרונות לבעיות שגורמות להן.
| שגיאה | המלצה |
|---|---|
| צריך להעניק את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter | לחשבון השירות של BigQuery שמשויך לפרויקט אין הרשאת IAM מספקת כדי לבצע פעולות במפתח Cloud KMS שצוין. כדי להעניק את הרשאת ה-IAM המתאימה, פועלים לפי ההוראות שמופיעות בשגיאה או במסמכי התיעוד האלה. |
| הגדרות ההצפנה הקיימות של הטבלה לא תואמות להגדרות ההצפנה שצוינו בבקשה | הבעיה הזו יכולה להתרחש בתרחישים שבהם בטבלת היעד יש הגדרות הצפנה שלא תואמות להגדרות ההצפנה בבקשה. כדי לפתור את הבעיה, אפשר להשתמש בהגדרת כתיבה TRUNCATE כדי להחליף את הטבלה, או לציין טבלת יעד אחרת. |
| אין תמיכה באזור הזה | האזור של מפתח Cloud KMS לא תואם לאזור של מערך הנתונים ב-BigQuery של טבלת היעד. כפתרון, צריך לבחור מפתח באזור שמתאים למערך הנתונים, או לטעון למערך נתונים שמתאים לאזור המפתח. |
| האדמין דורש לציין מפתח הצפנה לשאילתות בפרויקט PROJECT_ID. | מדיניות ארגונית מנעה יצירה של משאב או הרצה של שאילתה. מידע נוסף על המדיניות הזו זמין במאמר דרישה של CMEK לכל המשאבים בפרויקט BigQuery. |
| האדמין מונע שימוש במפתחות KMS מפרויקט KMS_PROJECT_ID כדי להגן על משאבים בפרויקט KMS_PROJECT_ID.PROJECT_ID | מדיניות ארגונית מנעה יצירה של משאב או הרצה של שאילתה. מידע נוסף על המדיניות הזו זמין במאמר הגבלת מפתחות Cloud KMS לפרויקט BigQuery. |