בדף הזה מוסבר איך להפעיל גישה מבוססת-אישורים(CBA) לאפליקציות האינטרנט שלכם. אתם יכולים להשתמש ב-CBA כדי לאבטח גישה ממכשירים מהימנים לאפליקציות אינטרנט ארגוניות שפועלות ב- Google Cloud.
סקירה כללית
ב-CBA לאפליקציות אינטרנט נעשה שימוש בתכונות של בקרת גישה מבוססת-הקשר ב-Chrome Enterprise Premium ובGoogle Cloud רשתות כדי לאבטח את הגישה באמצעות TLS דו-כיווני (mTLS). אלה הרכיבים העיקריים שבהם משתמשים כדי להפעיל CBA באפליקציות אינטרנט:
- Access Context Manager: מאפשר ליצור רמות גישה שדורשות אישורים כשקובעים גישה לאפליקציות אינטרנט.
- שרת proxy לאימות זהויות (IAP): מאמת את גישת המשתמשים לאפליקציות אינטרנט.
- Google Cloud מאזן עומסים ב-HTTPS: מספק אימות הדדי (mTLS) בין משתמשים לבין אפליקציות אינטרנט.
- מדיניות Chrome Enterprise: מספקת אימות הדדי (mTLS) בין משתמשים לבין אפליקציות אינטרנט כשמשתמשים בדפדפן Chrome.
לפני שמתחילים
מריצים את הפקודה הבאה כדי לוודא שמותקנת הגרסה העדכנית של Google Cloud CLI:
gcloud components update
הגדרת mTLS למאזן עומסים חיצוני מסוג HTTPS
פועלים לפי ההוראות כדי להגדיר את מאזן העומסים החיצוני מסוג HTTPS. חשוב לשים לב לשם של פרוקסי ה-HTTPS של היעד שנוצר, כי תצטרכו אותו בשלב מאוחר יותר.
יצירת הגדרת אמון
יוצרים הגדרת אמון שתייצג את סוג תשתית המפתח הציבורי (PKI) שלכם.
כדי לבצע את המשימה הזו, צריכה להיות לכם הרשאת certificatemanager.trustconfigs.create בפרויקט היעד Google Cloud .
אפשר ליצור הגדרת אמון באמצעות אישור שהונפק על ידי Google (שיטה 1), באמצעות אישור משלכם (שיטה 2) או באמצעות אישור עם חתימה עצמית עם אימות נקודת קצה (שיטה 3).
שיטה 1
משתמשים באישור שהונפק על ידי Google כדי ליצור הגדרת אמון.
- פועלים לפי השלבים ליצירת רשות אישורים (CA) בסיסית.
מאחזרים את התוכן של קובץ ה-PEM:
gcloud privateca roots describe ROOT_CA_ID \ --pool=POOL_ID \ --location=CA_LOCATION \ --format='value(pemCaCertificates)'מחליפים את מה שכתוב בשדות הבאים:
- ROOT_CA_ID: המזהה של אישור הבסיס.
- POOL_ID: המזהה של מאגר אישורי הבסיס.
- CA_LOCATION: המיקום של הרשות המאשרת.
מאחזרים את אישור הבסיס שמוחזר בשדה
pemCaCertificates. האישור הוא המחרוזת שבין התוויםBEGIN CERTIFICATEל-END CERTIFICATE, והוא כולל את שני התווים.שומרים את אישור הבסיס בפורמט PEM בקובץ.
יוצרים הגדרת אמון:
מגדירים את משתני הסביבה הבאים:
ROOT_PEM_FILE=TRUST_ANCHOR_PATH INT_PEM_FILE1=IM_CERT_PATH INT_PEM_FILE2=SECOND_IM_CERT_PATHמחליפים את מה שכתוב בשדות הבאים:
- TRUST_ANCHOR_PATH: הנתיב לעוגן האמון בפורמט PEM.
- IM_CERT_PATH: הנתיב לאישור הביניים בקידוד PEM.
- SECOND_IM_CERT_PATH: הנתיב לאישור הביניים השני בקידוד PEM.
מכינים את התוכן של קובץ ה-YAML של הגדרות האמון:
ROOT=$(cat ROOT_PEM_FILE | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_1=$(cat INT_PEM_FILE1 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_2=$(cat INT_PEM_FILE2 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')יוצרים את קובץ ה-YAML של הגדרות האמון:
cat << EOF > trust_config.yaml name: "${TRUST_CONFIG_NAME?}" trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" intermediateCas: - pemCertificate: "${INT_1?}" - pemCertificate: "${INT_2?}" EOFקובץ ה-YAML הזה מגדיר הגדרת אמון בשם
TRUST_CONFIG_NAME. הגדרת האמון מכילה מאגר אישורים אחד, שכולל את אישור הבסיס ושני אישורים ביניים.מייבאים את הגדרות האמון אל Google Cloud Certificate Manager:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --project=GCP_PROJECT \ --source=${PWD?}/trust_config.yamlמחליפים את מה שכתוב בשדות הבאים:
- TRUST_CONFIG_NAME: השם של הגדרת האמון.
- GCP_PROJECT: מזהה הפרויקט ב- Google Cloud .
אם אתם פורסים מבנה מורכב יותר עם רשויות אישורים ברמת ביניים (intermediate) שנחתמות על ידי רשות האישורים הבסיסית (root), אתם צריכים להוסיף את רשויות האישורים ברמת הביניים כ-intermediateCAs.
שיטה 2
כדי ליצור הגדרת אמון, משתמשים בפריסת PKI משלכם עם אישורים קיימים.
הגדרת אמון מסוג זה מניחה שיש מאגר אמון בסיסי עם נקודת אמון יחידה שמייצגת אישור בסיסי. לא צוינו אישורי ביניים.
יוצרים הגדרת אמון:
מגדירים את משתני הסביבה הבאים:
ROOT_PEM_FILE=TRUST_ANCHOR_PATH INT_PEM_FILE1=IM_CERT_PATH INT_PEM_FILE2=SECOND_IM_CERT_PATHמחליפים את מה שכתוב בשדות הבאים:
- TRUST_ANCHOR_PATH: הנתיב לעוגן האמון בפורמט PEM.
- IM_CERT_PATH: הנתיב לאישור הביניים בקידוד PEM.
- SECOND_IM_CERT_PATH: הנתיב לאישור הביניים השני בקידוד PEM.
מכינים את התוכן של קובץ ה-YAML של הגדרות האמון:
ROOT=$(cat ROOT_PEM_FILE | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_1=$(cat INT_PEM_FILE1 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g') INT_2=$(cat INT_PEM_FILE2 | sed 's/^[ ]*//g' | tr '\n' $ | sed 's/\$/\\n/g')יוצרים את קובץ ה-YAML של הגדרות האמון:
cat << EOF > trust_config.yaml name: "${TRUST_CONFIG_NAME?}" trustStores: - trustAnchors: - pemCertificate: "${ROOT?}" intermediateCas: - pemCertificate: "${INT_1?}" - pemCertificate: "${INT_2?}" EOFקובץ ה-YAML הזה מגדיר הגדרת אמון בשם
TRUST_CONFIG_NAME. הגדרת האמון מכילה מאגר אישורים אחד, שכולל את אישור הבסיס ושני אישורים ביניים.מייבאים את הגדרות האמון אל Google Cloud Certificate Manager:
gcloud certificate-manager trust-configs import TRUST_CONFIG_NAME \ --project=GCP_PROJECT \ --source=${PWD?}/trust_config.yamlמחליפים את מה שכתוב בשדות הבאים:
- TRUST_CONFIG_NAME: השם של הגדרת האמון.
- GCP_PROJECT: מזהה הפרויקט ב- Google Cloud .
שיטה 3
אם אתם משתמשים בדפדפן Chrome ורוצים להשתמש באימות נקודות קצה עם אישור בחתימה עצמית, אתם צריכים לפעול לפי ההוראות שבקטע הזה.
פועלים לפי ההוראות כדי לפרוס את אימות נקודות הקצה בארגון. הכלי Endpoint Verification פורס באופן אוטומטי אישור בחתימה עצמית שהונפק על ידי Google במכשירים שלכם, ואתם לא צריכים ליצור הגדרת אמון.
יצירת מדיניות TLS כדי להפעיל mTLS במאזן העומסים החיצוני
אם השתמשתם בשיטה 3, אתם יכולים לדלג על השלב הזה.
כדי לבצע את המשימה הזו, אתם צריכים את ההרשאות הבאות:
-
certificatemanager.trustconfigs.useבהגדרת ההרשאות שיתוף שיצרתם עבורServerTlsPolicy -
networksecurity.serverTlsPolicies.createבפרויקט היעד Google Cloud
יוצרים את קובץ ה-YAML של מדיניות ה-TLS של השרת:
cat << EOF > server_tls_policy.yaml name: "SERVER_TLS_POLICY_NAME" mtlsPolicy: clientValidationMode: ALLOW_INVALID_OR_MISSING_CLIENT_CERT clientValidationTrustConfig: projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME EOFמחליפים את מה שכתוב בשדות הבאים:
- SERVER_TLS_POLICY_NAME: השם של מדיניות ה-TLS של השרת.
- GCP_PROJECT: מזהה הפרויקט ב- Google Cloud .
- TRUST_CONFIG_NAME: הגדרת האמון שיצרתם בשלב הקודם.
מידע על אפשרויות האימות של לקוח
clientValidationModeזמין במאמר מצבי אימות של לקוח MTLS.מייבאים את קובץ ה-YAML של מדיניות ה-TLS של השרת אל Google Cloud הפרויקט:
gcloud network-security server-tls-policies import ${SERVER_TLS_POLICY_NAME?} \ --project=GCP_PROJECT \ --source=${PWD?}/server_tls_policy.yaml \ --location=globalמחליפים את GCP_PROJECT במזהה הפרויקט. Google Cloud
אחרי שיוצרים מדיניות TLS, אי אפשר לשנות אותה. כדי לשנות מדיניות TLS קיימת, צריך למחוק את מדיניות ה-TLS הקיימת וליצור מדיניות חדשה.
איך מצרפים מדיניות TLS למדיניות HTTPS של יעד
כדי לבצע את המשימה הזו, צריכה להיות לכם הרשאת compute.targetHttpsProxies.get בפרויקט Google Cloud שמיועד.
מייצאים את שרת ה-proxy הקיים של HTTPS ליעד לקובץ מקומי:
gcloud compute target-https-proxies export TARGET_HTTPS_PROXY_NAME \ --project=GCP_PROJECT \ --global \ --destination=${PWD?}/xlb-mtls-target-proxy.yamlמחליפים את מה שכתוב בשדות הבאים:
- TARGET_HTTPS_PROXY_NAME: שרת ה-proxy ל-HTTPS של היעד.
- GCP_PROJECT: מזהה הפרויקט ב- Google Cloud .
מוסיפים את
ServerTlsPolicyלהגדרת ה-Proxy ל-HTTPS של היעד:כדי לבצע את המשימה הזו, אתם צריכים את ההרשאות הבאות:
-
networksecurity.serverTlsPolicies.useב-ServerTlsPolicyשיצרתם עבור ה-Proxy ל-HTTPS עם יעד -
compute.targetHttpsProxies.updateבפרויקט Google Cloud היעד
echo "serverTlsPolicy: //networksecurity.googleapis.com/projects/GCP_PROJECT/locations/global/serverTlsPolicies/SERVER_TLS_POLICY_NAME" >> xlb-mtls-target-proxy.yamlמחליפים את מה שכתוב בשדות הבאים:
- GCP_PROJECT: מזהה הפרויקט ב- Google Cloud .
- SERVER_TLS_POLICY_NAME: מדיניות TLS של השרת.
-
מעדכנים את שרת ה-proxy של HTTPS על ידי ייבוא ההגדרה החדשה מהקובץ המקומי:
gcloud compute target-https-proxies import TARGET_HTTPS_PROXY_NAME \ --project=GCP_PROJECT \ --global \ --source=${PWD?}/xlb-mtls-target-proxy.yamlמחליפים את מה שכתוב בשדות הבאים:
- TARGET_HTTPS_PROXY_NAME: שרת ה-proxy ל-HTTPS של היעד.
- GCP_PROJECT: מזהה הפרויקט ב- Google Cloud .
יצירה של רמת גישה שדורשת אישורים
המסוף
- פועלים לפי ההוראות ליצירת רמת גישה בהתאמה אישית.
מוסיפים את הביטוי הבא לרמת הגישה המותאמת אישית:
אם יצרתם הגדרת אמון (שיטה 1 או שיטה 2), מוסיפים את הביטוי הבא בשדה תנאים של רמת הגישה המותאמת אישית כדי להשתמש בקשירת אישור PKI בזמן האימות:
certIsPkiAttested(origin, ["TLS_POLICY_FULL_RESOURCE_PATH1", "TLS_POLICY_FULL_RESOURCE_PATH2", …]) == trueכאשר TLS_POLICY_FULL_RESOURCE_PATH1 ו-TLS_POLICY_FULL_RESOURCE_PATH2 הם הנתיבים שמייצגים כמה הגדרות של אמון:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME.צריך לספק לפחות נתיב אחד להגדרת אמון.
מחליפים את מה שכתוב בשדות הבאים:
- GCP_PROJECT: מזהה הפרויקט ב- Google Cloud .
- TRUST_CONFIG_NAME: השם של הגדרת האמון.
אם השתמשתם באישור בחתימה עצמית שהונפק על ידי Google (שיטה 3), צריך להוסיף את הביטוי הבא בשדה תנאים של רמת הגישה המותאמת אישית כדי להשתמש בקישור האישור במהלך האימות:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
gcloud
אם יצרתם הגדרת אמון (שיטה 1 או שיטה 2), מריצים את הפקודה הבאה כדי ליצור רמת גישה מותאמת אישית שמשתמשת באימות של איגוד אישור PKI:
gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
--title=TITLE \
--custom-level-spec=FILE \
--description=DESCRIPTION \
--policy=POLICY_NAME
מחליפים את מה שכתוב בשדות הבאים:
- ACCESS_LEVEL_NAME: שם ייחודי לרמת הגישה.
- TITLE: שם קריא לאנשים.
FILE: קובץ YAML שמכיל את הביטוי הבא:
certIsPkiAttested(origin, ["TLS_POLICY_FULL_RESOURCE_PATH1", "TLS_POLICY_FULL_RESOURCE_PATH2", …]) == trueכאשר TLS_POLICY_FULL_RESOURCE_PATH1 ו-TLS_POLICY_FULL_RESOURCE_PATH2 הם הנתיבים שמייצגים כמה הגדרות של אמון:
certificatemanager.googleapis.com/projects/GCP_PROJECT/locations/global/trustConfigs/TRUST_CONFIG_NAME.צריך לספק לפחות נתיב אחד להגדרת אמון.
מחליפים את מה שכתוב בשדות הבאים:
- GCP_PROJECT: מזהה הפרויקט ב- Google Cloud .
- TRUST_CONFIG_NAME: השם של הגדרת האמון.
DESCRIPTION: תיאור מפורט של רמת הגישה.
POLICY_NAME: מדיניות הגישה של הארגון.
אם אין לכם הגדרת אמון כי אתם משתמשים באישור בחתימה עצמית עם Endpoint Verification (שיטה 3), מוסיפים את הביטוי הבא לרמת הגישה המותאמת אישית:
certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
אכיפת גישה שמבוססת על אישורים באמצעות שרת proxy לאימות זהויות (IAP)
בארכיטקטורה של CBA לאפליקציות אינטרנט, IAP מספקת אכיפת מדיניות מבוססת-משתמש כדי להגן על אפליקציות האינטרנט מפני מכשירים לא מהימנים.
כדי להפעיל רכישות מתוך האפליקציה ולהגדיר את מדיניות ה-CBA:
- אם לא הגדרתם רכישות מתוך האפליקציה, אתם צריכים לפעול לפי ההוראות כדי להגדיר אותן.
- עוברים אל IAP כדי לצרף את רמת הגישה שיצרתם קודם:
מעבר אל IAP - בוחרים את המשאב שרוצים לאבטח באמצעות CBA ולוחצים על הגדרות.
- בשדה רמות גישה, מזינים את השם של רמת הגישה שיצרתם.
כדי להשתמש ב-Google Cloud CLI כדי להגדיר מדיניות CBA ב-IAP, אפשר לעיין במסמכי התיעוד של Google Cloud CLI.
הגדרת הדפדפן לבחירה אוטומטית של האישור
כדי שהדפדפן יבחר אוטומטית את האישור כשנקבעת הגישה, צריך לבצע את השלבים שמתאימים לדפדפן שלכם.
Chrome
מגדירים את מדיניות Chrome AutoSelectCertificateForURLs כך ש-Chrome ישתמש באישור הנכון במהלך לחיצת היד של mTLS.
מוודאים שדפדפן Chrome מנוהל על ידי הממשק המרכזי לניהול דפדפן Chrome או על ידי מדיניות קבוצתית של Windows:
- Windows, macOS, Linux: מבצעים את השלבים להגדרת פרופיל Chrome מנוהל.
- Chrome: רישום המכשיר לארגון.
מוסיפים את המדיניות
AutoSelectCertificateForUrls:- במסוף Admin, עוברים אל מכשירים > Chrome > הגדרות > הגדרות משתמש ודפדפן > אישורי לקוח.
- בוחרים ארגון.
- מוסיפים
AutoSelectCertificateForUrlsמדיניות לכתובת ה-URL של אפליקציית האינטרנט ומידע על אישור הבסיס.
מידע נוסף זמין במאמר בנושא סכימת המדיניות. הנה דוגמה להגדרת מדיניות שמשתמשת באישור מאימות נקודות קצה:
{
"pattern":"https://[*.].mysite.com",
"Filter":{
"ISSUER":{
"CN":"Google Endpoint Verification"
}
}
}
Safari
מגדירים את העדפת הזהות:
- פותחים את אפליקציית Keychain Access ובוחרים באפשרות All Items (כל הפריטים).
- בוחרים את האישור שרוצים להגדיר.
- לוחצים על קובץ > העדפה חדשה של זהות.
- מזינים את כתובת ה-URL ולוחצים על הוספה.
הפעולה הזו יוצרת רשומה חדשה של העדפות זהות ב-Keychain שאפשר לעדכן.
Edge
מגדירים את המדיניות של AutoSelectCertificateForUrls Edge לפי ההוראות במסמכי התיעוד של Edge.