VPC Service Controls ל-BigQuery

בדף הזה מוסבר איך לשפר את האבטחה של משאבי BigQuery באמצעות יצירת היקפים עם VPC Service Controls. ההיקפים האלה מגבילים את הגישה אל BigQuery וממנו, והם לא תלויים באמצעי הבקרה של ניהול הזהויות והרשאות הגישה (IAM). הם שימושיים בתרחישי השימוש הבאים:

  • מניעת דליפת נתונים על ידי הגבלת הגישה למשאבים, למעט משאבים שהגישה אליהם מותרת במפורש בכללי תעבורת נתונים נכנסת (ingress) ותעבורת נתונים יוצאת (egress).
  • טעינת נתונים בבטחה ל-BigQuery ממקורות או משירותים של צד שלישי, כמו Cloud Storage. Google Cloud
  • שליטה בייצוא נתונים מ-BigQuery ל-Cloud Storage או ליעדים אחרים.

מידע נוסף זמין בסקירה כללית על VPC Service Controls.

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

  • כדי לקבל את ההרשאות שנדרשות להגדרת גבולות גזרה לשירות, אפשר לעיין במאמר בנושא בקרת גישה באמצעות IAM ל-VPC Service Controls.
  • צריכה להיות לכם מדיניות גישה לארגון. מידע נוסף זמין במאמר בנושא יצירת מדיניות גישה.

יצירת היקף האבטחה של VPC Service Controls

בדוגמה הבאה מוצג איך ליצור היקף של VPC Service Controls שמגביל את טווח כתובות ה-IP החיצוניות שיכולות לגשת לפרויקט BigQuery.

  1. יוצרים רמת גישה שמאפשרת גישה רק לטווח מסוים של כתובות IP – למשל, כתובות שנמצאות ברשת ארגונית. כדי ליצור אותו, משתמשים בפקודה gcloud access-context-manager levels create:

    echo """
    - ipSubnetworks:
      - 162.222.181.0/24
      - 2001:db8::/48
    """ > level.yaml
    
    gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
        --title="TITLE" --basic-level-spec=level.yaml
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ACCESS_LEVEL_NAME: המזהה של רמת הגישה
    • TITLE: שם קריא לאנשים של גבולות גזרה לשירות

    מידע נוסף על יצירת רמות גישה זמין בדוגמאות להטמעה.

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

    יצירת היקף

    כדי ליצור גבולות גזרה חדשים להגנה על פרויקט BigQuery, משתמשים בפקודה gcloud access-context-manager perimeters create:

    echo """
    - ingressFrom:
        identityType: ANY_IDENTITY
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      ingressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: bigquery.googleapis.com
        resources:
        - '*'
    
    """ > ingress.yaml
    
    gcloud access-context-manager perimeters create BIGQUERY_PERIMETER --title="TITLE" \
        --resources=BIGQUERY_PROJECT_NUMBER \
        --restricted-services=bigquery.googleapis.com \
        --ingress-policies=ingress.yaml
        --policy=POLICY_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • POLICY_NAME: המזהה של מדיניות הגישה
    • ACCESS_LEVEL_NAME: המזהה של רמת הגישה
    • PERIMETER: המזהה של ההיקף
    • TITLE: הכותרת הקצרה, שקריאה לאנשים, של גבולות הגזרה לשירות
    • BIGQUERY_PROJECT_NUMBER: המזהה של פרויקט BigQuery
    • POLICY_NAME: המזהה של מדיניות הגישה

    עדכון של service perimeter

    כדי לעדכן גבולות גזרה קיימים, משתמשים בפקודה gcloud access-context-manager perimeters update:

    gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --set-ingress-policies=ingress.yaml
    

    מחליפים את BIGQUERY_PERIMETER במזהה של ההיקף שמגן על משאב BigQuery.

בדיקת ההיקף

לפני שאוכפים את גבולות הגזרה של VPC Service Controls, מומלץ לבדוק אותם. מידע נוסף זמין במאמרים בנושא מצב פרימטר לבדיקות של גבולות גזרה לשירות ושימוש במצב פרימטר לבדיקות לבדיקת מדיניות של תעבורת נתונים נכנסת (ingress) או תעבורת נתונים יוצאת (egress).

תרחישים לדוגמה

בדוגמאות הבאות לתרחישי שימוש מוסבר איך להגן על נתונים שנכנסים ל-BigQuery ויוצאים ממנו באמצעות VPC Service Controls.

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

בדוגמאות הבאות מוצגות דרכים לאפשר תקשורת באופן סלקטיבי בין פרויקטים של BigQuery ו-Cloud Storage כשהם מופרדים על ידי גבולות.

  1. כדי לאפשר לפרויקט BigQuery לגשת לפרויקט Cloud Storage, צריך לעדכן את כללי היציאה (egress) של גבולות הגזרה סביב פרויקט Cloud Storage:

    echo """
    - egressFrom:
        identityType: ANY_IDENTITY
      egressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - projects/BIGQUERY_PROJECT_NUMBER
    """ > egress.yaml
    
    gcloud access-context-manager perimeters update CLOUD_STORAGE_PERIMETER --policy=POLICY_NAME --set-egress-policies=egress.yaml
    

    מחליפים את מה שכתוב בשדות הבאים:

    • BIGQUERY_PROJECT_NUMBER: המזהה של פרויקט BigQuery
    • CLOUD_STORAGE_PERIMETER: המזהה של ההיקף שמגן על משאבי Cloud Storage
    • POLICY_NAME: המזהה של מדיניות הגישה
  2. כדי לאפשר לפרויקט Cloud Storage לגשת לפרויקט BigQuery, צריך לעדכן את כללי היציאה (egress) של גבולות הגזרה סביב פרויקט BigQuery:

    echo """
    - egressFrom:
        identityType: ANY_IDENTITY
      egressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - projects/CLOUD_STORAGE_PROJECT_NUMBER
    """ > egress1.yaml
    
    gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --policy=POLICY_NAME --set-egress-policies=egress1.yaml
    

    מחליפים את מה שכתוב בשדות הבאים:

    • CLOUD_STORAGE_PROJECT_NUMBER: המזהה של פרויקט Cloud Storage
    • PERIMETER: המזהה של ההיקף
    • POLICY_NAME: המזהה של מדיניות הגישה
  3. אופציונלי: אם גבולות הגזרה שמגנים על פרויקט BigQuery כוללים את storage.googleapis.com כשירות מוגבל, צריך לעדכן את כלל תעבורת הנתונים הנכנסת (ingress):

    echo """
    - ingressFrom:
        identityType: ANY_IDENTITY
        sources:
        - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME
      ingressTo:
        operations:
        - methodSelectors:
          - method: '*'
          serviceName: bigquery.googleapis.com
        - methodSelectors:
          - method: '*'
          serviceName: storage.googleapis.com
        resources:
        - '*'
    
    """ > ingress.yaml
    
    gcloud access-context-manager perimeters create BIGQUERY_PERIMETER --title="TITLE" \
        --resources=BIGQUERY_PROJECT_NUMBER \
        --restricted-services=bigquery.googleapis.com \
        --ingress-policies=ingress.yaml
        --policy=POLICY_NAME
    

ייבוא וייצוא נתונים מ-BigQuery Omni

כדי להוסיף עוד שכבת הגנה, אתם יכולים להשתמש בגבולות גזרה של VPC Service Controls כדי להגביל את הגישה בין BigQuery Omni לבין שירות ענן חיצוני. מידע נוסף ודוגמאות זמינים במאמר בנושא הגדרת VPC Service Controls כשיוצרים טבלת BigLake ב-Azure Blob Storage.

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