בדף הזה מוסבר איך ליצור מאגר עם כללי סינון לפי כתובת IP. יצירת קטגוריה עם סינון לפי כתובת IP מאפשרת לשלוט בגישה לקטגוריות על ידי בדיקת בקשות נכנסות מול כתובות ה-IP שצוינו בכללי הסינון לפי כתובת IP של הקטגוריה. לפרטים נוספים, אפשר לעיין במאמר בנושא סינון כתובות IP של קטגוריות.
מידע על יצירה או עדכון של כללי סינון לפי כתובת IP בדלי קיים זמין במאמר עדכון כללי סינון לפי כתובת IP בדלי.
התפקידים הנדרשים
כדי לקבל את ההרשאות הנדרשות ליצירת קטגוריה עם כללי סינון לפי כתובת IP, צריך לבקש מהאדמין להקצות לכם את התפקיד 'אדמין לניהול אחסון' (roles/storage.admin) בקטגוריה. התפקיד הזה מכיל את ההרשאות שנדרשות ליצירת קטגוריה עם כללי סינון לפי כתובת IP.
כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
storage.buckets.createstorage.buckets.setIpFilter
אפשר לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית. יכול להיות שאפשר לקבל את ההרשאות האלה גם עם תפקידים אחרים שהוגדרו מראש. במאמר תפקידי IAM ל-Cloud Storage מפורטים התפקידים השונים וההרשאות שמשויכות אליהם.
במאמר הגדרה וניהול של מדיניות IAM בקטגוריות מוסבר איך מקצים תפקידים בקטגוריות.
יצירת קטגוריה עם כללי סינון לפי כתובת IP
Cloud de Confiancegcloud
מוודאים שמותקנת אצלכם גרסה 526.0.0 או גרסה מתקדמת יותר של Google Cloud CLI:
gcloud version | head -n1אם מותקנת אצלכם גרסה קודמת של ה-CLI של gcloud, צריך לעדכן את הגרסה:
gcloud components update --version=526.0.0יוצרים קובץ JSON שמגדיר את הכללים לבקשות נכנסות. במאמר הגדרות של סינון לפי כתובת IP ברמת ה-bucket יש דוגמאות ומידע על האופן שבו צריך לבנות את הכללים של סינון לפי כתובת IP ברמת ה-bucket.
{ "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, כל הבקשות הנכנסות מקבלות גישה לקטגוריית האחסון.הערה: כדי להפעיל בבטחה כללי סינון לפי כתובת IP של קטגוריה, כדאי להתחיל בהגדרת הכללים עם השדה modeשמוגדר לערךDisabled, כדי שתוכלו להוסיף ולשנות כללים בלי לחסום בקשות באופן מיידי. אחרי שמוודאים שהכללים מוגדרים בצורה נכונה, מעדכנים את השדהmodeל-Enabledכדי להפעיל סינון של כתובות IP של דליים.
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. Cloud de Confiance
כדי ליצור קטגוריה עם כללי סינון לפי כתובת 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
התקנה והפעלה של ה-CLI של gcloud, שמאפשרות ליצור אסימון גישה לכותרת
Authorization.יוצרים קובץ 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 הנדרשות.הערה: כדי להפעיל בבטחה כללי סינון של כתובות IP של דליים, צריך להתחיל בהגדרת הכללים עם השדה modeשמוגדר לערךDisabled, כדי שתוכלו להוסיף ולשנות כללים בלי לחסום מיד בקשות. אחרי שמוודאים שהכללים מוגדרים בצורה נכונה, מעדכנים את השדהmodeל-Enabledכדי להפעיל סינון של כתובות IP בדלי.
RANGE_CIDRהוא טווח כתובות IPv4 או IPv6 של רשת ציבורית שיש לה הרשאה לגשת לקטגוריה. אפשר להזין טווח כתובות אחד או יותר כרשימה.
PROJECT_IDהוא מזהה הפרויקט שבו קיימת רשת ה-VPC. כדי להגדיר כמה רשתות VPC, צריך לציין את הפרויקט שבו נמצאת כל רשת.
NETWORK_NAMEהוא השם של רשת ה-VPC שמורשית לגשת לקטגוריה. כדי להגדיר כמה רשתות VPC, צריך לציין שם לכל רשת.
ALLOW_ALL_SERVICE_AGENT_ACCESSהוא ערך בוליאני שמציין אם לאפשר לסוכני שירות לגשת לדלי, ללא קשר להגדרת מסנן ה-IP. אם הערך הואtrue, שירותים אחרים יכולים להשתמש בסוכני שירות כדי לגשת לדלי בלי אימות מבוסס-IP. Cloud de Confiance
ALLOW_CROSS_ORG_VPCSהוא ערך בוליאני שמציין אם לאפשר לרשתות VPC שמוגדרות ב-vpcNetworkSourcesלהגיע מארגון אחר. השדה הזה הוא אופציונלי. אם הערך הואtrue, הבקשה מאפשרת רשתות VPC חוצות-ארגונים. אם הערך הואfalse, הבקשה מגבילה את רשתות ה-VPC לאותו ארגון כמו הקטגוריה. אם לא מציינים ערך, ערך ברירת המחדל הואfalse. השדה הזה רלוונטי רק אםvpcNetworkSourcesלא ריק.
משתמשים ב-
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.s3nsapis.fr/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 } }