במדריך הזה מוסבר איך לנהל שילובים של אפליקציות מבוססות-OAuth עםGoogle Cloud.
כדי לשלב אפליקציה שמבוססת על OAuth, מבצעים את הפעולות הבאות:
- יצירת לקוח OAuth
- יצירת פרטי כניסה של לקוח OAuth.
- בפרטי הכניסה של לקוח ה-OAuth, מאתרים את סוד הלקוח. במאמר סיכוני אבטחה ופתרונות אפשריים שקשורים ללקוח OAuth ולפרטי הכניסה מוסבר על הסיכונים שקשורים לאחסון של סוד הלקוח ולגישה אליו, ועל אסטרטגיות שיכולות לעזור לצמצם את הסיכונים האלה.
אחרי שתשלימו את השלבים האלה, לאפליקציה שמבוססת על OAuth תהיה גישה לGoogle Cloud מוצרים ולנתונים.
לפני שמתחילים
צריך להגדיר ארגון ב- Google Cloud .
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
צריך להגדיר מאגר זהויות של כוח עבודה וספק בארגון שבו תרשמו את אפליקציית OAuth. Microsoft Entra ID, Okta וספקי OIDC ו-SAML 2.0 אחרים.
התפקידים הנדרשים
כדי לקבל את ההרשאות שנדרשות לרישום אפליקציית OAuth בארגון, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין של לקוח OAuth ב-IAM (roles/iam.oauthClientAdmin) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
ניהול לקוחות OAuth
בקטע הזה מוסבר איך לנהל לקוחות OAuth.
יצירת לקוח OAuth
כדי ליצור לקוח OAuth:
gcloud
gcloud iam oauth-clients create APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global \
--client-type="CONFIDENTIAL_CLIENT" \
--display-name="My OAuth application" \
--description="An application registration for MyApp" \
--allowed-scopes="https://www.googleapis.com/auth/cloud-platform" \
--allowed-redirect-uris="REDIRECT_URI" \
--allowed-grant-types="authorization_code_grant"
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_ID: מזהה לקוח שמייצג את לקוח ה-OAuth הזה. PROJECT_ID: מזהה הפרויקט שבו יצרתם את מאגר הזהויות של כוח העבודה ואת הספק שלו. הפרויקט צריך להיווצר בארגון שבו נוצרו מאגר כוח העבודה והספק.-
REDIRECT_URI: ה-URI להפניה אוטומטית של אפליקציית OAuth, לדוגמהhttps://myapp.com/signin-callback.
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
-d "{ \
'allowedGrantTypes': ['AUTHORIZATION_CODE_GRANT'], \
'allowedRedirectUris': ['REDIRECT_URI'], \
'allowedScopes': ['https://www.googleapis.com/auth/cloud-platform'], \
'clientType': 'CONFIDENTIAL_CLIENT', \
'description': 'My OAuth client description', \
'disabled': false, \
'displayName': 'My OAuth client'}" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients\?oauthClientId\=APP_OAUTH_CLIENT_ID
מחליפים את מה שכתוב בשדות הבאים:
PROJECT_ID: מזהה הפרויקט שבו יצרתם את מאגר הזהויות של כוח העבודה ואת הספק שלו. הפרויקט צריך להיווצר בארגון שבו נוצרו מאגר כוח העבודה והספק.-
REDIRECT_URI: ה-URI להפניה אוטומטית של אפליקציית OAuth, לדוגמהhttps://myapp.com/signin-callback. -
APP_OAUTH_CLIENT_ID: מזהה לקוח שמייצג את לקוח ה-OAuth הזה.
אחרי שרושמים את האפליקציה, יוצרים את פרטי הכניסה של לקוח OAuth ומקבלים את הסוד שמשמש את אפליקציית OAuth לגישה אלGoogle Cloud.
הצגת רשימה של לקוחות OAuth
כדי להציג רשימה של לקוחות OAuth רשומים, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients list \
--project=PROJECT_ID \
--location=global
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients
מחליפים את PROJECT_ID במזהה הפרויקט שבו רשומים אפליקציות OAuth.
תיאור של לקוח OAuth
כדי לתאר לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients describe APP_OAUTH_CLIENT_ID \
--project PROJECT_ID \
--location global
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_ID: המזהה של לקוח OAuth שרוצים לתאר -
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: המזהה של לקוח OAuth שרוצים לתאר
עדכון לקוח OAuth
כדי לעדכן לקוח OAuth, מריצים את הפקודה הבאה.
gcloud
gcloud iam oauth-clients update APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global \
--allowed-redirect-uris="REDIRECT_URI"
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_ID: מזהה הלקוח של OAuth עבור לקוח OAuth שרוצים לעדכן -
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
REDIRECT_URI: ה-URI של ההפניה האוטומטית לאפליקציית OAuth
כדי לעדכן שדות אחרים, משתמשים בדגלים שמפורטים ב-gcloud iam oauth-clients update.
REST
curl -d'{"allowedRedirectUris":"REDIRECT_URI"}' \
-H "Content-Type: application/json" -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID?update_mask=allowed_redirect_uris
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח של OAuth עבור לקוח OAuth שרוצים לעדכן -
REDIRECT_URI: ה-URI של ההפניה לכתובת אחרת עבור לקוח OAuth
כדי לעדכן שדות אחרים, מגדירים את update_mask לשמות השדות שמופיעים בgcloud iam oauth-clients update.
מחיקת לקוח OAuth
כדי למחוק לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients delete APP_OAUTH_CLIENT_ID \
--project PROJECT_ID \
--location global
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth שרוצים למחוק -
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth
REST
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth שרוצים למחוק
ניהול פרטי כניסה של לקוח OAuth
בקטע הזה מוסבר איך לנהל את פרטי הכניסה של לקוח OAuth עבור לקוח OAuth.
יצירת פרטי כניסה של לקוח OAuth
כדי ליצור פרטי כניסה של לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients credentials create APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--display-name='My OAuth client credential' \
--location='global'
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_CREDENTIAL_ID: מזהה שמייצג את פרטי הכניסה של הלקוח -
APP_OAUTH_CLIENT_ID: מזהה לקוח OAuth שאפשר לקבל על ידי תיאור של אפליקציית לקוח OAuth רשומה
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
-d "{'disabled': false, 'displayName': 'My OAuth client credential'}" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials\?oauthClientCredentialId=APP_OAUTH_CLIENT_CREDENTIAL_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה לקוח OAuth שאפשר לקבל על ידי תיאור של אפליקציית לקוח OAuth רשומה -
APP_OAUTH_CLIENT_CREDENTIAL_ID: מזהה שמייצג את פרטי הכניסה של הלקוח
הצגת רשימה של פרטי כניסה של לקוח OAuth
כדי להציג רשימה של פרטי כניסה של לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients credentials list \
--oauth-client=APP_OAUTH_CLIENT_ID \
--project=PROJECT_ID \
--location=global
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_ID: מזהה לקוח OAuth שעבורו רוצים להציג את פרטי הכניסה -
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/$PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה לקוח OAuth שעבורו רוצים להציג את פרטי הכניסה
מתארים פרטי כניסה של לקוח OAuth
כדי לתאר פרטי כניסה של לקוח OAuth, מריצים את הפקודה הבאה. אפשר לבדוק את הפלט כדי לקבל את סוד הלקוח.
gcloud
gcloud iam oauth-clients credentials describe APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--location='global'
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_CREDENTIAL_ID: ה-URI של ההפניה לכתובת אחרת עבור לקוח OAuth -
APP_OAUTH_CLIENT_ID: מזהה לקוח OAuth שאפשר לקבל על ידי תיאור של רישום אפליקציית הלקוח
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_CREDENTIAL_ID: ה-URI של ההפניה לכתובת אחרת עבור לקוח OAuth -
APP_OAUTH_CLIENT_ID: מזהה לקוח OAuth שאפשר לקבל על ידי תיאור של רישום אפליקציית הלקוח
בפלט, clientSecret הוא סוד הלקוח. זהו הסוד שבו משתמשת אפליקציית OAuth כדי לגשת אל Google Cloud.
עדכון פרטי כניסה של לקוח OAuth
כדי לעדכן פרטי כניסה של לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
--client-id=APP_OAUTH_CLIENT_ID \
--display-name="My new credential name" \
--location=global
REST
curl -d'{"displayName":"My new credential name"}' -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=display_name
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_CREDENTIAL_ID: ה-URI של ההפניה לכתובת אחרת עבור לקוח OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח של OAuth שאפשר לקבל על ידי תיאור של רישום אפליקציית הלקוח
השבתה של פרטי כניסה של לקוח OAuth
כדי למחוק פרטי כניסה של לקוח OAuth, צריך להשבית אותם קודם. כדי להשבית את פרטי הכניסה של לקוח ה-OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--disabled \
--project=PROJECT_ID \
--location=global
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth -
APP_OAUTH_CLIENT_CREDENTIAL_ID: המזהה של פרטי הכניסה של הלקוח שרוצים להשבית
REST
curl -d'{"disabled":"true"}' \
-H "Content-Type: application/json" -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=disabled
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה הלקוח ב-OAuth -
APP_OAUTH_CLIENT_CREDENTIAL_ID: המזהה של פרטי הכניסה של הלקוח שרוצים להשבית
מחיקת פרטי כניסה של לקוח OAuth
כדי למחוק פרטי כניסה של לקוח OAuth, מריצים את הפקודה הבאה:
gcloud
gcloud iam oauth-clients credentials delete APP_OAUTH_CLIENT_CREDENTIAL_ID \
--project=PROJECT_ID \
--oauth-client=APP_OAUTH_CLIENT_ID \
--location=global
מחליפים את מה שכתוב בשדות הבאים:
-
APP_OAUTH_CLIENT_CREDENTIAL_ID: מזהה הלקוח ב-OAuth -
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה פרטי הכניסה של הלקוח
REST
curl -X DELETE \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שבו רשמתם את אפליקציית OAuth -
APP_OAUTH_CLIENT_ID: מזהה פרטי הכניסה של הלקוח -
APP_OAUTH_CLIENT_CREDENTIAL_ID: מזהה הלקוח ב-OAuth