שימוש בתגים ליצירת מדיניות

בדף הזה מוסבר איך לצרף תגי מנהל המשאבים לכללי מדיניות של Secure Web Proxy. תגי מנהל המשאבים הם תוויות שאפשר לצרף למשאבים שונים ב- Google Cloud , כמו מכונות וירטואליות (VM). אתם יכולים להשתמש בתגים כדי לאכוף אמצעי בקרה מותנים לגישה ברשת באמצעות תוויות ארגוניות קיימות.

באמצעות התגים האלה, אתם יכולים לבצע את הפעולות הבאות:

  • פילוח עומסי עבודה: אתם יכולים לזהות באופן ייחודי סביבות שונות כמו production או development וסוגי שירותים כמו frontend או database.

  • ריכוז בקרת הגישה: אפשר לבסס את מדיניות Secure Web Proxy על התגים האלה. לדוגמה, אפשר ליצור כלל מדיניות שאומר: "רק תעבורה שמקורה במשאבים עם התג tag segment=production יכולה לגשת לקבוצה ספציפית של כתובות URL".

בדף הזה מוסבר איך:

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

יצירת מופע של Secure Web Proxy עם מדיניות ריקה

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

יצירת מדיניות אבטחה ריקה

המסוף

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

    למדיניות SWP

  2. לוחצים על יצירת מדיניות.

  3. בשדה Name, מזינים שם למדיניות, למשל myswppolicy.

  4. בשדה Description (תיאור), מזינים תיאור למדיניות, כמו My new swp policy.

  5. בקטע אזורים, בוחרים את האזור שבו רוצים ליצור את המדיניות, כמו us-central1.

  6. לוחצים על יצירה.

Cloud Shell

  1. משתמשים בכלי לעריכת טקסט כדי ליצור קובץ policy.yaml.

  2. מוסיפים את הקוד הבא לקובץ policy.yaml:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    description: POLICY_DESCRIPTION
    

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

    • ‫PROJECT_NAME: שם הפרויקט

    • ‫REGION: האזור שבו נוצרה המדיניות, למשל us-central1

    • ‫POLICY_NAME: שם המדיניות

    • ‫POLICY_DESCRIPTION: תיאור המדיניות

  3. מייבאים את מדיניות האבטחה באמצעות הפקודה gcloud network-security gateway-security-policies import:

    gcloud network-security gateway-security-policies import POLICY_NAME \
        --source=POLICY_FILE.yaml \
        --location=REGION
    

יצירת שרת proxy לאינטרנט

המסוף

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

    מעבר ל-Web Proxies

  2. לוחצים על יצירת שרת proxy מאובטח לאינטרנט.

  3. בשדה Name, מזינים שם לשרת ה-proxy לאינטרנט, כמו myswp.

  4. בשדה Description (תיאור), מזינים תיאור לשרת ה-proxy לאינטרנט, כמו My new swp.

  5. בקטע מצב ניתוב, בוחרים באחת מהאפשרויות הבאות:

    • מפורש: פריסת מופע Secure Web Proxy במצב proxy מפורש.
    • הצעד הבא: פריסת מופע Secure Web Proxy במצב 'הצעד הבא'.
  6. בקטע אזורים, בוחרים את האזור שבו רוצים ליצור את שרת ה-proxy לאינטרנט, למשל us-central1.

  7. בקטע רשת, בוחרים את הרשת שבה רוצים ליצור את שרת ה-proxy לאינטרנט.

  8. בשדה Subnetwork (תת-רשת), בוחרים את תת-הרשת של ה-VPC שיצרתם במהלך ההגדרה הראשונית.

  9. אופציונלי: בשדה כתובת ה-IP של שרת ה-proxy לאינטרנט, מזינים את כתובת ה-IP של שרת ה-proxy המאובטח לאינטרנט.

    אפשר להזין כתובת IP מטווח כתובות ה-IP של Secure Web Proxy שנמצאות ברשת המשנה שיצרתם בשלב הקודם. אם לא תזינו את כתובת ה-IP, המופע של Secure Web Proxy יבחר באופן אוטומטי כתובת IP מתוך תת-הרשת שנבחרה.

  10. בקטע Certificate, בוחרים את האישור שרוצים להשתמש בו כדי ליצור את שרת ה-proxy לאינטרנט.

  11. בשדה מדיניות, בוחרים את המדיניות שיצרתם כדי לשייך אליה את שרת ה-proxy לאינטרנט.

  12. לוחצים על יצירה.

