במאמר הזה מוסבר מתי ואיך להשתמש בלקוחות OAuth מותאמים אישית עבור שרת proxy לאימות זהויות (IAP).
כברירת מחדל, שרת IAP משתמש בלקוחות OAuth שמנוהלים על ידי Google כדי לאמת משתמשים. אפשר להשתמש בלקוחות OAuth שמנוהלים על ידי Google רק כדי לנהל גישה של משתמשים פנימיים שנמצאים בארגון.
כדי לבצע את הפעולות הבאות, צריך להשתמש בהגדרת OAuth בהתאמה אישית:
- ניהול הגישה לאפליקציות שמופעל בהן IAP למשתמשים חיצוניים מחוץ לארגון.
- ניהול הגישה לאפליקציות אינטרנט שנמצאות בפרויקטים שלא שייכים לGoogle Cloud ארגון.
- הצגת פרטי מותג בהתאמה אישית במסכי הסכמה במהלך אימות.
אפשר להגדיר לקוחות OAuth בהתאמה אישית ב-IAP או ישירות בפלטפורמה.
כשמשתמשים בלקוחות OAuth בהתאמה אישית, צריך להגדיר את מסך ההסכמה ל-OAuth. כדי שהמיתוג המותאם אישית יופיע במסך ההסכמה, צריך לשלוח את האפליקציה לאימות על ידי Google. למידע נוסף על תהליך האימות, ראו הגדרת מסך הסכמה ל-OAuth.
כשמגדירים לקוחות OAuth בהתאמה אישית, באחריותכם ליצור את פרטי הכניסה ולנהל אותם, כולל אחסון מאובטח של סוד הלקוח ושיתוף שלו עם לקוחות מורשים כשצריך.
השוואה בין לקוחות OAuth שמנוהלים על ידי Google לבין לקוחות OAuth בהתאמה אישית
לקוחות OAuth שמנוהלים על ידי Google לא יכולים לגשת באופן פרוגרמטי לאפליקציות שמוגנות על ידי IAP. עם זאת, עדיין אפשר לגשת באופן פרוגרמטי לאפליקציות שמוגנות על ידי IAP ומשתמשות בלקוח OAuth שבניהול Google, באמצעות לקוח OAuth נפרד שהוגדר דרך ההגדרה programmatic_clients או באמצעות JWT של חשבון שירות.
בטבלה הבאה מוצגת השוואה בין לקוח OAuth שמנוהל על ידי Google לבין לקוח OAuth בהתאמה אישית.
| לקוח OAuth שמנוהל על ידי Google | לקוח OAuth בהתאמה אישית | |
|---|---|---|
| משתמשים | פנימי בלבד | פנימי וחיצוני |
| מותג | Google Cloud brand | מותג בבעלות הלקוח |
| הגדרת OAuth | הוגדר על ידי Google | הלקוח הוגדר |
| פרטי כניסה ל-OAuth | בניהול Google | בניהול של הלקוח |
| גישה לאפליקציה | רק בדפדפן | רצף פעולות בדפדפן וגישה פרוגרמטית |
הגדרת דף המיתוג
כדי להגדיר את דף המיתוג המותאם אישית באמצעות מסוף Google Cloud :
נכנסים לדף Branding של OAuth במסוף Google Cloud :
לוחצים על שנתחיל?
בקטע App name, מזינים את שם האפליקציה שיוצג במסך ההסכמה.
בקטע User support email (כתובת אימייל לתמיכה במשתמשים), מזינים את כתובת האימייל של האדמין לתמיכה.
בקטע קהל, בוחרים באפשרות פנימי כדי להגביל את הגישה למשתמשים בארגון, או באפשרות חיצוני כדי לאפשר גישה למשתמשים מחוץ לארגון.
בקטע פרטים ליצירת קשר, מזינים את כתובת האימייל של האדמין שאליו אפשר לפנות לגבי האפליקציות שמוגנות על ידי לקוחות OAuth. ההגדרה של לקוחות OAuth מתבצעת בשלב מאוחר יותר.
כדי ליצור את הגדרת ה-OAuth, לוחצים על Create (יצירה).
הגדרת לקוחות OAuth בהתאמה אישית ב-IAP
בקטע הזה מוסבר איך להגדיר לקוחות OAuth מותאמים אישית ב-IAP.
יצירת לקוח OAuth בהתאמה אישית
בקטע הזה מוסבר איך ליצור לקוחות OAuth בהתאמה אישית באמצעות מסוףGoogle Cloud . אפשר להגדיר לקוחות OAuth מותאמים אישית של IAP בכל רמה בהיררכיית המשאבים.
כדי ליצור לקוחות OAuth בהתאמה אישית בשביל משאב באמצעות Google Cloud המסוף, צריך לבצע את הפעולות הבאות:
נכנסים לדף IAP במסוף Google Cloud .
בכרטיסייה Applications (אפליקציות), ברשימת המשאבים, מוצאים את המשאב שרוצים להגדיר.
למשאבים ברמת הפרויקט:
יוצרים את לקוח OAuth באמצעות Google Cloud המסוף:
בעמודה פעולות, לוחצים על אפשרויות נוספות > הגדרות.
בתיבת הדו-שיח הגדרות, בוחרים באפשרות Custom OAuth (OAuth בהתאמה אישית).
אם לא הגדרתם מסך הסכמה, צריך לפעול באופן הבא:
לוחצים על הגדרת מסך ההסכמה.
פועלים לפי ההוראות להגדרת דף המיתוג שמופיעות בחלק הקודם של המסמך הזה.
בתיבת הדו-שיח של הגדרות IAP, לוחצים על יצירה אוטומטית של פרטי כניסה. IAP יוצר לקוח OAuth חדש וסוד לשימוש במשאב הזה. בשדה Authorized redirect URIs (כתובות URL מורשות להפניה אוטומטית) בפלטפורמת האימות של Google, יש רשומה בפורמט הבא:
https://iap.googleapis.com/v1/oauth/clientIds/CLIENT_ID:handleRedirect
כדי לגשת למזהה הלקוח ולסוד הלקוח, לוחצים על הורדת פרטי הכניסה. פרטי הכניסה נשמרים בקובץ בפורמט JSON. הקובץ מכיל פרטי כניסה רגישים לגישה למשאבים, ולכן חשוב לוודא שהקובץ מאובטח או נמחק.
כדי לשמור את הגדרות ה-OAuth של IAP ולהחיל את לקוח ה-OAuth על IAP, לוחצים על Save.
החלת לקוחות OAuth בהתאמה אישית על IAP
בקטע הזה מוסבר איך להחיל לקוחות OAuth על IAP. אפשר להשתמש בשיטה הזו במקום להחיל את הלקוחות ישירות בפלטפורמה.
כדי ליצור את לקוח ה-OAuth בהתאמה אישית, פועלים לפי ההוראות לשימוש במסוףGoogle Cloud שמופיעות בהמשך המאמר הזה.
החלת לקוח OAuth בהתאמה אישית.
gcloud
כדי להחיל את לקוח ה-OAuth המותאם אישית באמצעות ה-CLI של gcloud:
יוצרים קובץ YAML של הגדרות.
cat << EOF > iap-oauth.yaml accessSettings: oauthSettings: clientId: CLIENT_ID clientSecret: CLIENT_SECRET EOF
מחליפים את מה שכתוב בשדות הבאים:
-
CLIENT_ID: מזהה הלקוח מפרטי הכניסה של OAuth שיצרתם קודם. -
CLIENT_SECRET: סוד הלקוח מפרטי הכניסה של OAuth שיצרתם קודם.
-
כדי להגדיר את OAuth, מבצעים אחת מהפעולות הבאות:
- כדי להגדיר את הגדרות ה-OAuth ברמת הפרויקט, מריצים את הפקודה הבאה:
gcloud iap settings set iap-oauth.yaml
כדי להגדיר את ההגדרה ברמה אחרת בהיררכיית המשאבים, משתמשים באחד מהדגלים הבאים במקום בדגל
--project. הגדרת לקוחות OAuth בהתאמה אישית ברמה של היררכיית המשאבים מספקת את אותו מיתוג בהתאמה אישית לכל השירותים שפועלים באותה רמה.* <code>--folder=<var>FOLDER_ID</var></code> * <code>--organization=<var>ORGANIZATION_ID</var></code>- כדי להגדיר את התצורה בשירות ספציפי, מריצים את הפקודה הבאה:
gcloud iap settings set iap-oauth.yaml \ --project=PROJECT_ID \ --resource-type= RESOURCE_TYPE \ --region=REGION \ --service=SERVICE_NAME
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: המזהה של משאב הפרויקט. כדי להגדיר את ההגדרה ברמה אחרת, משתמשים באחד מהדגלים הבאים במקום בדגל--project:--folder=FOLDER_ID--organization=ORGANIZATION_ID
RESOURCE_TYPE: מחליפים באחד מסוגי המשאבים הבאים, בהתאם למשאב:app-enginebackend-servicescloud-runcomputefolderforwarding-ruleiap_weborganization
REGION: האזור שבו מפעילים את שירות Cloud Run.
SERVICE_NAME: השם של השירות.
Terraform
כדי להחיל את לקוח ה-OAuth המותאם אישית באמצעות Terraform, מבצעים את הפעולות הבאות:
resource "google_iap_settings" "iap_settings" { name = IAP_RESOURCE_NAME access_settings { oauth_settings { oauth_client_id = CLIENT_ID oauth_client_secret = CLIENT_SECRET } } }מחליפים את מה שכתוב בשדות הבאים:
-
IAP_RESOURCE_NAME: שם המשאב של משאבiap_settingsבשירות, בפורמט הבא:projects/PROJECT_NUMBER/iap_web/REGION/services/SERVICE_NAME -
CLIENT_ID: מזהה הלקוח מפרטי הכניסה של OAuth שיצרתם קודם -
CLIENT_SECRET: סוד הלקוח מפרטי הכניסה של OAuth שיצרתם קודם
API בארכיטקטורת REST
יוצרים קובץ JSON של ההגדרות.
cat << EOF > iap-oauth.json { "accessSettings": { "oauthSettings": { "clientId": "CLIENT_ID", "clientSecret": "CLIENT_SECRET" } } } EOF
מחליפים את מה שכתוב בשדות הבאים:
-
CLIENT_ID: מזהה הלקוח מפרטי הכניסה של OAuth שיצרתם קודם. -
CLIENT_SECRET: סוד הלקוח מפרטי הכניסה של OAuth שיצרתם קודם.
-
מחילים את קובץ ההגדרות.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/yaml" \ "https://iap.googleapis.com/v1/projects/cb-managed-ingress-demo/iap_web/forwarding_rule-us-central1/services/psc-fr:iapSettings?update_mask=iapSettings.accessSettings.oauthSettings.oauthClientId,iapSettings.accessSettings.oauthSettings.oauthClientSecret" \ -d @iap-oauth.json
כדי לבדוק שהאפליקציות האינטרנטיות שלכם מוגנות על ידי IAP באמצעות לקוחות OAuth, אפשר לעיין במאמר בנושא בדיקת הגישה.
הגדרה מדור קודם של לקוחות OAuth בהתאמה אישית במשאב
בקטעים הבאים מתוארות שיטות מדור קודם להגדרת לקוחות OAuth מותאמים אישית ב-IAP עבור סוגים מסוימים של משאבים. אם השתמשתם בשיטה שמתוארת בחלק הקודם של המסמך הזה, אתם יכולים לדלג על הקטע הזה.
App Engine
בקטע הזה מוסבר איך להפעיל לקוחות OAuth מותאמים אישית ב-App Engine.
gcloud
לפני שמגדירים את הפרויקט ואת הרכישות מתוך האפליקציה, צריך לוודא שיש לכם גרסה עדכנית של ה-CLI של gcloud. הוראות להתקנת ה-CLI של gcloud זמינות במאמר התקנת ה-CLI של gcloud.
-
כדי לבצע אימות, משתמשים ב-CLI של Google Cloud ומריצים את הפקודה הבאה.
gcloud auth login - כדי להיכנס, לוחצים על כתובת ה-URL שמופיעה.
- אחרי הכניסה לחשבון, מעתיקים את קוד האימות שמופיע ומדביקים אותו בשורת הפקודה.
-
מריצים את הפקודה הבאה כדי לציין את הפרויקט שמכיל את המשאב שרוצים להגן עליו באמצעות IAP.
gcloud config set project PROJECT_ID - פועלים לפי ההוראות במאמר בנושא יצירת לקוחות OAuth ל-IAP כדי להגדיר את מסך ההסכמה ל-OAuth וליצור את לקוח OAuth.
- שומרים את מזהה הלקוח ואת הסוד של לקוח OAuth.
-
כדי להפעיל את IAP, מריצים את הפקודה הבאה.
gcloud iap web enable \ --oauth2-client-id=CLIENT_ID \ --oauth2-client-secret=CLIENT_SECRET \ --resource-type=app-engine
אחרי שמפעילים את IAP, אפשר להשתמש ב-CLI של gcloud כדי לשנות את מדיניות הגישה של IAP באמצעות תפקיד ה-IAM roles/iap.httpsResourceAccessor. מידע נוסף על ניהול תפקידים והרשאות
API
פועלים לפי ההוראות במאמר יצירת לקוחות OAuth ל-IAP כדי להגדיר את מסך ההסכמה ל-OAuth וליצור את לקוח OAuth.
שומרים את מזהה הלקוח ואת הסוד של לקוח OAuth.
מריצים את הפקודה הבאה כדי להכין קובץ
settings.json.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret":" CLIENT_SECRET" } } EOFמריצים את הפקודה הבאה כדי להפעיל את IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
אחרי שמפעילים את IAP, אפשר להשתמש ב-Google Cloud CLI כדי לשנות את מדיניות הגישה של IAP באמצעות תפקיד ה-IAM roles/iap.httpsResourceAccessor. מידע נוסף על ניהול תפקידים והרשאות
GKE
בקטע הזה מוסבר איך להפעיל לקוחות OAuth בהתאמה אישית ב-GKE.
הגדרת BackendConfig
אם אתם מריצים אשכולות GKE בגרסה 1.24 ואילך, אתם יכולים להגדיר IAP ו-GKE באמצעות Kubernetes Gateway API. הוראות מפורטות מופיעות במאמר הגדרת IAP.
פועלים לפי ההוראות במאמר יצירת לקוחות OAuth ל-IAP כדי להגדיר את מסך ההסכמה ל-OAuth וליצור את לקוח OAuth.
יוצרים סוד ב-Kubernetes כדי לעטוף את לקוח OAuth.
מחליפים את מה שכתוב בשדות הבאים:kubectl create secret generic MY_SECRET --from-literal=client_id=CLIENT_ID \ --from-literal=client_secret=CLIENT_SECRET
-
MY_SECRET: השם של הסוד שרוצים ליצור -
CLIENT_ID: מזהה הלקוח ב-OAuth -
CLIENT_SECRET: סוד הלקוח ב-OAuth
אמור להתקבל אישור, כמו הפלט הבא, שהסוד נוצר בהצלחה:
secret "MY_SECRET" created
-
מוסיפים את פרטי הכניסה של OAuth ל-BackendConfig.
apiVersion: cloud.google.com/v1 kind: BackendConfig metadata: name: CONFIG_DEFAULT namespace: my-namespace spec: iap: enabled: true oauthclientCredentials: secretName: MY_SECRETמפעילים את IAP על ידי שיוך של יציאות שירות ל-BackendConfig. איך משייכים BackendConfig ל-Ingress אחת הדרכים ליצור את השיוך הזה היא להגדיר את כל היציאות של השירות כברירת מחדל ל-BackendConfig. כדי לעשות את זה, מוסיפים את ההערה הבאה למשאב Service:
metadata: annotations: beta.cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}}'
אחרי שמפעילים את IAP, אפשר להשתמש ב-CLI של gcloud כדי לשנות את מדיניות הגישה של IAP באמצעות תפקיד ה-IAM roles/iap.httpsResourceAccessor. מידע נוסף על ניהול תפקידים והרשאות
פתרון בעיות
אם secretName שאליו התייחסתם לא קיים או שהוא לא בנוי בצורה נכונה, תוצג אחת מהודעות השגיאה הבאות:
BackendConfig default/config-default is not valid: error retrieving secret "foo": secrets "foo" not found.כדי לפתור את השגיאה הזו, צריך לוודא שיצרתם את ה-Secret של Kubernetes בצורה נכונה, כמו שמתואר בשלב 2.BackendConfig default/config-default is not valid: secret "foo" missing client_secret data.כדי לפתור את השגיאה הזו, צריך לוודא שיצרתם את פרטי הכניסה של OAuth בצורה נכונה. בנוסף, חשוב לוודא שהפניתם למפתחות הנכונים שלclient_idושלclient_secret.
שירות לקצה העורפי של מאזן עומסים
בקטע הזה מוסבר למשתמשים ב-Compute Engine וב-Cloud Run איך להגדיר לקוחות OAuth ב-IAP עבור שירות הקצה העורפי של מאזן העומסים.
gcloud
לפני שמגדירים את הפרויקט ואת הרכישות מתוך האפליקציה, צריך לוודא שיש לכם גרסה עדכנית של ה-CLI של gcloud. הוראות להתקנת ה-CLI של gcloud מופיעות במאמר התקנת ה-CLI של gcloud.
-
כדי לבצע אימות, משתמשים ב-CLI של Google Cloud ומריצים את הפקודה הבאה.
gcloud auth login - כדי להיכנס, לוחצים על כתובת ה-URL שמופיעה.
- אחרי הכניסה לחשבון, מעתיקים את קוד האימות שמופיע ומדביקים אותו בשורת הפקודה.
-
מריצים את הפקודה הבאה כדי לציין את הפרויקט שמכיל את המשאב שרוצים להגן עליו באמצעות IAP.
gcloud config set project PROJECT_ID
- פועלים לפי ההוראות במאמר יצירה של לקוחות OAuth ל-IAP כדי להגדיר את מסך ההסכמה ל-OAuth וליצור את לקוח OAuth.
- שומרים את מזהה הלקוח ואת הסוד של לקוח OAuth.
-
כדי להפעיל את IAP, מריצים את הפקודה בהיקף גלובלי או אזורי.
היקף גלובלי היקף אזוריgcloud compute backend-services update BACKEND_SERVICE_NAME \ --global \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRETgcloud compute backend-services update BACKEND_SERVICE_NAME \ --region REGION_NAME \ --iap=enabled,oauth2-client-id=CLIENT_ID,oauth2-client-secret=CLIENT_SECRET
אחרי שמפעילים את IAP, אפשר להשתמש ב-CLI של gcloud כדי לשנות את מדיניות הגישה של IAP באמצעות תפקיד ה-IAM roles/iap.httpsResourceAccessor. מידע נוסף על ניהול תפקידים והרשאות
API
פועלים לפי ההוראות במאמר יצירת לקוחות OAuth ל-IAP כדי להגדיר את מסך ההסכמה ל-OAuth וליצור את לקוח OAuth.
שומרים את מזהה הלקוח ואת הסוד של לקוח OAuth.
מריצים את הפקודה הבאה כדי להכין קובץ
settings.json.cat << EOF > settings.json { "iap": { "enabled": true, "oauth2ClientId": "CLIENT_ID", "oauth2ClientSecret": "CLIENT_SECRET" } } EOFמריצים את הפקודה הבאה כדי להפעיל את IAP.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
אחרי שמפעילים את IAP, אפשר להשתמש ב-CLI של gcloud כדי לשנות את מדיניות הגישה של IAP באמצעות תפקיד ה-IAM roles/iap.httpsResourceAccessor. מידע נוסף על ניהול תפקידים והרשאות
בדיקת גישה
אחרי שמגדירים את לקוח ה-OAuth המותאם אישית, אפשר לבדוק ש-IAP משתמש בו כדי להגן על השירות. לשם כך:
בדף IAP, בכרטיסייה Applications (אפליקציות), אפשר לראות את האפליקציות שמנוהלות על ידי IAP.
ניגשים לכתובת ה-URL של אחת מהאפליקציות. אם זו הפעם הראשונה שאתם ניגשים לאפליקציה מאז שהגדרתם את מסך ההסכמה, יוצג לכם מסך ההסכמה שהגדרתם קודם.