הצפנה ברמת העמודה באמצעות Cloud KMS
ב-Cloud Key Management Service (Cloud KMS) אפשר להצפין את המפתחות להצפנת נתונים (DEK) שעוזרים להגן על ערכי עמודות ספציפיות בטבלאות ב-BigQuery. שימוש בפונקציות הצפנה של AEAD עם מפתחות Cloud KMS וקבוצות מפתחות ארוזות מספק שכבת הגנה שנייה ברמת העמודה, ועוזר לצמצם את הסיכון לחשיפת מפתחות בטקסט פשוט בשאילתות.
מבוא
כדי לספק שכבת הגנה נוספת, ב-Cloud KMS המפתח להצפנת נתונים (DEK) מוצפן באמצעות מפתח שני להצפנת מפתחות הצפנה (KEK). ב-BigQuery, הפניה למערך מפתחות מוצפן במקום למערך מפתחות בטקסט פשוט עוזרת לצמצם את הסיכון לחשיפת המפתח. ה-KEK הוא קבוצת מפתחות הצפנה סימטריים שמאוחסנים באופן מאובטח ב-Cloud KMS, ומנוהלים באמצעות תפקידים והרשאות של ניהול זהויות והרשאות גישה (IAM).
BigQuery תומך בפונקציות הצפנה דטרמיניסטיות ולא דטרמיניסטיות. בהצפנה דטרמיניסטית, אם גם הנתונים המאוחסנים וגם הנתונים המאומתים הנוספים (אופציונלי) זהים, אז גם המידע המוצפן (ciphertext) זהה. כך אפשר לתמוך בצבירה ובצירופים על סמך העמודה המוצפנת. בהצפנה לא דטרמיניסטית, המידע המוצפן (ciphertext) שמאוחסן הוא ייחודי, בלי קשר לנתונים המוצפנים, וכך נמנעים אשכולות, צבירה וצירופים.
בזמן הרצת השאילתה, אתם מספקים את נתיב המשאב של ה-KEK ב-Cloud KMS ואת המידע המוצפן (ciphertext) מה-DEK הארוז. BigQuery שולח קריאה ל-Cloud KMS כדי לפתוח את ה-DEK, ואז משתמש במפתח הזה כדי לפענח את הנתונים בשאילתה. הגרסה הלא עטופה של ה-DEK מאוחסנת בזיכרון רק למשך השאילתה, ואז מושמדת.
אם אתם משתמשים ב-Cloud KMS באזור שבו יש תמיכה ב-Cloud External Key Manager, אתם יכולים להשתמש במפתחות שמבוססים על Cloud EKM ב-Cloud KMS.
תרחישים לדוגמה
תרחישים לדוגמה להצפנה באמצעות מפתחות Cloud KMS:
- נתונים שמוצפנים באופן חיצוני וצריך לאחסן אותם ב-BigQuery בלי לאחסן את קבוצת המפתחות כטקסט פשוט. אחר כך אפשר לייצא את הנתונים מהטבלה או לפענח אותם באמצעות שאילתת SQL.
- "בקרת גישה כפולה" לנתונים מוצפנים ב-BigQuery. כדי לקרוא נתונים בטקסט לא מוצפן, המשתמש צריך לקבל הרשאה גם לטבלה וגם למפתח ההצפנה.
| מטריצת הרשאות משתמש | ||
|---|---|---|
| הרשאה בטבלה | אין הרשאה בטבלה | |
| הרשאות במפתח | לקרוא ולפענח נתונים מוצפנים. | אין גישה. |
| אין הרשאות למפתח | לקרוא נתונים מוצפנים. | אין גישה. |
אם למשתמש יש הרשאת גישה למפתח KMS ולגישה לקבוצת המפתחות העטופה, פונקציות SQL יכולות לפתוח את קבוצת המפתחות ולפענח את המידע המוצפן (ciphertext). המשתמשים יכולים גם להשתמש ב-API בארכיטקטורת REST או ב-CLI של Cloud KMS כדי לבטל את האריזה של קבוצת המפתחות.
בשאילתה לדוגמה הבאה נעשה שימוש בפונקציות SQL של KMS כדי לפענח מידע מוצפן (ciphertext) לא דטרמיניסטי:
SELECT AEAD.DECRYPT_STRING( KEYS.KEYSET_CHAIN(@kms_resource_name, @first_level_keyset), ciphertext, additional_authenticated_data) FROM ciphertext_table WHERE ...
תרחיש שימוש לדוגמה
נניח שבהטמעה מסוימת, מיקודים נחשבים למידע רגיש. אפשר להוסיף את נתוני המיקוד לטבלה ב-BigQuery באמצעות פונקציית ההצפנה של AEAD, וכך להצפין את העמודה Zipcode. בדוגמה הזו אנחנו משתמשים בפונקציה AEAD.ENCRYPT עם הפונקציה לניהול קבוצת מפתחות עטופה. הפונקציה KEYS.KEYSET_CHAIN מפענחת את מפתח ההצפנה הדיגיטלי באמצעות ה-KEK, והפונקציה AEAD.ENCRYPT מעבירה את המידע ל-KMS.
שרשרת קבוצת המפתחות להצפנה ולפענוח מבטיחה שהמפתח להצפנת נתונים (DEK) מוצפן או ארוז באמצעות KEK, ומועבר עם ה-KEK הזה. ה-DEK העטוף מפוענח או נפתח בתוך פונקציית ה-SQL, ואז משמש להצפנה או לפענוח של נתונים.
הפונקציה הלא דטרמיניסטית של AEAD יכולה לפענח נתונים כשניגשים אליהם באמצעות הפונקציה בשאילתה שמופעלת בטבלה.

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

