ב-Cloud Run אפשר להגן על עומסי עבודה פנימיים תוך חשיפת תכונות שפונות ללקוח בארכיטקטורה מרובת שירותים. במדריך הזה תיצרו אפליקציה מאובטחת עם שני שירותים, שכוללת עורך 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). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (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) - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer) - אדמין באחסון (
roles/storage.admin) - אדמין של מאגר Artifact Registry (
roles/artifactregistry.repoAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
הגדרת ברירות המחדל של ה-CLI של gcloud
כדי להגדיר את Google Cloud CLI עם ברירות מחדל לשירות Cloud Run:
מגדירים את פרויקט ברירת המחדל:
gcloud config set project PROJECT_ID
מחליפים את PROJECT_ID בשם הפרויקט שיצרתם בשביל המדריך הזה.
מגדירים את Google Cloud CLI לאזור שבחרתם:
gcloud config set run/region REGION
מחליפים את REGION באזור הנתמך של Cloud Run לבחירתכם.
מיקומים של Cloud Run
Cloud Run הוא שירות אזורי, כלומר התשתית שמפעילה את שירותי Cloud Run נמצאת באזור ספציפי ומנוהלת על ידי Google, כך שהיא זמינה באופן יתיר בכל האזורים באותו אזור.
הגורמים העיקריים לבחירת האזור שבו יפעלו שירותי Cloud Run הם עמידה בדרישות של זמן אחזור, זמינות או עמידות.
בדרך כלל אפשר לבחור את האזור הכי קרוב למשתמשים, אבל כדאי להביא בחשבון את המיקום של המוצרים Google Cloudהאחרים שמשמשים את שירות Cloud Run.
שימוש במוצרי Google Cloud ביחד בכמה מיקומים יכול להשפיע על זמן האחזור של השירות וגם על העלות.
אפשר להשתמש ב-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(קולומבוס)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
מנקודת המבט של ממשק המשתמש, לשירות Markdown יש את מפרט ה-API הבא:
- נקודת קצה אחת ב-
/ - מצפה לבקשות POST
- גוף בקשת ה-POST הוא טקסט ב-Markdown
כדאי לעיין בכל הקוד כדי לבדוק אם יש בעיות אבטחה, או פשוט כדי לקבל מידע נוסף על הקוד על ידי עיון בספרייה ./renderer/. שימו לב שהמדריך לא מסביר את קוד הטרנספורמציה של Markdown.
השקת שירות רינדור פרטי של Markdown
כדי להעביר את הקוד, יוצרים אותו באמצעות 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 באזור שבו רוצים להשתמש במאגר Artifact Registry. Google Cloud
מריצים את הפקודה הבאה כדי ליצור את הקונטיינר ולפרסם אותו ב-Artifact Registry.
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט ב- Google Cloud , ו-
rendererהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעת SUCCESS עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב לפי הצורך.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט ב- Google Cloud , ו-
rendererהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעת SUCCESS עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב לפי הצורך.
המשך
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט ב- Google Cloud , ו-
rendererהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעת SUCCESS עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב לפי הצורך.
Java
בדוגמה הזו משתמשים ב-Jib כדי ליצור קובצי אימג' של Docker באמצעות כלי Java נפוצים. Jib מבצע אופטימיזציה של גרסאות build של קונטיינרים בלי צורך בקובץ Docker או בהתקנה של 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הוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעת SUCCESS עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-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
ה-method new_request יוצרת בקשות מאומתות לשירותים פרטיים.
הוא משתמש בשרת המטא-נתונים של Google Cloud בסביבת Cloud Run כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-HTTP כחלק מכותרת Authorization.
בסביבות אחרות, new_request מבקש אסימון זהות מהשרתים של Google באמצעות אימות עם Application Default Credentials.
מנתחים את ה-Markdown מ-JSON ושולחים אותו לשירות Renderer כדי להמיר אותו ל-HTML.
המשך
RenderService יוצר בקשות מאומתות לשירותים פרטיים. הוא משתמש בשרת המטא-נתונים של Google Cloud בסביבת Cloud Run כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-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הוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעת SUCCESS עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Container Registry ואפשר להשתמש בה שוב לפי הצורך.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
כאשר PROJECT_ID הוא מזהה הפרויקט ב- Google Cloud , ו-
editorהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעת SUCCESS עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב לפי הצורך.
המשך
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
כאשר PROJECT_ID הוא מזהה הפרויקט ב- Google Cloud , ו-
editorהוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעת SUCCESS עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר להשתמש בה שוב לפי הצורך.
Java
בדוגמה הזו משתמשים ב-Jib כדי ליצור קובצי אימג' של Docker באמצעות כלי Java נפוצים. Jib מבצע אופטימיזציה של גרסאות build של קונטיינרים בלי צורך בקובץ Docker או בהתקנה של 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הוא השם שרוצים לתת לשירות.אם הפעולה תצליח, תופיע הודעת SUCCESS עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-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 .
מסירים את הגדרות ברירת המחדל של Google Cloud CLI שהוספתם במהלך ההגדרה של המדריך.
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 מוסבר איך להשתמש במיקרו-שירותים אסינכרוניים מאובטחים.