סקירה כללית של תצוגות עם פרמטרים

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

כדי לטפל במידע רגיש, תצוגות פרמטריות של Bigtable משתמשות בהקשר מבודד שמופרד מטקסט שאילתת SQL. מכיוון שהמסד נתונים קושר את הערכים האלה בצד השרת, משתמשים וסוכני AI לא יכולים לשנות את פרמטרים של שאילתות. מסד הנתונים מגביל באופן אוטומטי את הגישה לנתונים להקשר הספציפי שלכם, בלי קשר לאופן שבו אתם כותבים את השאילתה.

היתרונות של תצוגות עם פרמטרים

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

  • העברת זהויות ברמה עמוקה: אכיפה של הרשאות גישה לנתונים ברמת המשתמש, כדי להבטיח שהמשתמשים יוכלו לגשת רק לנתונים שלהם. לדוגמה, אפליקציה יכולה לוודא שמשתמשים או דיירים יאחזרו שורות שנמצאות רק בתוך הגבול המיועד שלהם.
  • ניהול משתמשים פשוט יותר: אפשר להשתמש בתפקיד יחיד במסד הנתונים לכל משתמשי מסד הנתונים, במקום בתפקיד נפרד לכל משתמש.
  • בידוד פרמטרים: תצוגות עם פרמטרים מפחיתות את הסיכונים על ידי העברת ערכים כהקשר מבודד שלא נשאר בשליטה של מודל שפה גדול או של משתמש קצה. הערכים האלה נשמרים בנפרד מטקסט השאילתה, כך שמשתמש או סוכן AI שמייצר את השאילתה לא יכולים לשנות אותם.
  • צמצום הסיכון להזרקת SQL: כשמפתחים אפליקציות, החלפת פרמטרים בצד הלקוח בתוך טקסט השאילתה עלולה להוביל למניפולציה של השאילתה. תצוגות עם פרמטרים מצמצמות את הסיכון הזה על ידי ביצוע של שיוך פרמטרים בצד השרת אחרי ניתוח מבנה השאילתה. השימוש בפרמטרים מונע הזרקת SQL כי ערכים שנשלטים על ידי התוקף לא יכולים לשנות את מבנה השאילתה.

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

CREATE VIEW patient_health_pv AS
(SELECT * FROM patient_health_records WHERE patient_id = CAST(VIEW_PARAMETERS('patient_id') AS BYTES))

כשהלקוח רוצה לשלוח שאילתה לגבי קריאה של מטופל ב-cholesterol:

SELECT readings['value'], readings['date']
FROM patient_health_pv
WHERE readings['test_name'] = 'cholesterol'

מכיוון שהתצוגה היא שאילתה, Bigtable מאגד ומחיל באופן אוטומטי את הערך patient_id ממפת הפרמטרים המבודדת. למודל ה-LLM או למשתמש הקצה אין אפשרות לשנות את המסנן הזה או לבטל אותו, וכך מובטח היקף חזק ברמת המשתמש ומבוטלת האפשרות להזרקת SQL.

איך פועלים תצוגות עם פרמטרים

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

הפונקציה VIEW_PARAMETERS() היא ממשק SQL לגישה לפרמטרים האלה בהגדרת תצוגה. לדוגמה, כדי לסנן נתונים לפי המזהה של המשתמש שמבצע את השאילתה, אפשר לכלול את הקטע הבא בסעיף WHERE של התצוגה המפורטת:

CREATE VIEW purchase_history_pv AS
(SELECT * FROM purchases WHERE user_id = CAST(VIEW_PARAMETERS('user_id') AS BYTES))

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

CREATE VIEW specific_test_result_pv AS
SELECT
  tests[VIEW_PARAMETERS('test_name')] AS reading,
  _timestamp AS reading_time
FROM patients

ההבדל מפרמטרים רגילים של שאילתות

פרמטרים של תצוגה פועלים בצורה שונה בהשוואה לפרמטרים של שאילתה רגילים:

  • תחביר והקשר: פרמטרים רגילים של שאילתות מוגדרים באמצעות התחביר @param ואי אפשר להצהיר עליהם בתוך הגדרת תצוגה, אלא רק בשאילתה. הגישה לפרמטרים של התצוגה מתבצעת באמצעות הפונקציה VIEW_PARAMETERS('key'), שאפשר להפעיל בכל שאילתה או בהקשר של תצוגה.
  • התנהגות של כשל סגור: אם מתבצעת שאילתה על הגדרת תצוגה שמכילה הפניה VIEW_PARAMETERS('key'), אבל הערך התואם לא מסופק במפת הפרמטרים של התצוגה בבקשה, השאילתה נכשלת באופן מיידי עם שגיאה not found / missing parameter. כך נמנעת חשיפת נתונים לא מכוונת אם התצורה לא מיושמת בצורה נכונה.

מגבלות

המגבלות הבאות חלות על תצוגות מפורטות עם פרמטרים:

  • אפשר ליצור תצוגות עם פרמטרים רק מתצוגות לוגיות. יוצרים תצוגה לוגית חדשה עם פרמטרים באמצעות Google Cloud CLI. אי אפשר לשנות תצוגה לוגית קיימת.
  • פרמטרים של תצוגה תומכים רק בערכים מסוג מחרוזת. אם פרמטר מייצג סוג נתונים שונה בהגדרת ה-SQL של התצוגה המפורטת, צריך להעביר את ערך הפרמטר כמחרוזת ולהמיר אותו בתוך הגדרת התצוגה המפורטת – לדוגמה, CAST(VIEW_PARAMETERS('parameter_name') AS INT64).

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