Cloud Shell

  1. משתמשים בכלי לעריכת טקסט כדי ליצור קובץ gateway.yaml.

  2. מוסיפים את הקוד הבא לקובץ gateway.yaml:

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK
    routingMode: ROUTING_MODE
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    

    אופציונלי: כדי לאפשר לאפליקציות לקוח מאזורים אחרים של Google Cloud Google Cloud להתחבר לשרת ה-Proxy, מפעילים גישה גלובלית כשיוצרים את מופע Secure Web Proxy.

    בקובץ gateway.yaml, מוסיפים את השדה allowGlobalAccess ומגדירים אותו לערך true.

    חשוב לדעת: אפשר להפעיל את allowGlobalAccess רק כשיוצרים מופע של Secure Web Proxy. אי אפשר לשנות את ההגדרה הזו בהמשך.

    name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME
    type: SECURE_WEB_GATEWAY
    ports: [GATEWAY_PORT_NUMBERS]
    certificateUrls: [CERTIFICATE_URLS]
    gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME
    network: projects/PROJECT_NAME/global/networks/NETWORK_NAME
    subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK
    addresses: [GATEWAY_IP_ADDRESS]
    scope: samplescope
    allowGlobalAccess: true
    

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

    • ‫GATEWAY_NAME: השם של מופע Secure Web Proxy

    • ‫GATEWAY_PORT_NUMBERS: רשימה של מספרי יציאות לשער הזה, כמו [80,443]

    • ‫CERTIFICATE_URLS: רשימה של כתובות URL של אישורי SSL

    • ‫SUBNETWORK: רשת משנה של VPC שיצרתם במהלך ההגדרה הראשונית

    • ‫ROUTING_MODE: מציינים את מצב הניתוב הנדרש של שרת ה-Proxy לאינטרנט:

      • ‫EXPLICIT_ROUTING_MODE: פריסת מופע Secure Web Proxy במצב Proxy מפורש
      • ‫NEXT_HOP_ROUTING_MODE: פריסת מופע Secure Web Proxy במצב next hop
    • ‫GATEWAY_IP_ADDRESS: רשימה אופציונלית של כתובות IP של מופעי Secure Web Proxy ברשתות המשנה של ה-Proxy שיצרתם קודם בשלבי ההגדרה הראשונית

      אם אתם בוחרים לא לציין כתובות IP, אל תמלאו את השדה כדי לאפשר לשרת ה-proxy באינטרנט לבחור כתובת IP בשבילכם.

  3. יוצרים את מופע Secure Web Proxy באמצעות הפקודה gcloud network-services gateways import:

    gcloud network-services gateways import GATEWAY_NAME \
        --source=gateway.yaml \
        --location=REGION
    

בדיקת הקישוריות

כדי לבדוק את הקישוריות, משתמשים בפקודה curl מכל מכונה וירטואלית (VM) ברשת הענן הווירטואלי הפרטי (VPC):

  curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure
  

אם הכול פועל בצורה תקינה, מופע Secure Web Proxy מחזיר קוד סטטוס 403 Forbidden. השגיאה הזו מאשרת את הפרטים הבאים:

  • הפריסה של מופע Secure Web Proxy הושלמה בהצלחה והוא מקבל תנועה באופן פעיל.

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

יצירה וצירוף של תגי מנהל המשאבים

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

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

    1. יוצרים את מפתח התג (access-level) באמצעות הפקודה gcloud resource-manager tags keys create עם המטרה GCE_FIREWALL.

    2. מאחזרים את מזהה מפתח התג מהפלט של פקודת היצירה או באמצעות הפקודה gcloud resource-manager tags keys list. המזהה הזה נדרש כדי לקשר ערכי תגים למפתח התג הספציפי הזה.

    3. יוצרים את ערך התג (restricted) באמצעות הפקודה gcloud resource-manager tags values create ומציינים את מזהה מפתח התג כרכיב ההורה.

    # Create the tag key
    # The output provides a unique ID, such as "tagKeys/1234567890"
    
    gcloud resource-manager tags keys create "access-level" \
        --parent="organizations/1234567890" \
        --purpose="GCE_FIREWALL" \
        --purpose-values="execution_env=ANS"
    
    # Create the tag value and connect it to the key
    # The "--parent" flag identifies to which key this value belongs
    
    gcloud resource-manager tags values create "restricted" \
        --parent="tagKeys/1234567890"
    
  2. איך מוסיפים תגים למכונות וירטואליות

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

    דוגמה: נניח שיש לכם מכונת VM בשם internal-tool. אפשר לצרף את ערך התג restricted אל internal-tool באמצעות הפקודה gcloud resource-manager tags bindings create. הקצאת התג הזה מאפשרת לשרת ה-proxy לזהות את התנועה שמגיעה ממופע של מכונת VM‏ internal-tool.

    # Attach the "restricted" tag to a specific VM instance
    
    
    gcloud resource-manager tags bindings create \
        --parent="//[compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool](https://compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/internal-tool)" \
        --tag-value="tagValues/987654321"
    

