במדריך הזה נסביר איך ליצור אפליקציה מאובטחת עם שני שירותים שפועלת ב-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, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים- מתקינים ומפעילים את ה-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 (
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 יחד בכמה מיקומים יכול להשפיע על זמן האחזור ועל העלות של השירות.
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(מילאנו)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(ורשה, פולין)-
europe-west10(Berlin) europe-west12(טורינו)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 עם האזור שבו יש להשתמש עבור מאגר Artifact Registry. Google Cloud
מריצים את הפקודה הבאה כדי ליצור את הקונטיינר ולפרסם אותו ב-Artifact Registry.
Node.js
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט שלכם, ו-
rendererהוא השם שאתם רוצים לתת לשירות. Google Cloudאם הפעולה תצליח, תוצג הודעה על הצלחה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר לעשות בה שימוש חוזר אם צריך.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט שלכם, ו-
rendererהוא השם שאתם רוצים לתת לשירות. Google Cloudאם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר לעשות בה שימוש חוזר אם צריך.
המשך
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט שלכם, ו-
rendererהוא השם שאתם רוצים לתת לשירות. Google Cloudאם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-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 הוא מזהה הפרויקט שלכם, ו-
rendererהוא השם שאתם רוצים לתת לשירות. Google Cloudאם הפעולה תצליח, תוצג ההודעה BUILD SUCCESS. התמונה מאוחסנת ב-Artifact Registry ואפשר לעשות בה שימוש חוזר אם צריך.
C#
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/renderer
כאשר PROJECT_ID הוא מזהה הפרויקט שלכם, ו-
rendererהוא השם שאתם רוצים לתת לשירות. Google Cloudאם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-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 יוצר בקשות מאומתות לשירות העיבוד הפרטי. הוא משתמש בשרת המטא-נתונים בסביבת Cloud Run כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-HTTP כחלק מכותרת Authorization. Google Cloud
בסביבות אחרות, render.js משתמש בApplication Default Credentials כדי לבקש אסימון מהשרתים של Google.
מנתחים את ה-Markdown מ-JSON ושולחים אותו לשירות Renderer כדי להפוך אותו ל-HTML.
Python
השיטה new_request יוצרת בקשות מאומתות לשירותים פרטיים.
היא משתמשת בשרת המטא-נתונים בסביבת Cloud Run כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-HTTP כחלק מכותרת Authorization. Google Cloud
בסביבות אחרות, new_request מבקש אסימון זהות מהשרתים של Google על ידי אימות באמצעות Application Default Credentials.
מנתחים את ה-Markdown מ-JSON ושולחים אותו לשירות Renderer כדי להפוך אותו ל-HTML.
המשך
RenderService יוצר בקשות מאומתות לשירותים פרטיים. הוא משתמש בשרת המטא-נתונים בסביבת Cloud Run כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-HTTP כחלק מכותרת Authorization. Google Cloud
בסביבות אחרות, RenderService מבקש אסימון זהות מהשרתים של Google על ידי אימות באמצעות Application Default Credentials.
הבקשה נשלחת לשירות Renderer אחרי שמוסיפים את טקסט ה-Markdown שרוצים להמיר ל-HTML. הטיפול בשגיאות בתגובה מאפשר להבחין בין בעיות בתקשורת לבין בעיות בפונקציונליות של העיבוד.
Java
makeAuthenticatedRequest יוצר בקשות מאומתות לשירותים פרטיים. היא משתמשת בשרת המטא-נתונים בסביבת Cloud Run כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-HTTP כחלק מכותרת Authorization. Google Cloud
בסביבות אחרות, makeAuthenticatedRequest מבקש אסימון זהות משרתי Google על ידי אימות באמצעות Application Default Credentials.
מנתחים את ה-Markdown מ-JSON ושולחים אותו לשירות Renderer כדי להפוך אותו ל-HTML.
C#
GetAuthenticatedPostResponse יוצר בקשות מאומתות לשירותים פרטיים. היא משתמשת בשרת המטא-נתונים בסביבת Cloud Run כדי ליצור אסימון זהות ולהוסיף אותו לבקשת ה-HTTP כחלק מכותרת Authorization. Google Cloud
בסביבות אחרות, 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 הוא מזהה הפרויקט שלכם, ו-
editorהוא השם שאתם רוצים לתת לשירות. Google Cloudאם הפעולה תצליח, תוצג הודעה על הצלחה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Container Registry ואפשר לעשות בה שימוש חוזר אם צריך.
Python
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
כאשר PROJECT_ID הוא מזהה הפרויקט שלכם, ו-
editorהוא השם שאתם רוצים לתת לשירות. Google Cloudאם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-Artifact Registry ואפשר לעשות בה שימוש חוזר אם צריך.
המשך
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
כאשר PROJECT_ID הוא מזהה הפרויקט שלכם, ו-
editorהוא השם שאתם רוצים לתת לשירות. Google Cloudאם הפעולה תצליח, תופיע הודעה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-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 הוא מזהה הפרויקט שלכם, ו-
editorהוא השם שאתם רוצים לתת לשירות. Google Cloudאם הפעולה תצליח, תוצג ההודעה BUILD SUCCESS. התמונה מאוחסנת ב-Artifact Registry ואפשר לעשות בה שימוש חוזר אם צריך.
C#
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/editor
כאשר PROJECT_ID הוא מזהה הפרויקט שלכם, ו-
editorהוא השם שאתם רוצים לתת לשירות. Google Cloudאם הפעולה תצליח, תוצג הודעה על הצלחה עם המזהה, זמן היצירה ושם התמונה. התמונה מאוחסנת ב-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 כדי לקבל מידע על גישה למערכות מיקרו-שירותים אסינכרוניות ומאובטחות