יצירת קטגוריה עם כללים לסינון לפי כתובת IP

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

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

התפקידים הנדרשים

כדי לקבל את ההרשאות הנדרשות ליצירת קטגוריה עם כללי סינון לפי כתובת IP, צריך לבקש מהאדמין להקצות לכם את התפקיד 'אדמין לניהול אחסון' (roles/storage.admin) בקטגוריה. התפקיד הזה מכיל את ההרשאות שנדרשות ליצירת קטגוריה עם כללי סינון לפי כתובת IP.

כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:

ההרשאות הנדרשות

  • storage.buckets.create
  • storage.buckets.setIpFilter

אפשר לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית. יכול להיות שאפשר לקבל את ההרשאות האלה גם עם תפקידים אחרים שהוגדרו מראש. במאמר תפקידי IAM ל-Cloud Storage מפורטים התפקידים השונים וההרשאות שמשויכות אליהם.

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

יצירת קטגוריה עם כללי סינון לפי כתובת IP

Google Cloud

gcloud

  1. מוודאים שמותקנת אצלכם גרסה 526.0.0 או גרסה מתקדמת יותר של Google Cloud CLI:

    gcloud version | head -n1
    
  2. אם מותקנת אצלכם גרסה קודמת של ה-CLI של gcloud, צריך לעדכן את הגרסה:

    gcloud components update --version=526.0.0
    
  3. יוצרים קובץ JSON שמגדיר את הכללים לבקשות נכנסות. במאמר הגדרות של סינון לפי כתובת IP של דלי אפשר למצוא דוגמאות ומידע על האופן שבו צריך לבנות את הכללים של סינון לפי כתובת IP של דלי.

    {
      "mode":"MODE",
      "publicNetworkSource":{
          "allowedIpCidrRanges":[
            "RANGE_CIDR",
            "..."
          ]
      },
      "vpcNetworkSources":[
          {
            "network":"projects/PROJECT_ID/global/networks/NETWORK_NAME",
            "allowedIpCidrRanges":[
                "RANGE_CIDR",
                "..."
            ]
          },
          "..."
      ],
      "allowCrossOrgVpcs":ALLOW_CROSS_ORG_VPCS,
      "allowAllServiceAgentAccess": ALLOW_ALL_SERVICE_AGENT_ACCESS
    }

    כאשר:

    • MODE הוא המצב של הגדרת סינון כתובות ה-IP של הקטגוריה. הערכים התקינים הם Enabled ו-Disabled. כשמגדירים את האפשרות Enabled, כללי סינון לפי כתובת IP חלים על קטגוריה. כל בקשה נכנסת לדלי נבדקת בהתאם לכללים האלה. אם מגדירים את האפשרות Disabled, כל הבקשות הנכנסות מקבלות הרשאה לגשת לקטגוריה.

    • RANGE_CIDR הוא טווח כתובות IPv4 או IPv6 של רשת ציבורית שיש לה הרשאה לגשת לקטגוריה. אפשר להזין טווח כתובות אחד או יותר כרשימה.

    • PROJECT_ID הוא מזהה הפרויקט שבו קיימת רשת הענן הווירטואלי הפרטי (VPC). כדי להגדיר כמה רשתות VPC, צריך לציין את הפרויקט שבו נמצאת כל רשת.

    • NETWORK_NAME הוא השם של רשת ה-VPC שמורשית לגשת לקטגוריה. כדי להגדיר כמה רשתות VPC, צריך לציין שם לכל רשת.

    • ALLOW_CROSS_ORG_VPCS הוא ערך בוליאני שמציין אם לאפשר לרשתות VPC שמוגדרות ב-vpcNetworkSources להגיע מארגון אחר. השדה הזה הוא אופציונלי. אם הערך מוגדר ל-true, הבקשה מאפשרת רשתות VPC חוצות ארגונים. אם הערך הוא false, הבקשה מגבילה את רשתות ה-VPC לאותו ארגון כמו הדלי. אם לא מציינים ערך, ערך ברירת המחדל הוא false. השדה הזה חל רק אם vpcNetworkSources לא ריק.

    • ALLOW_ALL_SERVICE_AGENT_ACCESS הוא ערך בוליאני שמציין אם לאפשר לסוכני שירות לגשת לדלי, ללא קשר להגדרת מסנן ה-IP. אם הערך הוא true, שירותים אחרים יכולים להשתמש בסוכני שירות כדי לגשת לדלי בלי אימות מבוסס-IP. Google Cloud

  4. כדי ליצור קטגוריה עם כללי סינון לפי כתובת IP, מריצים את הפקודה gcloud storage buckets create בסביבת הפיתוח:

    gcloud storage buckets create gs://BUCKET_NAME --ip-filter-file=IP_FILTER_CONFIG_FILE

    כאשר:

    • BUCKET_NAME הוא השם שרוצים לתת לקטגוריה, בכפוף לדרישות למתן שמות. לדוגמה, my-bucket.
    • IP_FILTER_CONFIG_FILE הוא קובץ ה-JSON שמגדיר את הכללים לבקשות נכנסות.