יצירת כלל של Secure Web Proxy

המסוף

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

    למדיניות SWP

  2. לוחצים על שם המדיניות, למשל myswppolicy.

  3. לוחצים על הוספת כלל.

  4. לכל כלל, מבצעים את הפעולות הבאות:

    1. בשדה עדיפות, מזינים מספר שמשקף את סדר הבדיקה של הכלל. הכללים מוערכים מהעדיפות הגבוהה ביותר לנמוכה ביותר, כאשר 0 היא העדיפות הגבוהה ביותר.

    2. בשדה Name, מזינים שם לכלל.

    3. בשדה Description (תיאור), מזינים תיאור לכלל.

    4. בקטע פעולה, בוחרים באחת מהאפשרויות הבאות:

      • אישור: כדי לאשר בקשות חיבור שתואמות לכלל.
      • ‫Deny: כדי לדחות בקשות לחיבור שתואמות לכלל.
    5. בשדה סטטוס, בוחרים אחת מהאפשרויות הבאות לאכיפת הכלל:

      • מופעל: כדי לאכוף את הכלל במופע Secure Web Proxy.
      • מושבתת: כדי לא לאכוף את הכלל במופע של Secure Web Proxy.
    6. בקטע Session match, מציינים את המזהה הייחודי של התג שיצרתם בקטע הקודם. לדוגמה:

      sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"
      

      מידע נוסף על התחביר של SessionMatcher זמין במאמר הפניה לשפת ההתאמה של CEL.

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

    8. לוחצים על הוספת כלל.

Cloud Shell

  1. משתמשים בכלי לעריכת טקסט כדי ליצור את הקובץ rule.yaml.

  2. כדי לאפשר גישה לכתובת URL מהתג הנדרש, מוסיפים את הקוד הבא לקובץ rule.yaml:

    name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME
    description: RULE_DESCRIPTION
    enabled: true
    priority: RULE_PRIORITY
    sessionMatcher: CEL_EXPRESSION
    basicProfile: ALLOW
    

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

    • ‫RULE_NAME: השם של הכלל
    • ‫RULE_DESCRIPTION: תיאור הכלל
    • ‫RULE_PRIORITY: העדיפות של הכלל הזה. מספר נמוך יותר מייצג עדיפות גבוהה יותר
    • ‫CEL_EXPRESSION: ביטוי של Common Expression Language ‏ (CEL). מידע נוסף זמין במאמר בנושא הפניה לשפת ההתאמה של CEL.

    לדוגמה, כדי לאפשר גישה ל-example.com מהתג הנדרש, מוסיפים את השורה sessionMatcher לקובץ ה-YAML:

    sessionMatcher: "source.matchTag('TAG_VALUE') && host() == 'example.com'"
    

    מחליפים את TAG_VALUE בתג שרוצים לאפשר. חשוב לוודא שהתג כתוב בפורמט של מזהה משאב מספרי, למשל tagValues/567890123456.

  3. מייבאים את הכללים שיצרתם באמצעות הפקודה gcloud network-security gateway-security-policies rules import:

    gcloud network-security gateway-security-policies rules import RULE_NAME \
        --source=RULE_FILE.yaml \
        --location=REGION \
        --gateway-security-policy=POLICY_NAME
    

בדיקת הגדרת המדיניות

אפשר לבדוק שוב את הקישוריות כדי לוודא שמדיניות Secure Web Proxy, שמסתמכת על תגי מנהל המשאבים לצורך זיהוי, פועלת כמצופה.

כדי לבדוק את הקישוריות, משתמשים בפקודה curl מכל מכונה וירטואלית שמשויכת לתג TAG_VALUE המתאים.

curl -x https://IPv4_ADDRESS:443 http://example.com
--proxy-insecure

מחליפים את IPv4_ADDRESS בכתובת ה-IPv4 של מופע Secure Web Proxy.

אם הכול פועל כמו שצריך, תקבלו קוד סטטוס 200 OK או 403 Forbidden. התשובות האלה מאשרות את התוצאות העיקריות הבאות:

  • הצלחה על סמך תגים: קוד סטטוס 200 OK מאשר שתעבורת הנתונים ממכונה וירטואלית עם תג מנהל המשאבים מתאים שצורף אליה תואמת לכלל המדיניות ומורשית לעבור דרך שרת ה-proxy. ההתאמה המאומתת הזו מובילה לחיבור מוצלח.

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

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