במדריך הזה נסביר איך ליצור אפליקציה מאובטחת עם שני שירותים שפועלת ב-Cloud Run. האפליקציה הזו היא עורך Markdown שכולל שירות ציבורי של 'קצה קדמי' שכל אחד יכול להשתמש בו כדי לכתוב טקסט ב-Markdown, ושירות פרטי של 'קצה עורפי' שמציג טקסט ב-Markdown כ-HTML.
השירות לקצה העורפי הוא פרטי, והוא משתמש בתכונה המובנית של Cloud Run, אימות שירות לשירות מבוסס-IAM, שמגבילה את האפשרות להפעיל את השירות. שני השירותים מבוססים על העיקרון של הרשאות מינימליות, כך שאין להם גישה לשאר חלקי Google Cloud , אלא אם יש בכך צורך.
מגבלות או מטרות שלא נכללות במדריך הזה
במדריך הזה לא מוצג אימות משתמשי קצה, שמתבצע באמצעות Identity Platform או אימות ב-Firebase כדי ליצור אסימונים מזהים של משתמשים ולאמת את הזהויות שלהם באופן ידני. מידע נוסף על אימות משתמשי קצה זמין במדריך Cloud Run בנושא אימות משתמשי קצה.
במדריך הזה לא מוצג שילוב של שיטות אימות שמבוססות על IAM ושיטות אימות שמבוססות על טוקן מזהה, כי זה לא נתמך.
מטרות
- יוצרים חשבון שירות ייעודי עם הרשאות מינימליות לאימות בין שירותים ולגישה לשירותים לשאר Google Cloud.
- כתיבה, פיתוח ופריסה של שני שירותים ב-Cloud Run שיוצרים אינטראקציה ביניהם.
- שליחת בקשות בין שירות Cloud Run ציבורי לשירות Cloud Run פרטי.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
מפעילים את Cloud Run API, אם הוא עדיין לא מופעל.
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, נדרשת ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים- מתקינים ומפעילים את ה-CLI של gcloud.
- כדי לנסות את השירות, צריך להתקין את curl
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להשלמת המדריך, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- עריכה ב-Cloud Build (
roles/cloudbuild.builds.editor) - אדמין ב-Cloud Run (
roles/run.admin) - יצירת חשבונות שירות (
roles/iam.serviceAccountCreator) - אדמין IAM בפרויקט (
roles/resourcemanager.projectIamAdmin) - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) - צרכן שימוש בשירות (
roles/serviceusage.serviceUsageConsumer) - אדמין באחסון (
roles/storage.admin) - אדמין של Artifact Registry Repository (
roles/artifactregistry.repoAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הגדרת ברירות מחדל ב-gcloud
כדי להגדיר את gcloud עם ערכי ברירת מחדל לשירות Cloud Run:
מגדירים את פרויקט ברירת המחדל:
gcloud config set project PROJECT_ID
מחליפים את PROJECT_ID בשם הפרויקט שיצרתם לצורך המדריך הזה.
מגדירים את gcloud לאזור שבחרתם:
gcloud config set run/region REGION
מחליפים את REGION באזור נתמך ב-Cloud Run לבחירתכם.
מיקומי Cloud Run
Cloud Run הוא שירות אזורי, כלומר התשתית שמריצה את שירותי Cloud Run ממוקמת באזור ספציפי ומנוהלת על ידי Google כך שתהיה זמינה באופן יתירתי בכל התחומים באותו אזור.
הקריטריונים העיקריים לבחירת האזור שבו יפעלו שירותי Cloud Run הם זמן האחזור, הזמינות או העמידות שנדרשים לכם.
בדרך כלל אפשר לבחור את האזור הקרוב ביותר למשתמשים, אבל כדאי לקחת בחשבון את המיקום של מוצרים Google Cloud
אחרים שבהם נעשה שימוש בשירות Cloud Run.
השימוש במוצרים של Google Cloud Google ביחד בכמה מיקומים יכול להשפיע על זמן האחזור ועל העלות של השירות.
Cloud Run זמין באזורים הבאים:
בכפוף לתמחור ברמה 1
asia-east1(טייוואן)asia-northeast1(טוקיו)-
asia-northeast2(אוסקה) asia-south1(מומבאי, הודו)-
asia-southeast3(בנגקוק) europe-north1(פינלנד)רמה נמוכה של CO2
europe-north2(שטוקהולם)רמה נמוכה של CO2
europe-southwest1(מדריד)רמה נמוכה של CO2
europe-west1(בלגיה)רמה נמוכה של CO2
europe-west4(הולנד)רמה נמוכה של CO2
europe-west8(מילאנו)רמה נמוכה של CO2
europe-west9(פריז)רמה נמוכה של CO2
me-west1(תל אביב)northamerica-south1(מקסיקו)us-central1(אייווה)רמה נמוכה של CO2
us-east1(דרום קרוליינה)-
us-east4(צפון וירג'יניה) us-east5(Columbus)us-south1(דאלאס)רמה נמוכה של CO2
us-west1(אורגון)רמה נמוכה של CO2
בכפוף לתמחור ברמה 2
africa-south1(יוהנסבורג)asia-east2(הונג קונג)asia-northeast3(סיאול, קוריאה הדרומית)asia-southeast1(סינגפור)asia-southeast2(ג'קרטה)asia-south2(דלהי, הודו)-
australia-southeast1(סידני) -
australia-southeast2(מלבורן) europe-central2(ורשה, פולין)רמה נמוכה של CO2
-
europe-west10(ברלין) europe-west12(טורינו)רמה נמוכה של CO2
europe-west2(לונדון, בריטניה)רמה נמוכה של CO2
-
europe-west3(פרנקפורט, גרמניה) europe-west6(ציריך, שווייץ)רמה נמוכה של CO2
-
me-central1(דוחה) -
me-central2(דמאם) northamerica-northeast1(מונטריאול)רמה נמוכה של CO2
northamerica-northeast2(טורונטו)רמה נמוכה של CO2
southamerica-east1(סאו פאולו, ברזיל)רמה נמוכה של CO2
southamerica-west1(סנטיאגו, צ'ילה)רמה נמוכה של CO2
-
us-west2(לוס אנג'לס) -
us-west3(סולט לייק סיטי) -
us-west4(לאס וגאס)
אם כבר יצרתם שירות Cloud Run, תוכלו לראות את האזור בלוח הבקרה של Cloud Run בGoogle Cloud מסוף.
אחזור של דוגמת הקוד
כדי לאחזר את דוגמת קוד לשימוש:
משכפלים את מאגר האפליקציות לדוגמה אל Cloud Shell או אל המכונה המקומית:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
אפשרות נוספת היא להוריד את קובץ הדוגמה כקובץ ZIP ולחלץ אותו.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
אפשרות נוספת היא להוריד את קובץ הדוגמה כקובץ ZIP ולחלץ אותו.
המשך
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
אפשרות נוספת היא להוריד את קובץ הדוגמה כקובץ ZIP ולחלץ אותו.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
אפשרות נוספת היא להוריד את קובץ הדוגמה כקובץ ZIP ולחלץ אותו.
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
אפשרות נוספת היא להוריד את קובץ הדוגמה כקובץ ZIP ולחלץ אותו.
עוברים לספרייה שמכילה את הקוד לדוגמה של Cloud Run:
Node.js
cd nodejs-docs-samples/run/markdown-preview/
Python
cd python-docs-samples/run/markdown-preview/
Go
cd golang-samples/run/markdown-preview/
Java
cd java-docs-samples/run/markdown-preview/
C#
cd dotnet-docs-samples/run/markdown-preview/
בדיקת שירות העיבוד הפרטי של Markdown
מנקודת המבט של חזית האתר, יש מפרט API פשוט לשירות Markdown:
- נקודת קצה אחת בכתובת
/ - מצפה לקבל בקשות POST
- גוף בקשת ה-POST הוא טקסט ב-Markdown
כדאי לבדוק את כל הקוד כדי לוודא שאין בו בעיות אבטחה, או פשוט כדי לקבל מידע נוסף עליו על ידי עיון בספרייה ./renderer/. הערה: קוד הטרנספורמציה של Markdown לא מוסבר במדריך.
הפעלת שירות פרטי לרינדור Markdown
כדי לשלוח את הקוד, צריך לבצע build באמצעות Cloud Build, להעלות ל-Artifact Registry ולפרוס ל-Cloud Run:
עוברים לספרייה
renderer:Node.js
cd renderer/
Python
cd renderer/
Go
cd renderer/
Java
cd renderer/
C#
cd Samples.Run.MarkdownPreview.Renderer/
יוצרים Artifact Registry:
gcloud artifacts repositories create REPOSITORY \ --repository-format docker \ --location REGION
מחליפים את:
- REPOSITORY בשם ייחודי למאגר. לכל מיקום של מאגר בפרויקט, שמות המאגרים צריכים להיות ייחודיים.
- REGION עם Google Cloud האזור שבו ישמש מאגר Artifact Registry.
מריצים את הפקודה הבאה כדי ליצור את הקונטיינר ולפרסם אותו ב-Artifact Registry.
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט Google Cloud , ו-
rendererהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב אם צריך.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט Google Cloud , ו-
rendererהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב אם צריך.
המשך
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט Google Cloud , ו-
rendererהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב אם צריך.
Java
בדוגמה הזו נעשה שימוש ב-Jib כדי ליצור תמונות Docker באמצעות כלים נפוצים של Java. Jib מבצע אופטימיזציה של בניית קונטיינרים בלי שצריך קובץ Dockerfile או ש-Docker מותקן. מידע נוסף על יצירת מאגרי Java באמצעות Jib
משתמשים בכלי העזר לפרטי כניסה של gcloud כדי לתת ל-Docker הרשאה להעביר בדחיפה אל Artifact Registry.
gcloud auth configure-docker
משתמשים בתוסף Jib Maven כדי ליצור את הקונטיינר ולהעביר אותו בדחיפה ל-Artifact Registry.
mvn compile jib:build -Dimage=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט Google Cloud , ו-
rendererהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תוצג ההודעה BUILD SUCCESS. התמונה מאוחסנת ב-Artifact Registry ואפשר לעשות בה שימוש חוזר לפי הצורך.
C#
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט Google Cloud , ו-
rendererהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב אם צריך.
פריסה כשירות פרטי עם גישה מוגבלת.
Cloud Run מספק תכונות של בקרת גישה וזהות שירות שמוכנות לשימוש. בקרת הגישה מספקת שכבת אימות שמגבילה את היכולת של משתמשים ושירותים אחרים להפעיל את השירות. זהות שירות מאפשרת להגביל את הגישה של השירות למשאבים אחרים שלGoogle Cloud על ידי יצירת חשבון שירות ייעודי עם הרשאות מוגבלות.
יוצרים חשבון שירות שישמש כ'זהות המחשוב' של שירות העיבוד. כברירת מחדל, אין לו הרשאות מלבד חברות בפרויקט.
שורת הפקודה
gcloud iam service-accounts create renderer-identity
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
שירות העיבוד של Markdown לא משולב ישירות עם שום דבר אחר ב- Google Cloud. לא נדרשות הרשאות נוספות.
פריסה עם חשבון השירות
renderer-identityודחיית גישה לא מאומתת.שורת הפקודה
gcloud run deploy renderer \ --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer \ --service-account renderer-identity \ --no-allow-unauthenticated
Cloud Run יכול להשתמש בקיצור של שם חשבון השירות במקום בכתובת האימייל המלאה אם חשבון השירות הוא חלק מאותו פרויקט.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
ניסיון בשירות הפרטי לרינדור Markdown
אי אפשר לטעון שירותים פרטיים ישירות בדפדפן אינטרנט. במקום זאת, צריך להשתמש ב-curlאו בכלי דומה של CLI לבקשות HTTP שמאפשר להוסיף כותרת Authorization.
כדי לשלוח טקסט מודגש לשירות ולראות איך הוא ממיר את הכוכביות של Markdown לתגי HTML <strong>:
מעתיקים את כתובת ה-URL מהפלט של הפריסה.
משתמשים בפקודה
gcloudכדי ליצור אסימון זהות מיוחד לאימות, שמתאים רק לפיתוח:TOKEN=$(gcloud auth print-identity-token)
יוצרים בקשת curl שמעבירה את טקסט ה-Markdown הגולמי כפרמטר של מחרוזת שאילתה עם escape של כתובת URL:
curl -H "Authorization: Bearer $TOKEN" \ -H 'Content-Type: text/plain' \ -d '**Hello Bold Text**' \ SERVICE_URL
מחליפים את SERVICE_URL בכתובת ה-URL שמופיעה אחרי פריסת שירות העיבוד של Markdown.
התשובה צריכה להיות קטע HTML:
<strong>Hello Bold Text</strong>
בדיקת השילוב בין כלי העריכה לשירותי העיבוד
שירות העריכה מספק ממשק משתמש פשוט להזנת טקסט ומרחב להצגת תצוגה מקדימה של ה-HTML. לפני שממשיכים, צריך לבדוק את הקוד שאוחזר קודם על ידי פתיחת הספרייה ./editor/.
בשלב הבא, נבדוק את קטעי הקוד הבאים שמשלבים את שני השירותים בצורה מאובטחת.
Node.js
מודול render.js יוצר בקשות מאומתות לשירות העיבוד הפרטי. היא משתמשת בשרת Google Cloud המטא-נתונים בסביבת
Cloud Run כדי ליצור אסימון זהות ולהוסיף
אותו לבקשת ה-HTTP כחלק מכותרת Authorization.
בסביבות אחרות, render.js משתמש בApplication Default Credentials כדי לבקש אסימון מהשרתים של Google.
מנתחים את ה-Markdown מ-JSON ושולחים אותו לשירות Renderer כדי להפוך אותו ל-HTML.
Python
השיטה new_request יוצרת בקשות מאומתות לשירותים פרטיים.
הוא משתמש בשרת המטא-נתונים בסביבת Google Cloud Cloud Run
כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-HTTP
כחלק מכותרת Authorization.
בסביבות אחרות, new_request מבקש אסימון זהות מהשרתים של Google על ידי אימות באמצעות Application Default Credentials.
מנתחים את ה-Markdown מ-JSON ושולחים אותו לשירות Renderer כדי להפוך אותו ל-HTML.
המשך
RenderService יוצר בקשות מאומתות לשירותים פרטיים. היא משתמשת בשרת המטא-נתונים בסביבת Cloud Run Google Cloud כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-HTTP כחלק מכותרת
Authorization.
בסביבות אחרות, RenderService מבקש אסימון זהות מהשרתים של Google על ידי אימות באמצעות Application Default Credentials.
הבקשה נשלחת לשירות Renderer אחרי שמוסיפים את טקסט ה-Markdown שרוצים להפוך ל-HTML. הטיפול בשגיאות בתגובה מאפשר להבחין בין בעיות בתקשורת לבין בעיות בפונקציונליות של העיבוד.
Java
makeAuthenticatedRequest יוצר בקשות מאומתות לשירותים פרטיים. הוא משתמש בשרת המטא-נתונים Google Cloud בסביבת Cloud Run כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-HTTP כחלק מכותרת Authorization.
בסביבות אחרות, makeAuthenticatedRequest מבקש אסימון זהות משרתי Google על ידי אימות באמצעות Application Default Credentials.
מנתחים את ה-Markdown מ-JSON ושולחים אותו לשירות Renderer כדי להפוך אותו ל-HTML.
C#
GetAuthenticatedPostResponse יוצר בקשות מאומתות לשירותים פרטיים. הוא משתמש בשרת המטא-נתונים Google Cloud בסביבת Cloud Run כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-HTTP כחלק מכותרת Authorization.
בסביבות אחרות, GetAuthenticatedPostResponse מבקש אסימון זהות משרתי Google על ידי אימות באמצעות Application Default Credentials.
מנתחים את ה-Markdown מ-JSON ושולחים אותו לשירות Renderer כדי להפוך אותו ל-HTML.
השקת שירות העריכה הציבורי
כדי ליצור ולפרוס את הקוד:
עוברים לספרייה
editor:Node.js
cd ../editor
Python
cd ../editor
Go
cd ../editor
Java
cd ../editor
C#
cd ../Samples.Run.MarkdownPreview.Editor/
מריצים את הפקודה הבאה כדי ליצור את הקונטיינר ולפרסם אותו ב-Artifact Registry.
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
כאשר PROJECT_ID הוא מזהה הפרויקט Google Cloud , ו-
editorהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Container Registry ואפשר לעשות בה שימוש חוזר אם צריך.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
כאשר PROJECT_ID הוא מזהה הפרויקט Google Cloud , ו-
editorהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב אם צריך.
המשך
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
כאשר PROJECT_ID הוא מזהה הפרויקט Google Cloud , ו-
editorהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב אם צריך.
Java
בדוגמה הזו נעשה שימוש ב-Jib כדי ליצור תמונות Docker באמצעות כלים נפוצים של Java. Jib מבצע אופטימיזציה של בניית קונטיינרים בלי שצריך קובץ Dockerfile או ש-Docker מותקן. מידע נוסף על יצירת מאגרי Java באמצעות Jibmvn compile jib:build -Dimage=REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
כאשר PROJECT_ID הוא מזהה הפרויקט Google Cloud , ו-
editorהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תוצג ההודעה BUILD SUCCESS. התמונה מאוחסנת ב-Artifact Registry ואפשר לעשות בה שימוש חוזר לפי הצורך.
C#
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
כאשר PROJECT_ID הוא מזהה הפרויקט Google Cloud , ו-
editorהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב אם צריך.
פריסה כשירות פרטי עם גישה מיוחדת לשירות העיבוד.
יוצרים חשבון שירות שישמש כ "זהות מחשוב" של השירות הפרטי. כברירת מחדל, אין לו הרשאות מלבד חברות בפרויקט.
שורת הפקודה
gcloud iam service-accounts create editor-identity
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
שירות העריכה לא צריך לקיים אינטראקציה עם שום דבר אחר ב- Google Cloud מלבד שירות העיבוד של Markdown.
נותנים גישה לזהות המחשוב
editor-identityכדי להפעיל את שירות העיבוד של Markdown. לכל שירות שמשתמש בזהות הזו כזהות מחשוב תהיה הרשאה כזו.שורת הפקודה
gcloud run services add-iam-policy-binding renderer \ --member serviceAccount:editor-identity@PROJECT_ID.iam.gserviceaccount.com \ --role roles/run.invoker
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מכיוון שההרשאה הזו ניתנת לתפקיד המפעיל בהקשר של שירות העיבוד, שירות העיבוד הוא שירות Cloud Run הפרטי היחיד שהעורך יכול להפעיל.
פריסה עם חשבון השירות
editor-identityומתן גישה ציבורית לא מאומתת.שורת הפקודה
gcloud run deploy editor --image REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor \ --service-account editor-identity \ --set-env-vars EDITOR_UPSTREAM_RENDER_URL=SERVICE_URL \ --allow-unauthenticated
מחליפים את:
- PROJECT_ID במזהה הפרויקט
- SERVICE_URL עם כתובת ה-URL שסופקה אחרי פריסת שירות העיבוד של Markdown.
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
פורסים את שירות העריכה:
נותנים ל-
allUsersהרשאה להפעיל את השירות:
הסבר על תנועת HTTPS
יש שלוש בקשות HTTP שמעורבות בעיבוד של Markdown באמצעות השירותים האלה.
editor-identity מפעיל את שירות העיבוד. ל-editor-identity ול-renderer-identity יש הרשאות מוגבלות, כך שלניצול לרעה של פרצות אבטחה או להחדרת קוד יש גישה מוגבלת למשאבי Google Cloud אחרים.
אני רוצה לנסות
כדי לנסות את האפליקציה המלאה עם שני השירותים:
בדפדפן, עוברים לכתובת ה-URL שצוינה בשלב הפריסה שלמעלה.
נסו לערוך את טקסט ה-Markdown בצד ימין וללחוץ על הלחצן כדי לראות תצוגה מקדימה שלו בצד שמאל.
הוא אמור להיראות כך:
אם תבחרו להמשיך לפתח את השירותים האלה, חשוב לזכור שיש להם גישה מוגבלת לניהול זהויות והרשאות גישה (IAM) לשאר השירותים של Google Cloud , ויהיה צורך להקצות להם תפקידי IAM נוספים כדי לגשת לשירותים רבים אחרים.
הסרת המשאבים
אם יצרתם פרויקט חדש בשביל המדריך הזה, תמחקו את הפרויקט. אם השתמשתם בפרויקט קיים ואתם רוצים לשמור אותו בלי השינויים שנוספו במדריך הזה, תצטרכו למחוק את המשאבים שנוצרו לצורך המדריך.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך הזה.
כדי למחוק את הפרויקט:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת משאבים של מדריך
מוחקים את שירותי Cloud Run שפרסתם במדריך הזה:
gcloud
gcloud run services delete editor gcloud run services delete renderer
אפשר גם למחוק שירותים של Cloud Run מGoogle Cloud המסוף.
מסירים את הגדרות ברירת המחדל של gcloud שהוספתם במהלך הגדרת המדריך.
gcloud config unset run/regionמסירים את הגדרת הפרויקט:
gcloud config unset projectמחיקה של Google Cloud משאבים אחרים שנוצרו במדריך הזה:
- מחיקת קובץ אימג' של קונטיינר של כלי העריכה בשם
REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editorמ-Artifact Registry - מחיקת קובץ האימג' של קונטיינר העיבוד בשם
REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/rendererמ-Artifact Registry - מחיקת חשבון השירות של כלי העריכה
editor-identity@PROJECT_ID.iam.gserviceaccount.com - מחיקת חשבון השירות של הרינדור
renderer-identity@PROJECT_ID.iam.gserviceaccount.com
- מחיקת קובץ אימג' של קונטיינר של כלי העריכה בשם
המאמרים הבאים
- כדי לאבטח את הפרויקט עוד יותר, כדאי לעיין ברשימת המשימות שימוש מאובטח ב-IAM.
- הרחבת אפליקציית הדוגמה הזו כדי לעקוב אחרי השימוש ב-Markdown באמצעות מדדים מותאמים אישית של Cloud Monitoring
- בהדרכה בנושא Pub/Sub מוסבר על גישה למיקרו-שירותים אסינכרוניים ומאובטחים