גישה מאובטחת לנתוני האפליקציה ושליטה בהם

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

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

מהן תצוגות מאובטחות עם פרמטרים?

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

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

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

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

מטרות

  • יצירה של תצוגות מאובטחות עם פרמטרים שמוגדרים בשם התצוגה.
  • יוצרים את תפקיד מסד הנתונים שבו האפליקציה משתמשת כדי להתחבר למסד הנתונים ולגשת לתצוגות מאובטחות עם פרמטרים.
  • נותנים לתפקיד החדש הרשאות לתצוגות המאובטחות עם הפרמטרים ומבטלים את הגישה לטבלאות הבסיס.
  • מתחברים באמצעות התפקיד החדש ומוודאים שאי אפשר לגשת לטבלאות המוגבלות.
  • מריצים שאילתות בתצוגה עם הפרמטרים באמצעות הפרוצדורה המאוחסנת mysql.execute_parameterized_query או באמצעות QueryData API.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.

משתמשים חדשים ב- Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

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

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

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

הפעלת החיוב וממשקי ה-API הנדרשים

  1. במסוף Google Cloud , בוחרים פרויקט.

    כניסה לדף לבחירת הפרויקט

  2. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  3. מפעילים את ממשקי Cloud API שנדרשים כדי ליצור חיבור ל-Cloud SQL.

    1. הפעלת ה-API

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

    3. בשלב Enable APIs (הפעלת ממשקי API), לוחצים על Enable (הפעלה) כדי להפעיל את ממשקי ה-API הבאים:

      • Cloud SQL for MySQL API
      • Knowledge Catalog API

יצירה של מסד נתונים וחיבור אליו

  1. יצירת מופע
  2. מתחברים למופע ויוצרים מסד נתונים.

הכנת הסביבה

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

הפעלת הדגל של מסד הנתונים

  • מוודאים שהמכונה שלכם ב-Cloud SQL ל-MySQL מריצה Cloud SQL ל-MySQL בגרסה 8.0.43 ואילך. אם המכונה שלכם ב-Cloud SQL ל-MySQL 8.0 מריצה גרסה משנית קודמת, אתם יכולים לבצע שדרוג של גרסה משנית.
  • מפעילים את הדגל cloudsql_parameterized_secure_view של מסד הנתונים במופע. השינוי הזה בדגל לא מחייב הפעלה מחדש של מסד הנתונים. מידע נוסף זמין במאמר בנושא הגדרת דגלים של מסד נתונים במופע.

הגדרת מסד הנתונים והתפקידים

  1. נכנסים לדף Cloud SQL במסוף Google Cloud .

    מעבר אל Cloud SQL

  2. בוחרים מופע מהרשימה.

  3. בתפריט הניווט, לוחצים על Cloud SQL Studio.

  4. נכנסים ל-Studio באמצעות חשבון משתמש עם הרשאת אדמין.

  5. לוחצים על אימות. בחלונית Explorer מוצגת רשימה של האובייקטים במסד הנתונים.

  6. לוחצים על New SQL editor tab או על New tab כדי לפתוח כרטיסייה חדשה.

  7. יוצרים מסד נתונים בשם store_db לנתוני האפליקציה ולתצוגות:

    CREATE DATABASE IF NOT EXISTS store_db;
    USE store_db;
    
  8. יוצרים תפקיד חדש במסד הנתונים להרצת שאילתות על תצוגות עם פרמטרים. האפליקציה משתמשת בתפקיד הזה כדי להתחבר למסד הנתונים ולהריץ שאילתות עם גישה מוגבלת לתצוגות מורשות בלבד:

    CREATE ROLE 'psv_user';
    

יצירת הטבלה והוספת נתונים

  1. נכנסים לדף Cloud SQL במסוף Google Cloud .

    מעבר אל Cloud SQL

  2. בוחרים מכונה של Cloud SQL ל-MySQL מהרשימה.

  3. בתפריט הניווט, לוחצים על Cloud SQL Studio.

  4. נכנסים ל-Studio באמצעות אימות מסד נתונים.

  5. לוחצים על New tab (כרטיסייה חדשה) כדי לפתוח כרטיסייה חדשה בעורך ה-SQL.

  6. יוצרים את הטבלאות ומזינים נתונים:

    CREATE TABLE store_db.checked_items (
    bag_id INT,
    timestamp TIMESTAMP,
    loc_code CHAR(3),
    scan_type CHAR(1),
    location TEXT,
    customer_id INT
    );
    
    INSERT INTO store_db.checked_items (bag_id, timestamp, loc_code, scan_type, location, customer_id) VALUES
    (101, '2023-10-26 10:00:00', 'ABC', 'I', 'Warehouse A', 123),
    (102, '2023-10-26 10:15:30', 'DEF', 'O', 'Loading Dock B', 456),
    (103, '2023-10-26 10:30:45', 'GHI', 'I', 'Conveyor Belt 1', 789),
    (104, '2023-10-26 11:00:00', 'JKL', 'O', 'Shipping Area C', 101),
    (105, '2023-10-26 11:45:15', 'MNO', 'I', 'Sorting Station D', 202),
    (106, '2023-10-26 12:00:00', 'PQR', 'O', 'Truck Bay E', 303);
    

