הגבלת גרסאות TLS

בדף הזה נסביר איך למנוע גישה ל Cloud de Confiance by S3NS משאבים על ידי דחיית בקשות שנוצרו באמצעות Transport Layer Security ‏ (TLS) 1.0 או 1.1. אם רוצים גם למנוע את השימוש ב-TLS 1.2, צריך להשתמש במדיניות הגבלת הצפנה של TLS כדי לאפשר רק הצפנות של TLS 1.3. מידע נוסף מופיע במאמר בנושא הגבלת חבילות הצפנה של TLS.

סקירה כללית

Cloud de Confiance by S3NS תומך בכמה גרסאות של פרוטוקול TLS. כדי לעמוד בדרישות התאימות, יכול להיות שתרצו לדחות בקשות ללחיצת יד מלקוחות שמשתמשים בגרסאות קודמות של TLS. כדי לעשות את זה, אפשר להשתמש בgcp.restrictTLSVersion אילוץ של מדיניות הארגון.

אפשר להחיל את האילוץ gcp.restrictTLSVersion על ארגונים, תיקיות או פרויקטים בהיררכיית המשאבים. האילוץ משתמש ברשימת ישויות חסומות, שחוסמת ערכים מפורשים ומאפשרת את כל השאר. אם תנסו להשתמש ברשימת היתרים, תופיע שגיאה.

בגלל ההתנהגות של הערכת ההיררכיה של מדיניות הארגון, ההגבלה על גרסת TLS חלה על צומת המשאב שצוין ועל כל המשאבים שנמצאים מתחתיו בהיררכיית המשאבים. לדוגמה, אם דוחים את TLS גרסה 1.0 בארגון, היא נדחית גם בכל התיקיות והפרויקטים (צאצאים) שנובעים מהארגון הזה.

אפשר לעקוף את ההגבלה על גרסת ה-TLS שעברה בירושה על ידי עדכון מדיניות הארגון במשאב צאצא. לדוגמה, אם מדיניות הארגון שלכם דוחה TLS 1.0 ברמת הארגון, אתם יכולים להסיר את ההגבלה עבור תיקיית צאצא על ידי הגדרת מדיניות ארגונית נפרדת בתיקייה הזו. אם לתיקייה יש משאבים צאצאים, המדיניות של התיקייה תחול גם על כל משאב צאצא בגלל ירושת המדיניות.

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

  • כדי להגדיר, לשנות או למחוק מדיניות ארגונית, צריך קודם לקבל את התפקיד אדמין מדיניות ארגונית (roles/orgpolicy.policyAdmin) בניהול הזהויות והרשאות הגישה (IAM).

הגבלת גרסת TLS

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

המסוף

  1. פותחים את הדף מדיניות הארגון במסוף Cloud de Confiance .

    מעבר למדיניות הארגון

  2. בוחרים את הפרויקט בחלונית לבחירת פרויקט בחלק העליון של הדף.

  3. בכלי לבחירת פרויקטים, בוחרים את המשאב שרוצים להגדיר לו את מדיניות הארגון.

  4. בוחרים את האילוץ Restrict TLS Version (הגבלת גרסת TLS) מהרשימה בדף Organization policies (מדיניות הארגון).

  5. כדי לעדכן את מדיניות הארגון של המשאב הזה, לוחצים על עריכה.

  6. בדף עריכה, בוחרים באפשרות התאמה אישית.

  7. בקטע Policy enforcement (אכיפת מדיניות), בוחרים באחת מאפשרויות האכיפה:

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

    • כדי לשנות מדיניות שעוברת בירושה ממשאב ראשי, בוחרים באפשרות החלפה.

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

  9. בקטע ערכי מדיניות, ערך ברירת המחדל הוא דחיית הכל. במקום זאת, בוחרים באפשרות בהתאמה אישית.

  10. בקטע סוג המדיניות, בוחרים באפשרות דחייה.

  11. בקטע ערכים מותאמים אישית, מזינים את גרסת ה-TLS שרוצים לחסום. אלה ערכים חוקיים שניתן להגדיר בהתאמה אישית:

    • TLS_VERSION_1 ל-TLS 1.0
    • TLS_VERSION_1_1 ל-TLS 1.1

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

  12. כדי לסיים ולהחיל את מדיניות הארגון, לוחצים על שמירה.

gcloud

משתמשים בפקודה gcloud org-policies set-policy כדי להגדיר מדיניות ארגון במשאב:

