אישור לקוח תקף צריך להציג שרשרת אמון שחוזרת לישות העוגן האמינה במאגר האישורים. בדף הזה מוסבר איך ליצור שרשרת אמון משלכם באמצעות אישור הבסיס של רשות אישורים (CA) פרטית שנמצאת בשליטתכם. בהגדרה הזו, רשות האישורים הפרטית נוצרת באמצעות Certificate Authority Service.
אחרי שמקבלים את אישור הבסיס של ה-CA הפרטי, מסמך זה מפרט את התהליך להעלאת התעודה למאגר האישורים של המשאב TrustConfig ב-Certificate Manager. אחר כך מקשרים את הגדרת האמון למשאב Client Authentication (ServerTLSPolicy) ומצרפים את המשאב Client Authentication למשאב של שרת ה-Proxy ל-HTTPS של מאזן העומסים.
לפני שמתחילים
- קוראים את הסקירה הכללית על Mutual TLS.
- קוראים את המדריך ניהול הגדרות האמון.
מתקינים את Google Cloud CLI. בסקירה הכללית על ה-CLI של gcloud תוכלו לקרוא את כל המידע על הכלי. במדריך העזר ל-API ול-CLI של gcloud תוכלו למצוא פקודות שקשורות לאיזון עומסים.
אם לא הפעלתם את ה-CLI של gcloud בעבר, קודם צריך להריץ את הפקודה
gcloud initכדי לבצע אימות.אם אתם משתמשים במאזן עומסים גלובלי חיצוני של אפליקציות (ALB) או במאזן עומסים קלאסי של אפליקציות (ALB), ודאו שהגדרתם מאזן עומסים עם אחד מהקצוות העורפיים הנתמכים הבאים:
- קצוות עורפיים של קבוצות של מכונות וירטואליות
- קטגוריות של Cloud Storage (נתמכות רק אם יש לפחות שירות אחד לקצה העורפי שמחובר גם למאזן העומסים, בנוסף לקטגוריית הקצה העורפי)
- Cloud Run, App Engine או פונקציות Cloud Run
- קישוריות היברידית
אם אתם משתמשים במאזן עומסים חיצוני אזורי של אפליקציות (ALB), במאזן עומסים פנימי של אפליקציות (ALB) חוצה-אזורים או במאזן עומסים פנימי אזורי של אפליקציות (ALB), ודאו שהגדרתם מאזן עומסים עם אחד מהקצוות העורפיים הנתמכים הבאים:
- קצוות עורפיים של קבוצות של מכונות וירטואליות
- Cloud Run
- קישוריות היברידית
הרשאות
כדי לקבל את ההרשאות שדרושות להשלמת המדריך, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM ברמת הפרויקט:
-
כדי ליצור משאבים של מאזן עומסים כמו
TargetHTTPProxy: אדמין של מאזן עומסים ב-Compute (roles/compute.loadBalancerAdmin) -
כדי להשתמש במשאבים של Certificate Manager:
בעלים של Certificate Manager (
roles/certificatemanager.owner) -
כדי ליצור רכיבי אבטחה ורשת:
אדמין של רשת Compute (
roles/compute.networkAdmin) ו-Security Admin של Compute (roles/compute.securityAdmin) -
כדי ליצור פרויקט (אופציונלי): יצירת פרויקטים (
roles/resourcemanager.projectCreator)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
קבלת האישור של רשות אישורי הבסיס (CA)
לרשות אישורי הבסיס יש אישור עם חתימה עצמית שצריך להוסיף למאגר האישורים. האישור של רשות אישורי הבסיס נמצא בראש שרשרת האישורים.
כדי לקבל את האישור של רשות השורש לאישורים, קודם צריך ליצור מאגר רשויות להנפקת אישורים (CA), שיהיה ריק בהתחלה. לאחר מכן צריך ליצור רשות אישורי בסיס ולהוסיף אותה למאגר רשויות ה-CA. רשות האישורים ברמה הבסיסית (root CA) ומאגר רשויות האישורים נוצרים באמצעות Certificate Authority Service, כפי שמתואר בשלבים הבאים.
כדי ליצור מאגר CA, משתמשים בפקודה
gcloud privateca pools create:gcloud privateca pools create CA_POOL \ --location=us-central1
מחליפים את
CA_POOLבמזהה או בשם של מאגר ה-CA הראשי.כדי ליצור רשות אישורי בסיס ולהוסיף אותה למאגר רשויות להנפקת אישורים (CA), משתמשים בפקודה
gcloud privateca roots create:gcloud privateca roots create CA_ROOT \ --pool=CA_POOL \ --subject="CN=my-ca, O=Test LLC" \ --location=us-central1
מחליפים את מה שכתוב בשדות הבאים:
-
CA_ROOT: המזהה או השם של ה-CA ברמה הבסיסית (root). -
CA_POOL: המזהה או השם של מאגר ה-CA הראשי.
-
מחלצים את האישור בקידוד PEM שמזהה את ה-CA הבסיסי.
gcloud privateca roots describe CA_ROOT \ --pool=CA_POOL \ --location=us-central1 \ --format='value(pemCaCertificates)' > root.cert
מחליפים את מה שכתוב בשדות הבאים:
-
CA_ROOT: המזהה או השם של ה-CA הפרטי. -
CA_POOL: המזהה או השם של מאגר ה-CA ההורה.
צריך להעלות את אישור הבסיס (
root.cert) למאגר האישורים. השלב הזה יתבצע בקטע הבא.-
למידע נוסף על השימוש ב-Certificate Authority Service כדי ליצור מאגר רשויות להנפקת אישורים (CA) ורשות אישורים בסיסית:
פורמט של אישור CA בסיסי
כדי לכלול את אישור הבסיס במאגר אישורים, צריך להגדיר את הפורמט של האישור בשורה אחת ולשמור אותו במשתנה סביבה, כדי שקובץ ה-YAML של הגדרת האמון יוכל להפנות אליו.
export ROOT=$(cat root.cert | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')
יצירת משאב של הגדרת אמינות
הגדרת אמון היא משאב שמייצג את ההגדרה של תשתית של מפתח ציבורי (PKI) ב-Certificate Manager.
כדי ליצור משאב של הגדרת אמון, מבצעים את השלבים הבאים:
המסוף
נכנסים לדף Certificate Manager במסוף Google Cloud .
בכרטיסייה הגדרות אמינות, לוחצים על הוספת הגדרת אמינות.
נותנים שם להגדרה האישית.
בשדה Location, בוחרים באפשרות Global או Regional.
המיקום מציין איפה מאוחסן המשאב של הגדרת האמון. במאזני עומסים גלובליים חיצוניים של אפליקציות (ALB), במאזני עומסים קלאסיים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות בכמה אזורים, יוצרים משאב הגדרת אמון גלובלי. במאזני עומסים חיצוניים אזוריים של אפליקציות ובמאזני עומסים פנימיים אזוריים של אפליקציות, יוצרים משאב של הגדרת אמון אזורית.
אם בחרתם באפשרות Regional, בוחרים את האזור.
בקטע מאגר אישורים, לוחצים על הוספת ישות עוגן אמינה ומעלים את קובץ האישור בקידוד PEM, או מעתיקים את תוכן האישור.
לוחצים על הוספה.
לוחצים על יצירה.
מוודאים שהמשאב החדש של הגדרת האמון מופיע ברשימת ההגדרות.
gcloud
יוצרים קובץ YAML של הגדרת האמון (
trust_config.yaml) שמציין את הפרמטרים של הגדרת האמון. בדוגמה הזו, המשאב של הגדרת האמינות הוא מאגר אישורים עם ישות עוגן אמינה אחת שמייצגת אישור בסיס. אישור הבסיס הזה נוצר באמצעות ה-CA הפרטי.cat << EOF > trust_config.yaml name: TRUST_CONFIG_NAME trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" EOFכדי לייבא את קובץ ה-YAML של הגדרת האמון, משתמשים בפקודה
gcloud certificate-manager trust-configs import:גלובלית
במאזני עומסים גלובליים חיצוניים של אפליקציות (ALB), במאזני עומסים קלאסיים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות בכמה אזורים, מציינים את
globalבתור המיקום שבו מאוחסן המשאב של הגדרת האמון.gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=globalמחליפים את מה שכתוב בשדות הבאים:
-
TRUST_CONFIG_NAME: השם של משאב הגדרת האמון.
אזורי
במאזני עומסים אזוריים חיצוניים של אפליקציות ובמאזני עומסים אזוריים פנימיים של אפליקציות, מציינים את האזור שבו מאוחסן המשאב של הגדרת האמון.
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --source=trust_config.yaml \ --location=LOCATIONמחליפים את מה שכתוב בשדות הבאים:
-
TRUST_CONFIG_NAME: השם של משאב הגדרת האמון. -
LOCATION: האזור שבו מאוחסן המשאב של הגדרת האמון. מיקום ברירת המחדל הואglobal.
-
יצירת משאב לאימות לקוח
משאב אימות לקוח (נקרא גם ServerTLSPolicy) מאפשר לציין את מצב ה-TLS בצד השרת ואת משאב הגדרת האמון שבו צריך להשתמש כשמאמתים אישורי לקוח. כשהלקוח מציג אישור לא חוקי או לא מציג אישור למאזן העומסים, הערך של clientValidationMode מציין איך החיבור של הלקוח מטופל. מידע נוסף זמין במאמר מצבי אימות לקוח mTLS.
- כשהערך של
clientValidationModeהואALLOW_INVALID_OR_MISSING_CLIENT_CERT, כל הבקשות מועברות לקצה העורפי גם אם האימות נכשל או שאישור הלקוח חסר. - כשהערך של
clientValidationModeמוגדר כ-REJECT_INVALID, רק בקשות שמספקות אישור לקוח שאפשר לאמת מול משאבTrustConfigמועברות לקצה העורפי. - כשהערך של
clientValidationModeמוגדר כ-ALLOW_VALIDATION_RELAXATIONS, רק בקשות שמספקות אישור לקוח שאפשר לאמת מול משאבTrustConfig– עם החלת הקלות האימות שצוינו (clientValidationRelaxations) – מועברות לקצה העורפי.
כדי ליצור משאב של אימות לקוח (ServerTlsPolicy):
המסוף
נכנסים לדף Authentication Configuration במסוף Google Cloud .
בכרטיסייה Client Authentication, לוחצים על Create.
מזינים שם למשאב של אימות הלקוח.
בשדה Location, בוחרים באפשרות Global או Regional.
במאזני עומסים גלובליים חיצוניים של אפליקציות (ALB), במאזני עומסים קלאסיים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות בכמה אזורים, מגדירים את המיקום כגלובלי. במאזני עומסים חיצוניים אזוריים של אפליקציות ובמאזני עומסים פנימיים אזוריים של אפליקציות, מגדירים את המיקום לאזור שבו מוגדר מאזן העומסים.
ב-Client Authentication mode, בוחרים איזון עומסים.
בקטע Client Validation Mode, בוחרים באחת מהאפשרויות הבאות:
- דחיית הצעות לא תקינות
- אישור לקוח לא תקין או חסר
- אישור הקלות באימות
מידע נוסף זמין במאמר מצבי אימות לקוח.
אם בוחרים באפשרות אישור הקלות באימות, בוחרים אחת או יותר מההקלות הבאות באימות:
- אישור EKU חסר
- מתן הרשאה לגיבוב (hashing) של SHA-1
- אישור קצה שפג תוקפו
בוחרים את המשאב של הגדרת האמון שיצרתם קודם.
אופציונלי: לוחצים על Equivalent code כדי לראות את הגדרות ה-Terraform של המשאב הזה.
לוחצים על יצירה.
מוודאים שמוצג אימות הלקוח (ServerTlsPolicy).
gcloud
בהתאם לאופן שבו רוצים לטפל בחיבור, בוחרים אחת מהאפשרויות הבאות כדי להגדיר את המשאב Client Authentication (
ServerTlsPolicy) בפורמט YAML.אפשרות 1:
clientValidationModeמוגדר לערךALLOW_INVALID_OR_MISSING_CLIENT_CERT.גלובלית
במאזני עומסים גלובליים חיצוניים של אפליקציות, במאזני עומסים קלאסיים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות בכמה אזורים, יוצרים קובץ YAML שמציין באופן הצהרתי את מצב אימות הלקוח ואת המשאב הגלובלי של הגדרת האמון:
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME EOFאזורי
במאזני עומסים חיצוניים אזוריים של אפליקציות ובמאזני עומסים פנימיים אזוריים של אפליקציות, יוצרים קובץ YAML שמציין באופן הצהרתי את מצב אימות הלקוח ואת משאב הגדרת האמון האזורית:
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME EOFאפשרות 2:
clientValidationModeמוגדר לערךREJECT_INVALID.גלובלית
במאזני עומסים גלובליים חיצוניים של אפליקציות (ALB), במאזני עומסים קלאסיים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות בכמה אזורים, יוצרים קובץ YAML שמציין באופן הצהרתי את מצב האימות של הלקוח ואת משאב הגדרת האמון הגלובלי:
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: REJECT_INVALID clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME EOFאזורי
במאזני עומסים חיצוניים אזוריים של אפליקציות ובמאזני עומסים פנימיים אזוריים של אפליקציות, יוצרים קובץ YAML שמציין באופן הצהרתי את מצב אימות הלקוח ואת משאב הגדרת האמון האזורית:
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: REJECT_INVALID clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME EOFאפשרות 3:
clientValidationModeמוגדר ל-ALLOW_VALIDATION_RELAXATIONS.גלובלית
במאזני עומסים גלובליים חיצוניים של אפליקציות, במאזני עומסים קלאסיים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות באזורים שונים, יוצרים קובץ YAML שמציין באופן הצהרתי את מצב האימות של הלקוח, הקלה אחת או יותר באימות ומשאב גלובלי של הגדרת האמון:
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_VALIDATION_RELAXATIONS clientValidationRelaxations: - VALIDATION_RELAXATION - VALIDATION_RELAXATION clientValidationTrustConfig: projects/PROJECT_ID/locations/global/trustConfigs/TRUST_CONFIG_NAME EOFאזורי
במאזני עומסים חיצוניים אזוריים של אפליקציות ובמאזני עומסים פנימיים אזוריים של אפליקציות, יוצרים קובץ YAML שמציין באופן הצהרתי את מצב האימות של הלקוח, הקלה אחת או יותר באימות ומשאב הגדרת אמון אזורי:
cat << EOF > server_tls_policy.yaml name: SERVER_TLS_POLICY_NAME mtlsPolicy: clientValidationMode: ALLOW_VALIDATION_RELAXATIONS clientValidationRelaxations: - VALIDATION_RELAXATION - VALIDATION_RELAXATION clientValidationTrustConfig: projects/PROJECT_ID/locations/REGION/trustConfigs/TRUST_CONFIG_NAME EOF
מחליפים את מה שכתוב בשדות הבאים:
SERVER_TLS_POLICY_NAME: השם של משאב אימות הלקוח (ServerTlsPolicy).
VALIDATION_RELAXATION: אחד או יותר מהערכים הבאים:ALLOW_MISSING_EKU,ALLOW_SHA1_HASHINGאוALLOW_EXPIRED_LEAF_CERTIFICATE.
PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
REGION: במאזן עומסים חיצוני אזורי של אפליקציות או במאזן עומסים פנימי אזורי של אפליקציות, משתמשים באזור שבו הגדרתם את מאזן העומסים.
TRUST_CONFIG_NAME: השם של משאב הגדרת האמון שיצרתם קודם.
כדי לייבא את המשאב
ServerTlsPolicyשל Client Authentication, משתמשים בפקודהgcloud network-security server-tls-policies import:גלובלית
במאזני עומסים גלובליים חיצוניים של אפליקציות (ALB), במאזני עומסים קלאסיים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות בכמה אזורים, מגדירים את הדגל
--locationלערךglobal.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=global
מחליפים את מה שכתוב בשדות הבאים:
SERVER_TLS_POLICY_NAME: השם של משאב אימות הלקוח (ServerTlsPolicy).אזורי
במאזני עומסים חיצוניים אזוריים של אפליקציות ובמאזני עומסים פנימיים אזוריים של אפליקציות, מגדירים את הדגל
--locationלאזור שבו מוגדר מאזן העומסים.gcloud network-security server-tls-policies import SERVER_TLS_POLICY_NAME \ --source=server_tls_policy.yaml \ --location=LOCATION
מחליפים את מה שכתוב בשדות הבאים:
SERVER_TLS_POLICY_NAME: השם של משאב אימות הלקוח (ServerTlsPolicy).אופציונלי: כדי להציג את כל המשאבים של אימות הלקוח (
ServerTlsPolicies), משתמשים ב פקודהgcloud network-security server-tls-policies list:gcloud network-security server-tls-policies list \ --location=LOCATION
מחליפים את מה שכתוב בשדות הבאים:
LOCATION: במאזני עומסים גלובליים חיצוניים של אפליקציות (ALB), במאזני עומסים קלאסיים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות בכמה אזורים, משתמשים ב-global. במאזן עומסים חיצוני אזורי של אפליקציות (ALB) או במאזן עומסים פנימי אזורי של אפליקציות (ALB), משתמשים באזור שבו הגדרתם את מאזן העומסים.
צירוף המשאב Client Authentication למאזן העומסים
כדי שאימות TLS בו-זמני יפעל, אחרי שמגדירים את מאזן העומסים צריך לצרף את המשאב Client Authentication (ServerTLSPolicy) למשאב של שרת ה-Proxy ל-HTTPS של מאזן העומסים.
המסוף
במסוף Google Cloud , עוברים לדף איזון עומסים.
ברשימת מאזני העומסים, בוחרים את מאזן העומסים שאליו רוצים לצרף את המשאב Client Authentication (
ServerTLSPolicy).לוחצים על עריכה.
בקטע Frontend configuration של ממשק קצה מסוג HTTPS, מרחיבים את הקטע תכונות מתקדמות.
ברשימה Client Authentication, בוחרים את המשאב Client Authentication.
לוחצים על סיום.
לוחצים על עדכון.
gcloud
כדי להציג את כל משאבי שרת ה-proxy ל-HTTPS בפרויקט, משתמשים בפקודה
gcloud compute target-https-proxies list:gcloud compute target-https-proxies list
שימו לב לשם של שרת ה-proxy ל-HTTPS שאליו אתם רוצים לצרף את המשאב
ServerTLSPolicy. בשלבים הבאים, השם הזה נקראTARGET_HTTPS_PROXY_NAME.כדי לייצא לקובץ את ההגדרות של שרת proxy ל-HTTPS, משתמשים בפקודה
gcloud compute target-https-proxies export.גלובלית
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --globalמחליפים את מה שכתוב בשדות הבאים:
-
TARGET_HTTPS_PROXY_NAME: השם של שרת ה-proxy לטירגוט. -
TARGET_PROXY_FILENAME: השם של קובץ התצורה של שרת ה-proxy לחלוקת העומס בפורמט YAML. לדוגמה,mtls_target_proxy.yaml.
אזורי
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --destination=TARGET_PROXY_FILENAME \ --region=REGIONמחליפים את מה שכתוב בשדות הבאים:
-
TARGET_HTTPS_PROXY_NAME: השם של שרת ה-proxy לטירגוט. -
TARGET_PROXY_FILENAME: השם של קובץ התצורה של שרת ה-proxy לחלוקת העומס בפורמט YAML. לדוגמה,mtls_target_proxy.yaml. -
REGION: האזור שבו הגדרתם את מאזן העומסים.
-
כדי להציג את כל המשאבים של אימות הלקוח (
ServerTlsPolicy), משתמשים בפקודהgcloud network-security server-tls-policies list:gcloud network-security server-tls-policies list \ --location=LOCATIONמחליפים את מה שכתוב בשדות הבאים:
LOCATION: למאזן עומסים פנימי של אפליקציות (ALB) בין אזורים, למאזן עומסים חיצוני גלובלי של אפליקציות (ALB) או למאזן עומסים קלאסי של אפליקציות (ALB), משתמשים ב-global. במאזן עומסים חיצוני אזורי של אפליקציות (ALB) או במאזן עומסים פנימי אזורי של אפליקציות (ALB), משתמשים באזור שבו הגדרתם את מאזן העומסים.שימו לב לשם של משאב אימות הלקוח (
ServerTLSPolicy) כדי להגדיר את mTLS. השם הזה נקראSERVER_TLS_POLICY_NAMEבשלב הבא.מוסיפים את אימות הלקוח (
ServerTlsPolicy) לשרת ה-Proxy ל-HTTPS של היעד.echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/LOCATION/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> TARGET_PROXY_FILENAME
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LOCATION: במאזני עומסים גלובליים חיצוניים של אפליקציות, במאזני עומסים קלאסיים של אפליקציות ובמאזני עומסים פנימיים של אפליקציות בכמה אזורים, משתמשים ב-global. במאזן עומסים חיצוני אזורי של אפליקציות (ALB) או במאזן עומסים פנימי אזורי של אפליקציות (ALB), משתמשים באזור שבו הגדרתם את מאזן העומסים. -
SERVER_TLS_POLICY_NAME: השם של משאב אימות הלקוח (ServerTLSPolicy). -
TARGET_PROXY_FILENAME: השם של קובץ התצורה של שרת ה-proxy לחלוקת העומס, בפורמט YAML.
-
כדי לייבא מקובץ את ההגדרות של שרת proxy ל-HTTPS, משתמשים בפקודה
gcloud compute target-https-proxies import.גלובלית
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --globalמחליפים את מה שכתוב בשדות הבאים:
-
TARGET_HTTPS_PROXY_NAME: השם של שרת ה-proxy לטירגוט. -
TARGET_PROXY_FILENAME: השם של קובץ התצורה של שרת ה-proxy לחלוקת העומס בפורמט YAML. לדוגמה,mtls_target_proxy.yaml.
אזורי
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --source=TARGET_PROXY_FILENAME \ --region=REGIONמחליפים את מה שכתוב בשדות הבאים:
-
TARGET_HTTPS_PROXY_NAME: השם של שרת ה-proxy לטירגוט. -
TARGET_PROXY_FILENAME: השם של קובץ התצורה של שרת ה-proxy לחלוקת העומס, בפורמט YAML. לדוגמה,mtls_target_proxy.yaml. -
REGION: האזור שבו הגדרתם את מאזן העומסים.
-
הוספת כותרות mTLS בהתאמה אישית
כשמפעילים mTLS, אפשר להעביר מידע על חיבור ה-mTLS באמצעות כותרות בהתאמה אישית. אתם יכולים גם להפעיל רישום ביומן כדי שכשלים בחיבור mTLS יתועדו ביומנים. למידע נוסף על הגדרת הרישום ביומן, קראו את אחד מהמאמרים הבאים:
- רישום נתונים ביומן ומעקב אחרי הביצועים של מאזן עומסים גלובלי חיצוני של אפליקציות (ALB)
- רישום נתונים ביומן ומעקב אחרי הביצועים של מאזן עומסים אזורי חיצוני של אפליקציות (ALB)
הוספת כותרות mTLS בהתאמה אישית לשירותים לקצה העורפי
במאזני עומסים חיצוניים גלובליים של אפליקציות או במאזני עומסים קלאסיים של אפליקציות, אתם יכולים להשתמש ב כותרות בהתאמה אישית כדי להעביר מידע על חיבור ה-mTLS לשירותי קצה עורפי.
כדי להציג את כל שירותי הקצה העורפי בפרויקט, משתמשים בפקודה
gcloud compute backend-services list:gcloud compute backend-services list
שימו לב לשם של שירות הקצה העורפי כדי להפעיל כותרות בהתאמה אישית. השם הזה נקרא
BACKEND_SERVICEבשלב הבא.כדי לעדכן את שירות הקצה העורפי, משתמשים בפקודה
gcloud compute backend-services update:gcloud compute backend-services update BACKEND_SERVICE \ --global \ --custom-request-header='X-Client-Cert-Present:{client_cert_present}' \ --custom-request-header='X-Client-Cert-Chain-Verified:{client_cert_chain_verified}' \ --custom-request-header='X-Client-Cert-Error:{client_cert_error}' \ --custom-request-header='X-Client-Cert-Hash:{client_cert_sha256_fingerprint}' \ --custom-request-header='X-Client-Cert-Serial-Number:{client_cert_serial_number}' \ --custom-request-header='X-Client-Cert-SPIFFE:{client_cert_spiffe_id}' \ --custom-request-header='X-Client-Cert-URI-SANs:{client_cert_uri_sans}' \ --custom-request-header='X-Client-Cert-DNSName-SANs:{client_cert_dnsname_sans}' \ --custom-request-header='X-Client-Cert-Valid-Not-Before:{client_cert_valid_not_before}' \ --custom-request-header='X-Client-Cert-Valid-Not-After:{client_cert_valid_not_after}'
הוספת כותרות mTLS מותאמות אישית למפת URL
במאזני עומסים פנימיים של אפליקציות (ALB) בין אזורים, במאזני עומסים חיצוניים אזוריים של אפליקציות (ALB) או במאזני עומסים פנימיים אזוריים של אפליקציות (ALB), אתם יכולים להשתמש ב כותרות בהתאמה אישית כדי להעביר מידע על חיבור ה-mTLS למפת URL.
כדי להציג את כל מפות ה-URL בפרויקט, משתמשים בפקודה
gcloud compute url-maps list:
gcloud compute url-maps list
שימו לב לשם של מפת URL כדי להפעיל כותרות בהתאמה אישית.
השם הזה נקרא URL_MAP_NAME בשלב הבא.
גלובלית
כדי לערוך את מפת URL של מאזן עומסים פנימי של אפליקציות (ALB) בכמה אזורים, משתמשים בפקודה gcloud compute
url-maps edit:
gcloud compute url-maps edit URL_MAP_NAME --global
בהמשך מוצג קובץ YAML לדוגמה שמראה איך להשתמש במשתנים בכותרות של request header (requestHeadersToAdd). אתם יכולים להשתמש באותם משתנים כדי לשלוח כותרות של כותרת תגובה (responseHeadersToAdd).
headerAction:
requestHeadersToAdd:
- headerName: "X-Client-Cert-Present"
headerValue: "{client_cert_present}"
- headerName: "X-Client-Cert-Chain-Verified"
headerValue: "{client_cert_chain_verified}"
- headerName: "X-Client-Cert-Error"
headerValue: "{client_cert_error}"
- headerName: "X-Client-Cert-Hash"
headerValue: "{client_cert_sha256_fingerprint}"
- headerName: "X-Client-Cert-Serial-Number"
headerValue: "{client_cert_serial_number}"
- headerName: "X-Client-Cert-SPIFFE"
headerValue: "{client_cert_spiffe_id}"
- headerName: "X-Client-Cert-URI-SANs"
headerValue: "{client_cert_uri_sans}"
- headerName: "X-Client-Cert-DNSName-SANs"
headerValue: "{client_cert_dnsname_sans}"
- headerName: "X-Client-Cert-Valid-Not-Before"
headerValue: "{client_cert_valid_not_before}"
- headerName: "X-Client-Cert-Valid-Not-After"
headerValue: "{client_cert_valid_not_after}"
- headerName: "X-Client-Cert-Issuer-Dn"
headerValue: "{client_cert_issuer_dn}"
- headerName: "X-Client-Cert-Subject-Dn"
headerValue: "{client_cert_subject_dn}"
- headerName: "X-Client-Cert-Leaf"
headerValue: "{client_cert_leaf}"
- headerName: "X-Client-Cert-Chain"
headerValue: "{client_cert_chain}"
אזורי
כדי לערוך את מפת כתובות ה-URL של מאזן עומסים חיצוני אזורי של אפליקציות או של מאזן עומסים פנימי אזורי של אפליקציות, משתמשים בפקודה gcloud compute
url-maps edit:
gcloud compute url-maps edit URL_MAP_NAME --region=REGION
הקוד הבא הוא קובץ YAML לדוגמה שמראה איך להשתמש במשתנים בכותרות של בקשות בהתאמה אישית (requestHeadersToAdd). אתם יכולים להשתמש באותם משתנים כדי לשלוח כותרות של תגובות בהתאמה אישית (responseHeadersToAdd).
defaultService: regions/REGION/backendServices/BACKEND_SERVICE_1
name: regional-lb-map
region: region/REGION
headerAction:
requestHeadersToAdd:
- headerName: "X-Client-Cert-Present"
headerValue: "{client_cert_present}"
- headerName: "X-Client-Cert-Chain-Verified"
headerValue: "{client_cert_chain_verified}"
- headerName: "X-Client-Cert-Error"
headerValue: "{client_cert_error}"
- headerName: "X-Client-Cert-Hash"
headerValue: "{client_cert_sha256_fingerprint}"
- headerName: "X-Client-Cert-Serial-Number"
headerValue: "{client_cert_serial_number}"
- headerName: "X-Client-Cert-SPIFFE"
headerValue: "{client_cert_spiffe_id}"
- headerName: "X-Client-Cert-URI-SANs"
headerValue: "{client_cert_uri_sans}"
- headerName: "X-Client-Cert-DNSName-SANs"
headerValue: "{client_cert_dnsname_sans}"
- headerName: "X-Client-Cert-Valid-Not-Before"
headerValue: "{client_cert_valid_not_before}"
- headerName: "X-Client-Cert-Valid-Not-After"
headerValue: "{client_cert_valid_not_after}"
- headerName: "X-Client-Cert-Issuer-Dn"
headerValue: "{client_cert_issuer_dn}"
- headerName: "X-Client-Cert-Subject-Dn"
headerValue: "{client_cert_subject_dn}"
- headerName: "X-Client-Cert-Leaf"
headerValue: "{client_cert_leaf}"
- headerName: "X-Client-Cert-Chain"
headerValue: "{client_cert_chain}"
קבלת אישור לקוח באמצעות CSR
בקטע הזה מוסבר איך ליצור אישור לקוח (קצה) שחתום על ידי אישור הבסיס של ה-CA.
כדי לקבל אישור לקוח, יוצרים בקשה לחתימה על אישור (CSR) ושולחים אותה למאגר רשויות ה-CA.
יוצרים קובץ תצורה של OpenSSL כדי ליצור את ה-CSR לאישור הלקוח.
קובץ התצורה הבא (
client.config) מכיל את הקטע[extension_requirements], שמציין את תוספי X.509 שצריך לכלול ב-CSR. מידע נוסף על הדרישות לאישורי לקוח זמין במאמר דרישות לאישורים.cat > client.config << EOF [req] default_bits = 2048 req_extensions = extension_requirements distinguished_name = dn_requirements prompt = no [extension_requirements] basicConstraints = critical, CA:FALSE keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth [dn_requirements] countryName = US stateOrProvinceName = California localityName = San Francisco 0.organizationName = example organizationalUnitName = test commonName = test.example.com emailAddress = test@example.com EOFמריצים את הפקודה הבאה של
opensslכדי ליצור CSR (csr.pem) ומפתח פרטי תואם (key.pem).openssl req -newkey rsa:2048 -nodes \ -config client.config \ -keyout key.pem \ -out csr.pemמריצים את הפקודה הבאה של
gcloud privateca certificates createכדי לשלוח את ה-CSR ולבקש את אישור הלקוח מסוג X.509 מרשות האישורים במאגר רשויות להנפקת אישורים (CA).gcloud privateca certificates create \ --issuer-pool CA_POOL \ --issuer-location=us-central1 \ --csr csr.pem \ --cert-output-file CERT_FILENAMEמחליפים את מה שכתוב בשדות הבאים:
-
CA_POOL: המזהה או השם של מאגר ה-CA. -
CERT_FILENAME: קובץ שרשרת האישורים בקידוד PEM, שמסודר מהקצה לשורש.
-
שולחים בקשת HTTPS מאובטחת לכתובת ה-IP של מאזן העומסים באמצעות אישור ה-SSL בצד הלקוח. הלקוח מציג את האישור שלו כדי לאמת את עצמו מול מאזן העומסים.
curl -v --key key.pem --cert CERT_FILENAME https://IP_ADDRESS
מחליפים את מה שכתוב בשדות הבאים:
-
CERT_FILENAME: קובץ שרשרת האישורים בקידוד PEM, שמסודר מהקצה לבסיס. -
IP_ADDRESS: כתובת ה-IP של מאזן העומסים.
-