API ל-JSON

  1. התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת Authorization.

  2. יוצרים קובץ JSON עם ההגדרות של הקטגוריה. הקובץ חייב לכלול את שדות ההגדרות name ו-ipFilter של הקטגוריה. דוגמאות ומידע על האופן שבו צריך לבנות את כללי הסינון של כתובות ה-IP של הדלי זמינים במאמר הגדרות של סינון כתובות IP בדלי.

    {
      "name": "BUCKET_NAME",
      "ipFilter": {
        "mode": "MODE",
        "publicNetworkSource":
          {
            "allowedIpCidrRanges":
              [RANGE_CIDR,
                ...
              ]
          },
        "vpcNetworkSources":
          [
            {"network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
            "allowedIpCidrRanges":
              [RANGE_CIDR,
              ...
              ]
            },
          ...
          ],
        "allowCrossOrgVpcs": ALLOW_CROSS_ORG_VPCS,
        "allowAllServiceAgentAccess": ALLOW_ALL_SERVICE_AGENT_ACCESS
        },
    }

    כאשר:

    • MODE הוא המצב של הגדרת מסנן ה-IP. הערכים התקינים הם: Enabled ו-Disabled. כשמגדירים את האפשרות Enabled, כללי סינון לפי כתובת IP מוחלים על קטגוריה, וכל הבקשות הנכנסות לקטגוריה נבדקות בהתאם לכללים האלה. אם ההגדרה היא Disabled, כל הבקשות הנכנסות יכולות לגשת לקטגוריה ולנתונים שלה בלי שתיערך הערכה, אם יש לכם את הרשאות ה-IAM הנדרשות.

    • RANGE_CIDR הוא טווח כתובות IPv4 או IPv6 של רשת ציבורית שיש לה הרשאה לגשת לקטגוריה. אפשר להזין טווח כתובות אחד או יותר כרשימה.

    • PROJECT_ID הוא מזהה הפרויקט שבו קיימת רשת ה-VPC. כדי להגדיר כמה רשתות VPC, צריך לציין את הפרויקט שבו כל רשת ממוקמת.

    • NETWORK_NAME הוא השם של רשת ה-VPC שמורשית לגשת לקטגוריה. כדי להגדיר כמה רשתות VPC, צריך לציין שם לכל רשת.

    • ALLOW_ALL_SERVICE_AGENT_ACCESS הוא ערך בוליאני שמציין אם לאפשר לסוכני שירות לגשת לדלי, ללא קשר להגדרת מסנן ה-IP. אם הערך הוא true, שירותים אחרים יכולים להשתמש בסוכני שירות כדי לגשת לדלי בלי אימות מבוסס-IP. Google Cloud

    • ALLOW_CROSS_ORG_VPCS הוא ערך בוליאני שמציין אם לאפשר לרשתות VPC שמוגדרות ב-vpcNetworkSources להגיע מארגון אחר. השדה הזה הוא אופציונלי. אם הערך הוא true, הבקשה מאפשרת רשתות VPC חוצות ארגונים. אם הערך הוא false, הבקשה מגבילה את רשתות ה-VPC לאותו ארגון כמו הקטגוריה. אם לא מציינים ערך, ערך ברירת המחדל הוא false. השדה הזה חל רק אם vpcNetworkSources לא ריק.

  3. משתמשים ב-cURL כדי לשלוח קריאה ל-API בפורמט JSON באמצעות בקשת POST bucket:

    curl -X POST --data-binary @JSON_FILE_NAME \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     "https://storage.googleapis.com/storage/v1/b?project=PROJECT_ID"

    כאשר:

    • JSON_FILE_NAME הוא השם של קובץ ה-JSON שמכיל את ההגדרות של הקטגוריה.
    • PROJECT_ID הוא מזהה הפרויקט שאליו הקטגוריה משויכת. לדוגמה, my-project.