gcloud org-policies set-policy POLICY_PATH

POLICY_PATH הוא הנתיב המלא לקובץ מדיניות הארגון, שאם משתמשים בפורמט YAML, הוא אמור להיראות כך:

name: RESOURCE_TYPE/RESOURCE_ID/policies/gcp.restrictTLSVersion
spec:
  rules:
  - values:
    deniedValues:
    - TLS_VERSION_1
    - TLS_VERSION_1_1

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

  • RESOURCE_TYPE הוא organizations, ‏ folders או projects.

  • RESOURCE_ID הוא מזהה הארגון, מזהה התיקייה, מזהה הפרויקט או מספר הפרויקט, בהתאם לסוג המשאב שצוין ב-RESOURCE_TYPE.

מריצים את הפקודה הבאה כדי לוודא שהמדיניות הוחלה:

gcloud org-policies describe gcp.restrictTLSVersion --RESOURCE_TYPE=RESOURCE_ID --effective

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

  • RESOURCE_TYPE הוא organization, ‏ folder או project.

  • RESOURCE_ID הוא מזהה הארגון, מזהה התיקייה, מזהה הפרויקט או מספר הפרויקט, בהתאם לסוג המשאב שצוין ב-RESOURCE_TYPE.

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

אפשר לבדוק את האילוץ של מדיניות הגבלת גרסת TLS בכל שירות שכלול בהיקף. בדוגמה הבאה מוצגת פקודת curl שמאמתת את ההגבלה על גרסת ה-TLS בקטגוריה של Cloud Storage.

  curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/GCS_BUCKET_NAME/o" \
  --tlsvTLS_VERSION --tls-max TLS_VERSION --ciphers DEFAULT@SECLEVEL=0

אין רווח בין --tlsv לבין הערך. לדוגמה: --tlsv1.1

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

  • GCS_BUCKET_NAME הוא שם של קטגוריה של Cloud Storage בפרויקט, כמו mybucketname.

  • TLS_VERSION היא גרסת TLS כמו 1.0 או 1.1 שנדחתה במדיניות שהוגדרה.

בדוגמה הבאה של בקשת curl, הערך של GCS_BUCKET_NAME מוגדר ל-mybucketname והערך של TLS_VERSION מוגדר ל-1.1:

  curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  "https://storage.googleapis.com/storage/v1/b/mybucketname/o" \
  --tlsv1.1 --tls-max 1.1 --ciphers DEFAULT@SECLEVEL=0

אם מדיניות הארגון מוגדרת להגבלת TLS_VERSION_X, כל ניסיון לגשת למשאבים עם TLS_VERSION_X בפרויקט המוגבל על ידי המדיניות בפקודה לדוגמה הזו ייכשל. מוחזרת הודעת שגיאה שמתארת את הסיבה לכשל.

Request is disallowed by organization's constraints/gcp.restrictTLSVersion
constraint for 'projects/PROJECT_NUMBER' to use service
'SERVICE_NAME.googleapis.com' by violated TLS version `TLS_VERSION_X`

הפלט הזה כולל את הערכים הבאים:

  • PROJECT_NUMBER: מספר הפרויקט שמארח את המשאב שאליו מתייחסת הפקודה הקודמת.
  • SERVICE_NAME: השם של השירות שחל עליו ההיקף שנחסם על ידי מדיניות הגבלת ה-TLS.

שירותים נתמכים

הגבלת גרסת TLS נתמכת על ידי כל ממשקי ה-API של משאבים Cloud de Confiance שיש להם כותרת שחתום עליה ממשק קצה של Google‏ (GFE).

שירותים שלא נתמכים

האילוץ של מדיניות הארגון להגבלת גרסת TLS לא רלוונטי לשירותים הבאים:

  • Apigee
  • ‫App Engine‏ (*.appspot.com)
  • פונקציות Cloud Run‏ (*.cloudfunctions.net),
  • ‫Cloud Run‏ (*.run.app)
  • התחברות לשירות פרטי
  • דומיינים מותאמים אישית

כדי להגביל את גרסאות ה-TLS בשירותים האלה, צריך להשתמש ב-Cloud Load Balancing יחד עם כללי מדיניות SSL. אפשר גם להשתמש באילוץ constraints/compute.requireSslPolicy המוגדר מראש יחד עם אילוצים מותאמים אישית למדיניות SSL כדי לאכוף הגבלות על גרסת TLS ועל סט אלגוריתמים להצפנה במאזני העומסים.

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