מאפיינים נתמכים

כשמגדירים תוספים באמצעות פלאגינים או קריאות ל-ext-proc-based backend services, אפשר לציין את מאפייני הבקשה והחיבור להעברה לשירותים האלה. בדף הזה מפורטים המאפיינים הנתמכים ומוסבר אילו מאפיינים זמינים לכל סוג של תוסף.

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

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

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

אפשר לציין מאפיינים עם forwardAttributes בהרשאות, בתוספים של קצה, מסלול ותנועה. אפשר להטמיע את forwardAttributes באמצעות תוספים של Wasm או באמצעות callouts (עם הפרוטוקול ext_proc) במוצרים הבאים:

  • מאזני עומסים חיצוניים אזוריים של אפליקציות (ALB)
  • מאזני עומסים פנימיים אזוריים של אפליקציות (ALB)
  • מאזני עומסים גלובליים חיצוניים של אפליקציות (ALB)
  • מאזני עומסים פנימיים של אפליקציות (ALB) חוצי-אזורים

בטבלה הבאה מפורטים המאפיינים הנתמכים וההרחבות:

מאפיין תיאור תוספים
request.origin הערך של כותרת המקור בבקשה לתרחישי שימוש של שיתוף משאבים בין מקורות (CORS). תנועה
request.method ה-method של בקשת ה-HTTP, כמו GET או POST. הרשאה, קצה, מסלול, תנועה
request.mcp_method ה-method של בקשת ה-HTTP, כמו GET או POST. הרשאה
request.host נוחות ששווה ל-request.headers['host']. הרשאה, קצה, מסלול, תנועה
request.path נתיב כתובת ה-URL של ה-HTTP שהתבקש. הרשאה, קצה, מסלול, תנועה
request.query השאילתה של כתובת ה-URL מסוג HTTP, בפורמט name1=value&name2=value2, כפי שהיא מופיעה בשורה הראשונה של בקשת ה-HTTP. לא מתבצע פענוח. הרשאה, קצה, מסלול, תנועה
request.scheme סכימת כתובות ה-URL מסוג HTTP, כמו HTTP או HTTPS. הערכים של המאפיין הזה הם באותיות קטנות. הרשאה, קצה, מסלול, תנועה
request.backend_service_name שירות הקצה העורפי שאליו מועברת הבקשה. הרשאה, תנועה
request.backend_service_project_number כשמשתמשים ב-VPC משותף, מספר הפרויקט של שירות ה-Backend שאליו מועברת הבקשה. הרשאה, תנועה
request.mcp_param הפרמטר MCP. הרשאה
request.user_agent_family סוג הדפדפן של הלקוח, שנגזר מערכי הכותרת User-Agent. הערכים האלה מתייחסים למחרוזת הטקסט הגולמי שמועברת על ידי לקוחות HTTP נכנסים (כמו דפדפני אינטרנט, אפליקציות לנייד או כלים אוטומטיים) בכותרת בקשת ה-HTTP User-Agent הרגילה. קצה הרשת, תנועה (רק למאזני עומסים גלובליים חיצוניים של אפליקציות ולמאזני עומסים חיצוניים אזוריים של אפליקציות)
request.device_request_type סוג המכשיר של הלקוח. הערכים האפשריים של המאפיין הזה הם APPLE,‏ APPLEWEBKIT,‏ BLACKBERRY,‏ DOCOMO,‏ GECKO,‏ GOOGLE,‏ KHTML,‏ KOREAN,‏ MICROSOFT,‏ MSIE,‏ NETFRONT,‏ NOKIA,‏ OBIGO,‏ OPERA,‏ OPENWAVE,‏ OTHER,‏ POLARIS,‏ SEMC,‏ SMIT,‏ TELECA או USER_DEFINED. קצה הרשת, תנועה (רק למאזני עומסים גלובליים חיצוניים של אפליקציות ולמאזני עומסים חיצוניים אזוריים של אפליקציות)
response.cdn_cache_id קוד המיקום והמזהה של מופע הזיכרון שמשמשים להצגת הבקשה. זהו אותו הערך שמופיע בשדה jsonPayload.cacheId ביומני הבקשות של Cloud CDN. תנועה (רק למאזני עומסים גלובליים חיצוניים של אפליקציות)
response.cdn_cache_status הסטטוס הנוכחי של מופע המטמון שמשמש להצגת הבקשה. הערכים האפשריים של המאפיין הזה הם hit,‏ miss,‏ revalidated,‏ stale,‏ uncacheable או disabled. תנועה (רק למאזני עומסים גלובליים חיצוניים של אפליקציות)
source.ip כתובת ה-IP של הלקוח. קצה, מסלול, תנועה
source.port יציאת המקור של הלקוח. קצה, מסלול, תנועה
source.client_region המדינה או האזור שמשויכים לכתובת ה-IP של הלקוח. הערך הוא קוד אזור Unicode CLDR, כמו US או FR. ברוב המדינות, הקודים האלה תואמים ישירות לקודי ISO-3166-2. קצה הרשת, תנועה (רק למאזני עומסים גלובליים חיצוניים של אפליקציות ולמאזני עומסים חיצוניים אזוריים של אפליקציות)
source.client_region_subdivision חלוקת המשנה (לדוגמה, מחוז או מדינה) של המדינה שמשויכת לכתובת ה-IP של הלקוח. זהו מזהה חלוקה משנית של Unicode CLDR, כמו USCA או CAON. קודי ה-Unicode האלה נגזרים מחלוקות המשנה שמוגדרות בתקן ISO-3166-2. קצה הרשת, תנועה (רק למאזני עומסים גלובליים חיצוניים של אפליקציות)
source.client_city שם העיר שממנה נשלחה הבקשה. לדוגמה, Mountain View עבור מאונטיין ויו, קליפורניה. אין רשימה קנונית של ערכים תקינים למשתנה הזה. שמות של ערים יכולים להכיל אותיות, מספרים, רווחים ותווים מסוג US-ASCII הבאים: !#$%&'*+-.^_`|~. קצה הרשת, תנועה (רק למאזני עומסים גלובליים חיצוניים של אפליקציות)
source.client_city_lat_long קו הרוחב וקו האורך של העיר שממנה הגיעה הבקשה – לדוגמה, 37.386051,-122.083851 עבור בקשה ממאונטיין ויו. קצה הרשת, תנועה (רק למאזני עומסים גלובליים חיצוניים של אפליקציות)
connection.client_encrypted הערך הוא true אם החיבור בין הלקוח לבין מאזן העומסים מוצפן (באמצעות HTTPS,‏ HTTP/2 או HTTP/3). אחרת, הערך הוא false. תנועה
connection.client_rtt_msec זמן השידור המשוער של הלוך ושוב בין מאזן העומסים לבין לקוח HTTP(S), באלפיות השנייה. זהו פרמטר של זמן הלוך ושוב מוחלק (SRTT) (כפי שמוגדר ב-RFC 2988) שנמדד על ידי מחסנית ה-TCP של מאזן העומסים. תנועה (רק למאזני עומסים גלובליים חיצוניים של אפליקציות)
connection.client_protocol פרוטוקול ה-HTTP שמשמש לתקשורת בין הלקוח לבין מאזן העומסים. אפשר להשתמש באחד מהערכים הבאים: HTTP/1.0,‏ HTTP/1.1,‏ HTTP/2 או HTTP/3. תנועה
connection.server_ip_address כתובת ה-IP של מאזן העומסים שאליו הלקוח מתחבר. הערך הזה יכול להיות שימושי כשכמה מאזני עומסים משתפים קצה עורפי משותף. זהה לכתובת ה-IP האחרונה בכותרת X-Forwarded-For. תנועה
connection.server_port מספר יציאת היעד שהלקוח מתחבר אליה. תנועה
connection.sni האינדיקציה של שם השרת (כפי שמוגדר ב-RFC 6066), אם הלקוח מספק אותה במהלך לחיצת היד של TLS או QUIC. שם המארח מומר לאותיות קטנות, ומוסרת כל נקודה בסוף. הרשאה, קצה, תנועה
connection.tls_version גרסת ה-TLS שנקבעה במשא ומתן בין הלקוח לבין איזון העומסים במהלך לחיצת היד של SSL. הערכים האפשריים כוללים: TLSv1, ‏ TLSv1.1, ‏ TLSv1.2, ו-TLSv1.3. אם הלקוח מתחבר באמצעות QUIC במקום TLS, הערך הוא QUIC. edge, traffic
connection.sha256_peer_certificate_digest גיבוב SHA256 עם קידוד הקסדצימלי של אישור העמית בחיבור ה-TLS במורד הזרם, אם קיים. הרשאה, קצה, תנועה
connection.tls_cipher_suite סט האלגוריתמים להצפנה שנקבע במהלך לחיצת היד בפרוטוקול TLS. הערך הוא ארבע ספרות הקסדצימליות שמוגדרות על ידי מאגר הנתונים של IANA TLS Cipher Suite – לדוגמה, 009C עבור TLS_RSA_WITH_AES_128_GCM_SHA256. הערך הזה ריק בחיבורי לקוח ב-QUIC ובחיבורים לא מוצפנים. תנועה
connection.tls_ja3_fingerprint טביעת האצבע של JA3 TLS/SSL אם הלקוח מתחבר באמצעות HTTPS,‏ HTTP/2 או HTTP/3. תנועה
connection.tls_ja4_fingerprint טביעת האצבע של JA4 TLS/SSL אם הלקוח מתחבר באמצעות HTTPS, HTTP/2 או HTTP/3. קצה, תנועה
connection.client_cert_present הערך הוא true אם הלקוח סיפק אישור במהלך לחיצת היד של TLS, אחרת הערך הוא false. הרשאה, תנועה
connection.client_cert_chain_verified הערך הוא true אם שרשרת אישורי הלקוח אומתה מול TrustStore שהוגדר, אחרת הערך הוא false. הרשאה, תנועה
connection.client_cert_error מחרוזות מוגדרות מראש שמייצגות תנאי שגיאה. מידע נוסף על מחרוזות השגיאה זמין במאמר בנושא מצבי אימות של לקוח mTLS. הרשאה, תנועה
connection.client_cert_serial_number המספר הסידורי של אישור הלקוח. אם המספר הסידורי ארוך מ-50 בייט, הערך של client_cert_error הוא client_cert_serial_number_exceeded_size_limit, והמספר הסידורי הוא מחרוזת ריקה. הרשאה, תנועה
connection.client_cert_spiffe_id מזהה SPIFFE משדה השם החלופי לנושא (SAN). אם הערך לא תקין או שהוא גדול מ-2,048 בייט, מזהה ה-SPIFFE מוגדר כמחרוזת ריקה. אם מזהה SPIFFE ארוך מ-2048 בייט, הערך של client_cert_error הוא client_cert_spiffe_id_exceeded_size_limit. הרשאה, תנועה
connection.client_cert_uri_sans רשימה מופרדת בפסיקים של תוספי SAN בקידוד Base64 מסוג URI. תוספי ה-SAN מחולצים מתוך אישור הלקוח. מזהה ה-SPIFFE לא נכלל בשדה client_cert_uri_sans. אם הערך של client_cert_uri_sans ארוך מ-512 בייט, הערך של client_cert_error מוגדר כ-client_cert_uri_sans_exceeded_size_limit, והרשימה המופרדת בפסיקים מוגדרת כמחרוזת ריקה. הרשאה, תנועה
connection.client_cert_dnsname_sans רשימה מופרדת בפסיקים של תוספי SAN בקידוד Base64 מסוג DNSName. תוספי ה-SAN מחולצים מאישור הלקוח. אם המחרוזת client_cert_dnsname_sans ארוכה מ-512 בייט, הערך של client_cert_error מוגדר ל-client_cert_dnsname_sans_exceeded_size_limit, והרשימה המופרדת בפסיקים מוגדרת למחרוזת ריקה. הרשאה, תנועה
connection.client_cert_valid_not_before חותמת הזמן (בפורמט מחרוזת תאריך RFC 3339) שלפניו אישור הלקוח לא תקף – לדוגמה, 2022-07-01T18:05:09+00:00. הרשאה, תנועה
connection.client_cert_valid_not_after חותמת הזמן (בפורמט מחרוזת התאריך RFC 3339) שאחריה אישור הלקוח לא תקף – לדוגמה, 2022-07-01T18:05:09+00:00. הרשאה, תנועה
connection.client_cert_issuer_dn קידוד DER בקידוד Base64 של השדה המלא Issuer מהאישור. אם האורך של client_cert_issuer_dn גדול מ-512 בייטים, המחרוזת client_cert_issuer_dn_exceeded_size_limit מתווספת ל-client_cert_error, ו-client_cert_issuer_dn מוגדר כמחרוזת ריקה. הרשאה, תנועה
connection.client_cert_subject_dn קידוד DER בקידוד Base64 של השדה המלא Subject מהאישור. אם האורך של client_cert_subject_dn גדול מ-512 בייטים, המחרוזת client_cert_subject_dn_exceeded_size_limit מתווספת ל-client_cert_error, ו-client_cert_subject_dn מוגדר כמחרוזת ריקה. הרשאה, תנועה
connection.client_cert_leaf אישור העלה של הלקוח לחיבור mTLS שנוצר, שבו האישור עבר אימות. הקידוד של האישור תואם לתקן RFC 9440. כלומר, אישור DER הבינארי מקודד ב-Base64 ומוגבל באמצעות נקודתיים משני הצדדים. אם הערך של client_cert_leaf חורג מ-16 KB לאחר פענוח, המחרוזת client_cert_validated_leaf_exceeded_size_limit מוסיפה ל-client_cert_error והערך של client_cert_leaf מוגדר כמחרוזת ריקה. הרשאה, תנועה
connection.client_cert_chain רשימת האישורים המופרדת בפסיקים, בסדר TLS רגיל, של שרשרת אישורי הלקוח לחיבור mTLS שנוצר שבו אישור הלקוח עבר אימות, לא כולל אישור העלה. הקידוד של האישור תואם לתקן RFC 9440. אם הגודל המשולב של client_cert_leaf ושל client_cert_chain לפני קידוד Base64 חורג מ-16KB, המחרוזת client_cert_validated_chain_exceeded_size_limit מתווספת ל-client_cert_error, והערך של client_cert_chain מוגדר כמחרוזת ריקה. הרשאה, תנועה

מגבלות

  • זמינות המאפיינים: לא כל המאפיינים נתמכים בכל סוגי התוספים. מידע נוסף מופיע בטבלה שבדף הזה.

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

  • מגבלות גודל: אפשר להגדיר עד 16 מאפיינים לתוסף יחיד.

  • מאפייני mTLS: מאפייני אישור הלקוח (connection.client_cert_*) מאוכלסים בנתונים שמועברים לתוסף רק אם הפעלתם mTLS והלקוח מציג אישור.