יצירת תצוגות מאובטחות עם פרמטרים והגדרת הרשאות גישה

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

  1. נכנסים לדף Cloud SQL במסוף Google Cloud .

    מעבר אל Cloud SQL

  2. בוחרים מופע מהרשימה.

  3. בתפריט הניווט, לוחצים על Cloud SQL Studio.

  4. נכנסים ל-Studio ומתחברים ל-database בתור חשבון המשתמש store_db שבו השתמשתם בקטע הקודם.

  5. לוחצים על אימות. בחלונית Explorer מוצגת רשימה של האובייקטים במסד הנתונים.

  6. לוחצים על New SQL editor tab או על New tab כדי לפתוח כרטיסייה חדשה.

  7. כדי לספק גישה מוגבלת לתצוגה, יוצרים תצוגה עם פרמטרים:

    CREATE VIEW store_db.secure_checked_items AS
    SELECT bag_id, timestamp, location
    FROM store_db.checked_items t
    WHERE customer_id = @app_end_userid;
    
  8. נותנים לתפקיד psv_user גישת SELECT לתצוגה עם פרמטרים:

    GRANT SELECT ON store_db.secure_checked_items TO 'psv_user';
    
  9. צריך להעניק הרשאת הפעלה לפרוצדורה המאוחסנת המובנית של המערכת שמשמשת להפעלה בטוחה של שאילתות שמכילות פרמטרים:

    GRANT EXECUTE ON PROCEDURE mysql.execute_parameterized_query TO 'psv_user';
    
  10. זה שינוי אופציונלי. כדי לוודא שהמשתמשים לא יוכלו לעקוף את התצוגה המאובטחת, צריך לבטל במפורש את כל ההרשאות הישירות במסד הנתונים הטבלאי מ-psv_user:

    REVOKE ALL PRIVILEGES ON store_db.checked_items FROM 'psv_user';
    
  11. מקצים את התפקיד psv_user למשתמש במסד הנתונים שאומת באמצעות IAM או לחשבון ההתחברות של האפליקציה:

    GRANT 'psv_user' TO 'IAM_USER_EMAIL'@'%';
    
    SET DEFAULT ROLE 'psv_user' TO 'IAM_USER_EMAIL'@'%';
    

    מחליפים את IAM_USER_EMAIL בכתובת האימייל של משתמש IAM או בחשבון הכניסה לאפליקציה.

אימות אבטחת מידע

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

  1. נכנסים ל-Cloud SQL Studio באמצעות כתובת האימייל המוגבלת של IAM או פרטי הכניסה לאפליקציה.

  2. לוחצים על New tab (כרטיסייה חדשה) כדי לפתוח כרטיסייה חדשה בעורך ה-SQL.

  3. שולחים שאילתה במסד הנתונים הטבלאי ומוודאים שהגישה נדחתה.

    SELECT * FROM store_db.checked_items;
    

    מסד הנתונים מחזיר את השגיאה ERROR 1142 (42000): SELECT command denied to user 'IAM_USER_EMAIL'@'%' for table 'checked_items'.

  4. מריצים שאילתה על התצוגה המאובטחת עם הפרמטרים באמצעות התהליך המאוחסן המובנה mysql.execute_parameterized_query.

    CALL mysql.execute_parameterized_query(
      'SELECT * FROM store_db.secure_checked_items',
      'app_end_userid=303'
    );
    
  5. מריצים שאילתה על התצוגות המאובטחות עם פרמטרים באמצעות תחביר SQL והבקשה QueryData עם פרמטרים של PSV.

     curl -X POST \
       "https://geminidataanalytics.googleapis.com/v1beta/projects/PROJECT_ID/locations/REGION:queryData" \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
       -H "Content-Type: application/json; charset=utf-8" \
       -d '{
         "prompt": "Show me the checked items.",
         "context": {
           "datasource_references": {
             "cloud_sql_reference": {
               "database_reference": {
                 "engine": "MYSQL",
                 "project_id": "PROJECT_ID",
                 "region": "REGION",
                 "instance_id": "INSTANCE_ID",
                 "database_id": "DATABASE_ID"
               }
             }
           },
           "parameterized_secure_view_parameters": {
             "parameters": {
               "key": "app_end_userid"
               "app_end_userid": "303"
             }
           }
         },
         "generation_options": {
           "generate_query_result": true,
           "generate_natural_language_answer": true,
           "generate_explanation": true
         }
       }'

    מחליפים את הערכים הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
    • REGION: האזור שבו נמצאת המכונה של Cloud SQL ל-MySQL.
    • INSTANCE_ID: המזהה של מכונת Cloud SQL ל-MySQL.
    • DATABASE_ID: המזהה של מסד הנתונים שלכם ב-Cloud SQL ל-MySQL.

הסרת המשאבים

מחיקת האשכול

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

  1. נכנסים לדף Cloud SQL במסוף Google Cloud .

    מעבר אל Cloud SQL

  2. בוחרים מופע מהרשימה.

  3. לוחצים על Delete.

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

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

  • מידע נוסף על תצוגות מאובטחות עם פרמטרים

  • כך משתמשים בתצוגות מאובטחות עם פרמטרים.