הגדרות סינון לפי כתובת IP של דלי

בקטע הזה מובאות דוגמאות להגדרות של קובץ JSON לסינון כתובות IP של קטגוריות, כדי לשלוט בגישה לקטגוריות של Cloud Storage. אפשר להעניק גישה לבקשות נכנסות באמצעות אחד מהדוגמאות הבאות:

  • כל כתובת IP ציבורית (IPv4 או IPv6):

    ההגדרה הבאה מעניקה גישה לכל כתובת ציבורית מסוג IPv4 או IPv6, אבל חוסמת תעבורה שמקורה בכל VPC:

    gcloud

      {
        "mode": "Enabled",
        "publicNetworkSource":
        {
          "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
        },
        "allowAllServiceAgentAccess": false
      }
      

    API ל-JSON

      {
      "name": "my-bucket",
      "ipFilter":
      {
        "mode": "Enabled",
        "publicNetworkSource":
        {
          "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
        },
        "allowAllServiceAgentAccess": false
      }
      }
      
  • טווחי כתובות IP ציבוריות ספציפיים:

    • הגדרת הגישה בדוגמה הבאה מאפשרת גישה לטווח כתובות IPv4 ציבוריות 192.0.2.0/24, אבל חוסמת תעבורה שמקורה בכל VPC:

      gcloud

          {
            "mode": "Enabled",
            "publicNetworkSource":
            {
              "allowedIpCidrRanges": ["192.0.2.0/24"]
            },
            "allowAllServiceAgentAccess": false
          }
        

    API ל-JSON

      {
      "name": "my-bucket",
      "ipFilter":
        {
          "mode": "Enabled",
          "publicNetworkSource":
          {
            "allowedIpCidrRanges": ["192.0.2.0/24"]
          },
          "allowAllServiceAgentAccess": false
        }
      }
    • הגדרת הדוגמה הבאה מעניקה גישה לטווח כתובות ה-IPv6 הציבוריות 2001:db8::/32, אבל חוסמת תעבורה שמקורה בכל VPC:

      gcloud

          {
            "mode": "Enabled",
            "publicNetworkSource":
            {
              "allowedIpCidrRanges": ["2001:db8::/32"]
            },
            "allowAllServiceAgentAccess": false
          }
        

    API ל-JSON

      {
        "name": "my-bucket",
        "ipFilter":
          {
            "mode": "Enabled",
            "publicNetworkSource":
            {
              "allowedIpCidrRanges": ["2001:db8::/32"]
            },
            "allowAllServiceAgentAccess": false
          }
      }
  • רשתות VPC: באמצעות ההגדרות הבאות, אתם יכולים להעניק גישה למשאבים ברשת ה-VPC. אתם יכולים להעניק גישה לכל כתובות ה-IP ב-VPC או לטווחים ספציפיים של כתובות IP ב-VPC. בכל אחת מהדוגמאות האלה, PROJECT_ID הוא מזהה הפרויקט שבו קיימת רשת ה-VPC, ו-NETWORK_NAME הוא השם של רשת ה-VPC שיש לה גישה לקטגוריה.

    • הגדרת הגישה בדוגמה הבאה מאפשרת בקשה מכל כתובת IPv4 או IPv6 שמגיעה מ-VPC ספציפי, וחוסמת תעבורה שמקורה בכתובת IP ציבורית:

      gcloud

        {
          "mode": "Enabled",
          "vpcNetworkSources":
            [
              {
                "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
              },
            ],
          "allowAllServiceAgentAccess": false
        }

    API ל-JSON

      {
        "name": "my-bucket",
        "ipFilter":
          {
            "mode": "Enabled",
            "vpcNetworkSources":
              [
                {
                  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                  "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"]
                },
              ],
            "allowAllServiceAgentAccess": false
          }
      }
    • הגדרת הדוגמה הבאה מעניקה גישה רק לבקשה מרשת VPC שמשויכת למכונה וירטואלית עם כתובת IPv4 חיצונית כ-192.0.2.0/24 וחוסמת תעבורה שמקורה בכתובת IP ציבורית:

      gcloud

          {
            "mode": "Enabled",
            "vpcNetworkSources":
              [
                {
                  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                  "allowedIpCidrRanges": ["192.0.2.0/24"]
                },
              ],
            "allowAllServiceAgentAccess": false
          }
        

    API ל-JSON

      {
        "name": "my-bucket",
        "ipFilter":
        {
          "mode": "Enabled",
          "vpcNetworkSources":
            [
              {
                "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                "allowedIpCidrRanges": ["192.0.2.0/24"]
              },
            ],
          "allowAllServiceAgentAccess": false
        }
      }
    • הגדרת הדוגמה הבאה מעניקה גישה רק לבקשה שמגיעה מ-VPC עם טווח של רשת משנה פנימית של IPv4 שמשויכת למכונה וירטואלית ללא כתובת IP חיצונית, וחוסמת תעבורת נתונים שמקורה בכתובת IP ציבורית:

      gcloud

          {
            "mode": "Enabled",
            "vpcNetworkSources":
              [
                {
                  "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                  "allowedIpCidrRanges": ["IP_ADDRESS"]
                },
              ],
            "allowAllServiceAgentAccess": false
          }
          

      כאשר:

      IP_ADDRESS הוא טווח של רשת משנה פנימית מסוג IPv4.

    API ל-JSON

      {
      "name": "my-bucket",
      "ipFilter":
        {
          "mode": "Enabled",
          "vpcNetworkSources":
            [
              {
              "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
              "allowedIpCidrRanges": ["IP_ADDRESS"]
              },
            ],
          "allowAllServiceAgentAccess": false
        }
      }
      

    כאשר:

    IP_ADDRESS הוא טווח של רשת משנה פנימית מסוג IPv4.

    • הגדרת הדוגמה הבאה מעניקה גישה רק לבקשה שמגיעה מ-VPC עם טווח של רשת משנה כפולה של IPv4 ו-IPv6 שמשויך למכונה וירטואלית עם טווח כתובות IPv6 חיצוניות כ-2001:db8::/32, וחוסמת תעבורה שמקורה בכתובת IP ציבורית:

      gcloud

        {
          "mode": "Enabled",
          "vpcNetworkSources":
          [
            {
              "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
              "allowedIpCidrRanges": ["2001:db8::/32"]
            },
          ],
          "allowAllServiceAgentAccess": false
          }
        

    API ל-JSON

      {
      "name": "my-bucket",
      "ipFilter":
        {
          "mode": "Enabled",
          "vpcNetworkSources":
            [
              {
                "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
                "allowedIpCidrRanges": ["2001:db8::/32"]
              },
            ],
          "allowAllServiceAgentAccess": false
          }
      }

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

נסו בעצמכם

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

להתנסות ב-Cloud Storage בחינם