תחביר של פונקציה לא דטרמיניסטית
התחביר הנתמך לשימוש בפונקציות לא דטרמיניסטיות כולל את האפשרויות הבאות:
AEAD.ENCRYPT( KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset), plaintext, additional_authenticated_data)
AEAD.DECRYPT_STRING( KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset), ciphertext, additional_authenticated_data)
AEAD.DECRYPT_BYTES( KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset), ciphertext, additional_authenticated_data)
התחביר של הפונקציות AEAD.DECRYPT_BYTES, AEAD.ENCRYPT, AEAD.DECRYPT_STRING ו-KEYS.KEYSET_CHAIN.
תחביר של פונקציה דטרמיניסטית
התחביר הנתמך לשימוש בפונקציות דטרמיניסטיות כולל את האפשרויות הבאות:
DETERMINISTIC_ENCRYPT( KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset), plaintext, additional_data)
DETERMINISTIC_DECRYPT_STRING( KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset), ciphertext, additional_data)
DETERMINISTIC_DECRYPT_BYTES( KEYS.KEYSET_CHAIN(kms_resource_name, first_level_keyset), ciphertext, additional_data)
התחביר של הפונקציות DETERMINISTIC_DECRYPT_BYTES, DETERMINISTIC_ENCRYPT, DETERMINISTIC_DECRYPT_STRING ו-KEYS.KEYSET_CHAIN.
תפקידים והרשאות
לרשימת התפקידים ב-Cloud KMS, קראו את המאמר הרשאות ותפקידים ב-Cloud KMS.
מגבלות
להצפנה באמצעות Cloud KMS יש את המגבלות וההגבלות הבאות:
המפתחות של Cloud KMS מוגבלים לאותו אזור או מספר אזורים כמו השאילתה. מסיבות שקשורות לאמינות, אסור להשתמש במפתחות גלובליים של Cloud KMS.
אי אפשר לבצע רוטציה של קבוצת מפתחות עטופה באמצעות הפונקציה
KEYS.ROTATE_KEYSET.הפרמטרים הקבועים בשאילתה ב-BigQuery גלויים למשתמשים בתוכנית לביצוע שאילתה. הגורם הזה יכול להשפיע על הפרמטרים
kms_resource_nameו-first_level_keysetשל הפונקציהKEYSET_CHAIN. המפתחות אף פעם לא נחשפים בטקסט פשוט, וצריך הרשאה למפתח Cloud KMS כדי לפענח את קבוצת המפתחות העטופה. הגישה הזו מבטיחה שהמפתחות לא ייחשפו דרך תוכנית לביצוע שאילתה אבחונית, אלא אם למשתמש יש הרשאה לפענח את קבוצת המפתחות.כשמשתמשים בהצפנה ברמת העמודה עם סיווגי אבטחה מבוססי-סוג, יש את המגבלות הבאות:
אבטחה ברמת העמודה: המשתמשים יכולים לפענח או להצפין נתונים רק בעמודות שיש להם גישה אליהן.
אבטחה ברמת השורה: המשתמשים יכולים לפענח נתונים רק בשורות שיש להם הרשאת גישה אליהן.
לפונקציות SQL ברמת העמודה אין השפעה משמעותית על הביצועים בהשוואה לביצועים של פונקציות הצפנה גולמיות, שבהן נתוני המפתח נשלחים כטקסט פשוט.
לפני שמתחילים
כדי לעבוד עם מפתחות Cloud KMS, קבוצות מפתחות, טבלאות מוצפנות ופונקציות דטרמיניסטיות ולא דטרמיניסטיות, צריך לבצע את הפעולות הבאות (אם עדיין לא ביצעתם אותן):
יוצרים מפתח Cloud KMS לעמודה מוצפנת עם רמת ההגנה של התוכנה או של מודול אבטחת החומרה (HSM).
לתת למשתמשים הרשאות לעבוד עם מפתחות של Cloud KMS, הצפנה ופענוח.
שימו לב למושגים הבאים, שמוזכרים בקטעים הבאים:
PROJECT_ID: השם של הפרויקט בענן של Google.
DATASET_NAME: השם של מערך הנתונים ב-BigQuery.
LOCATION_ID: המיקום של מערך הנתונים ב-BigQuery.
TABLE_NAME: השם של הטבלה ב-BigQuery.
KEY_RING_ID: השם של אוסף המפתחות ב-Cloud KMS.
KEY_ID: השם של מפתח Cloud KMS.
KMS_KEY: מפתח Cloud KMS (KEK) בפורמט הזה:'gcp-kms://projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID'דוגמה למפתח Cloud KMS:
'gcp-kms://projects/myProject/locations/us/keyRings/myKeyRing/cryptoKeys/myKeyName'
KMS_KEY_SHORT: דומה ל-KMS_KEYאבל בפורמט הזה:projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID
KEYSET_DECODED: קבוצת מפתחות מפוענחת כרצףBYTES. הפלט נראה דומה לזה של קבוצת מפתחות עטופים מפוענחים.למרות שהפונקציות של קבוצות מפתחות מחזירות קבוצות מפתחות כבייטים, פלט המשתמש מוצג כמחרוזת מקודדת. כדי להמיר קבוצת מפתחות מקודדת לקבוצת מפתחות מפוענחת, קראו את המאמר פענוח של קבוצת מפתחות ב-Cloud KMS.
KEYSET_ENCODED: קבוצת מפתחות מקודדת בתורSTRING. הפלט נראה דומה לזה של קבוצת מפתחות עטופה ומקודדת.כדי להמיר קבוצת מפתחות מקודדת לקבוצת מפתחות מפוענחת, קראו את המאמר פענוח של קבוצת מפתחות ב-Cloud KMS.
WRAPPED_KEYSET_DECODED: קבוצת מפתחות עטופה ומפוענחת כרצףBYTES. הנה דוגמה לפלט של הפקודה הזו:b'\x0a$\x00\xa6\xee\x12Y\x8d|l"\xf7\xfa\xc6\xeafM\xdeefy\xe9\x7f\xf2z\xb3M\ xf6"\xd0\xe0Le\xa8\x8e\x0fR\xed\x12\xb7\x01\x00\xf0\xa80\xbd\xc1\x07Z\\ \xd0L<\x80A0\x9ae\xfd(9\x1e\xfa\xc8\x93\xc7\xe8\...'למרות שהפונקציות של קבוצות מפתחות עטופות מחזירות קבוצות מפתחות עטופות כבייטים, פלט המשתמש מוצג כמחרוזת מקודדת. כדי להמיר קבוצת מפתחות מקודדת ועטופה לקבוצת מפתחות מפוענחת ועטופה, קראו את המאמר פענוח של קבוצת מפתחות ב-Cloud KMS.
WRAPPED_KEYSET_ENCODED: קבוצת מפתחות עטופה ומקודדת בתורSTRING. הנה דוגמה לפלט של הפקודה הזו:'CiQApu4SWTozQ7lNwITxpEvGlo5sT2rv1tyuSv3UAMtoTq/lhDwStwEA8KgwvX7CpVVzhWWMkRw WZNr3pf8uBIlzHeunCy8ZsQ6CofQYFpiBRBB6k/QqATbiFV+3opnDk/6dBL/S8OO1WoDC+DdD9 uzEFwqt5D20lTXCkGWFv1...'כדי להמיר קבוצת מפתחות מקודדת עטופה לקבוצת מפתחות מפוענחת עטופה, קראו את המאמר פענוח של קבוצת מפתחות ב-Cloud KMS.
ניהול מפתחות
בקטעים הבאים מפורטות משימות נפוצות שאפשר לבצע באמצעות מפתחות Cloud KMS.
יצירת קבוצת מפתחות
אפשר ליצור קבוצות מפתחות עטופות או קבוצות מפתחות גולמיות. כדי לעשות את זה, מבצעים את השלבים בקטעים הבאים.
יצירת קבוצת מפתחות גולמיים
מריצים את השאילתה הבאה כדי ליצור קבוצת מפתחות עם מפתח מסוג DETERMINISTIC_AEAD_AES_SIV_CMAC_256.
SELECT KEYS.NEW_KEYSET('DETERMINISTIC_AEAD_AES_SIV_CMAC_256') AS raw_keyset
יצירת קבוצת מפתחות עטופה
מריצים את השאילתה הבאה כדי ליצור קבוצת מפתחות עטופה ב-Cloud KMS עם מפתח מסוג DETERMINISTIC_AEAD_AES_SIV_CMAC_256.
SELECT KEYS.NEW_WRAPPED_KEYSET( KMS_KEY, 'DETERMINISTIC_AEAD_AES_SIV_CMAC_256')
פענוח של קבוצת מפתחות
למרות שפונקציות SQL שמחזירות קבוצות מפתחות יוצרות את קבוצות המפתחות בפורמט BYTES, התוצאה שמוצגת למשתמש מקודדת ומוצגת בפורמט STRING. כדי להמיר את המחרוזת המקודדת הזו לרצף בייטים מפוענח שאפשר להשתמש בו כפונקציות מילוליות להצפנת מפתחות, משתמשים בשאילתה הבאה.
פענוח של קבוצת מפתחות עטופה
מריצים את השאילתה הבאה כדי לפענח קבוצת מפתחות ארוזה של Cloud KMS.
SELECT FORMAT('%T', FROM_BASE64(WRAPPED_KEYSET_ENCODED'))
פענוח של קבוצת מפתחות גולמית
מריצים את השאילתה הבאה כדי לפענח קבוצת מפתחות גולמית.
SELECT FORMAT('%T', FROM_BASE64(KEYSET_ENCODED'))
עטיפה מחדש של קבוצת מפתחות עטופה
כדי לארוז מחדש קבוצת מפתחות ארוזה של Cloud KMS באמצעות מפתח חדש של Cloud KMS, מריצים את השאילתה הבאה: KMS_KEY_CURRENT מייצג את ה-KMS_KEY החדש שמשמש להצפנת קבוצת המפתחות. KMS_KEY_NEW מייצג את ה-KMS_KEY החדש שמשמש להצפנת קבוצת המפתחות.
SELECT KEYS.REWRAP_KEYSET( KMS_KEY_CURRENT, KMS_KEY_NEW, WRAPPED_KEYSET_DECODED)
רוטציה של קבוצת מפתחות עטופה
מריצים את השאילתה הבאה כדי להחליף קבוצת מפתחות עטופים של Cloud KMS במפתח מסוג DETERMINISTIC_AEAD_AES_SIV_CMAC_256.
SELECT KEYS.ROTATE_WRAPPED_KEYSET( KMS_KEY, WRAPPED_KEYSET_DECODED, 'DETERMINISTIC_AEAD_AES_SIV_CMAC_256')
יצירת קבוצת מפתחות גולמית מקבוצת מפתחות עטופה
חלק מפונקציות ההצפנה דורשות קבוצת מפתחות גולמית. כדי לפענח קבוצת מפתחות עטופה ב-Cloud KMS וליצור קבוצת מפתחות גולמית:
בכלי שורת הפקודה של BigQuery, מזינים את הפקודות הבאות כדי לשמור קבוצת מפתחות עטופה בקובץ בשם
keyset_to_unwrap, לפענח את קבוצת המפתחות העטופה ולהפיק את הפלט בפורמטKEYSET_DECODED:echo WRAPPED_KEYSET_ENCODED | base64 -d > /tmp/decoded_wrapped_key
gcloud kms decrypt \ --ciphertext-file=/tmp/decoded_wrapped_key \ --key=KMS_KEY_SHORT \ --plaintext-file=/tmp/keyset_to_unwrap.dec \ --project=PROJECT_ID
od -An --format=o1 /tmp/keyset_to_unwrap.dec | tr ' ' '\'
יצירת קבוצת מפתחות עטופה מקבוצת מפתחות גולמית
חלק מפונקציות ההצפנה דורשות קבוצת מפתחות עטופה של Cloud KMS. כדי להצפין קבוצת מפתחות גולמית וליצור קבוצת מפתחות עטופה:
בכלי שורת הפקודה של BigQuery, מזינים את הפקודות הבאות כדי לשמור קבוצת מפתחות גולמית בקובץ בשם
keyset_to_wrap, להצפין את קבוצת המפתחות הגולמית ולהפיק את הפלט בפורמטWRAPPED_KEYSET_DECODED:echo KEYSET_ENCODED | base64 -d > /tmp/decoded_key
gcloud kms encrypt \ --plaintext-file=/tmp/decoded_key \ --key=KMS_KEY_SHORT \ --ciphertext-file=/tmp/keyset_to_wrap.dec \ --project=PROJECT_ID
od -An --format=o1 /tmp/keyset_to_wrap.dec | tr ' ' '\'
יצירת מפתח עטוף לפונקציית DLP
בפונקציות DLP, צריך מפתח קריפטוגרפי ואז משתמשים במפתח הזה כדי לקבל מפתח ארוז.
כדי ליצור מפתח קריפטוגרפי חדש, מריצים את הפקודה הבאה בשורת הפקודה. גודל המפתח יכול להיות 16, 24 או 32 בייטים. בדוגמה הבאה נעשה שימוש במפתח של 16 בייטים:
openssl rand 16 > rand.key.16.binעוטפים את המפתח שנוצר בגודל 16 בייטים באמצעות מפתח KMS. מקרה לדוגמה:
KEYRING=projects/myproject/locations/us/keyRings/kms-test KEY=projects/myproject/locations/us/keyRings/kms-test/cryptoKeys/test-Kek PROJECT="myproject" gcloud kms encrypt --project $PROJECT --location us --keyring $KEYRING --key $KEY --plaintext-file ./rand.key.16.bin --ciphertext-file ./rand.key.16.wrappedעכשיו אפשר לקבל את הליטרל
BYTESשל המפתח העטוף או את פורמט base64 של המפתח העטוף.ליטרל של בייטים
username:~/tmp$ od -b ./rand.key.16.wrapped | cut -d ' ' -f 2- | head -n -1 | sed -e 's/^/ /' | tr ' ' '\'הפלט אמור להיראות כך:
\012\044\000\325\155\264\153\246\071\172\130\372\305\103\047\342\356\061\077\014\030\126\147\041\126\150\012\036\020\202\215\044\267\310\331\014\116\233\022\071\000\363\344\230\067\274\007\340\273\016\212\151\226\064\200\377\303\207\103\147\052\267\035\350\004\147\365\251\271\133\062\251\246\152\177\017\005\270\044\141\211\116\337\043\035\263\122\340\110\333\266\220\377\247\204\215\233פורמט Base64
username:~/tmp$ base64 ./rand.key.16.wrappedהפלט אמור להיראות כך:
CiQA1W20a6Y5elj6xUMn4u4xPwwYVmchVmgKHhCCjSS3yNkMTpsSOQDz5Jg3vAfguw6KaZY0gP/Dh0NnKrcd6ARn9am5WzKppmp/DwW4JGGJTt8jHbNS4EjbtpD/p4SNmw==
קבלת מספר המפתחות בקבוצת מפתחות
מריצים את השאילתה הבאה כדי לקבל את מספר המפתחות בקבוצת מפתחות גולמית.
אם אתם עובדים עם קבוצת מפתחות עטופה, קודם צריך ליצור קבוצת מפתחות גולמית.
מריצים את השאילתה הזו עם קבוצת המפתחות הגולמית:
SELECT KEYS.KEYSET_LENGTH(KEYSET_DECODED) as key_count;
איך מקבלים ייצוג ב-JSON של קבוצת מפתחות
מריצים את השאילתה הבאה כדי להציג ייצוג ב-JSON של קבוצת מפתחות גולמית.
אם אתם עובדים עם קבוצת מפתחות עטופה, קודם צריך ליצור קבוצת מפתחות גולמית.
מריצים את השאילתה הזו עם קבוצת המפתחות הגולמית:
SELECT KEYS.KEYSET_TO_JSON(KEYSET_DECODED);
הצפנה ופענוח
כדי להצפין עמודה בטבלה, אתם יכולים להשתמש בקבוצות מפתחות גולמיות או בקבוצות מפתחות עטופות. אתם יכולים גם לבחור אם להשתמש בהצפנה דטרמיניסטית או לא דטרמיניסטית בעמודות. בדוגמאות שבקטע הזה נעשה שימוש במערכי מפתחות עטופים, אבל אפשר להחליף אותם במערכי מפתחות גולמיים.
הצפנה דטרמיניסטית של עמודה באמצעות קבוצת מפתחות עטופה
מריצים את השאילתה הבאה כדי ליצור טבלה ולאחסן קבוצת מפתחות עטופה של Cloud KMS עם הצפנה דטרמיניסטית בעמודה שנקראת encrypted_content.
מצפינים עמודה באמצעות קבוצת המפתחות העטופה.
CREATE OR REPLACE TABLE DATASET_NAME.TABLE_NAME AS SELECT DETERMINISTIC_ENCRYPT( KEYS.KEYSET_CHAIN(KMS_KEY, WRAPPED_KEYSET_DECODED), 'plaintext', '') AS encrypted_content
פענוח דטרמיניסטי של עמודה באמצעות קבוצת מפתחות עטופה
כדי לפענח באופן דטרמיניסטי עמודה שמכילה תוכן מוצפן, מריצים את השאילתה הבאה באמצעות קבוצת מפתחות עטופה של Cloud KMS. השאילתה הזו מניחה שאתם מפנים לטבלה עם עמודה בשם encrypted_content.
SELECT DETERMINISTIC_DECRYPT_STRING( KEYS.KEYSET_CHAIN(KMS_KEY, WRAPPED_KEYSET_DECODED), encrypted_content, '') FROM DATASET_NAME.TABLE_NAME
הצפנה לא דטרמיניסטית של עמודה באמצעות קבוצת מפתחות עטופה
עיינו במאמר הצפנה דטרמיניסטית של עמודה באמצעות קבוצת מפתחות עטופה, אבל החליפו את DETERMINISTIC_ENCRYPT ב-AEAD.ENCRYPT. חשוב לוודא שקבוצת המפתחות היא מסוג AEAD_AES_GCM_256.
פענוח לא דטרמיניסטי של עמודה עם קבוצת מפתחות עטופה
אפשר לעיין במאמר פענוח דטרמיניסטי של עמודה באמצעות קבוצת מפתחות עטופה, אבל צריך להחליף את DETERMINISTIC_DECRYPT_STRING ב-AEAD.DECRYPT_STRING. חשוב לוודא שקבוצת המפתחות היא מסוג AEAD_AES_GCM_256.
המאמרים הבאים
- מידע נוסף על Cloud KMS הנושא הזה כולל מידע קונספטואלי על הצפנה ברמת העמודה ב- Google Cloud.
- מידע נוסף על הצפנת AEAD ב-BigQuery במאמר הזה מוסבר על הצפנה ברמת העמודה, ספציפית ל-BigQuery.
- מידע נוסף על פונקציות הצפנה של AEAD ב-BigQuery בנושא הזה מפורטות כל פונקציות ה-SQL שאפשר להשתמש בהן להצפנה ברמת העמודה ב-BigQuery.