הגדרת IAP ל-Compute Engine

במדריך הזה מוסבר איך להגדיר מכונה של Compute Engine עם Identity-Aware Proxy ‏ (IAP). אם כבר הגדרתם את המכונה של Compute Engine וצריך רק להפעיל את IAP, אפשר לעיין במאמר בנושא הפעלת IAP ב-Compute Engine.

מטרות

במדריך הזה תלמדו:

  • יצירת תבנית של הגדרות מכונה ב-Compute Engine וקבוצת מופעי מכונה מנוהלים (MIG).
  • קבלת שם דומיין ואישור.
  • יצירת מאזן עומסים ב-HTTPS עם אישור.
  • הפעלת IAP.
  • בודק אם הרכישה מתוך האפליקציה פועלת.

עלויות

במדריך הזה נעשה שימוש ברכיבים של Google Cloudשחלים עליהם חיובים, כולל הרכיבים הבאים:

  • ‫Compute Engine
    • ‫4 מכונות וירטואליות (VM)
  • רשתות
    • כלל העברה של מאזן עומסים גלובלי
    • תנועה נכנסת (ingress)

כדי לקבל הערכת עלויות על סמך השימוש החזוי, אפשר להיעזר במחשבון עלויות.

משתמשים חדשים ב-Cloud Platform עשויים להיות זכאים לתקופת ניסיון בחינם.

לפני שמתחילים

לפני שמתחילים את המדריך הזה, צריך:

  1. בוחרים או יוצרים Google Cloud פרויקט.
    כניסה לדף Projects

  2. מפעילים את החיוב בפרויקט. איך משנים הגדרות חיוב בפרויקט?

שלב 1: יצירת תבנית של Compute Engine

במסוף Google Cloud , עוברים לדף Compute Engine > Create an instance template (יצירת תבנית של הגדרות מכונה) ובוחרים את הפרויקט שבו רוצים ליצור תבנית של הגדרות מכונה.

כניסה לדף Create an instance template

משתמשים בערכי ברירת המחדל, חוץ מהערכים הבאים:

  • סוג מכונה:
    • מיקרו (f1-micro)
  • היקפי גישה:
    • הגדרת גישה לכל API
    • ‫Compute Engine: קריאה בלבד
  • Firewall:
    • Allow HTTP traffic
  • בקטע ניהול, מתחת לאוטומציה > סקריפט הפעלה, מעתיקים ומדביקים את הסקריפט הבא:
    # Copyright 2021 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #      http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    apt-get -y update
    apt-get -y install git
    apt-get -y install virtualenv
    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    cd python-docs-samples/iap
    virtualenv venv -p python3
    source venv/bin/activate
    pip install -r requirements.txt
    cat example_gce_backend.py |
      sed -e "s/YOUR_BACKEND_SERVICE_ID/$(gcloud compute backend-services describe my-backend-service --global --format="value(id)")/g" |
      sed -e "s/YOUR_PROJECT_ID/$(gcloud config get-value account | tr -cd "[0-9]")/g" > real_backend.py
    gunicorn real_backend:app -b 0.0.0.0:80
    

כשמסיימים לעדכן את הערכים, לוחצים על יצירה כדי ליצור את התבנית.

שלב 2: יצירת קבוצה של מופעי מכונה מנוהלים

במסוף Google Cloud , עוברים לדף Compute Engine > Create a new instance group ובוחרים את הפרויקט שבו רוצים ליצור קבוצת מופעי מכונה מנוהלים.

מעבר לדף Create an instance group

משתמשים בערכי ברירת המחדל, חוץ מהערכים הבאים:

  • Name: my-managed-instance-group
  • מיקום: רב-אזורי
  • תבנית של הגדרות מכונה: בוחרים את תבנית של הגדרות מכונה שיצרתם בשלב 1.
  • מספר המופעים: כדי לשנות את מספר המופעים, צריך קודם להשבית את שינוי הגודל האוטומטי.
  • מצב התאמה אוטומטית לעומס: לא להתאים אוטומטית לעומס
  • בדיקת תקינות: בוחרים באפשרות יצירת בדיקת תקינות, ואז מזינים את הערכים הבאים:

    • שם: my-health-check
    • פרוטוקול: HTTP

    כדי להשתמש בבדיקה החדשה של תקינות המערכת, לוחצים על שמירה והמשך.

כשמסיימים לעדכן את הערכים, לוחצים על יצירה כדי ליצור את קבוצת המופעים המנוהלת (MIG).

שלב 3: מקבלים שם דומיין ואישור

כדי להשתמש במאזן העומסים עם תנועת נתונים ב-HTTPS, צריך שם דומיין ואישור חתום. אתם יכולים לרשום דומיין ב-Cloud Domains או להשתמש ברשם הדומיינים שתבחרו. לפני שממשיכים, צריך לרשום את הדומיין.

הגדרת האישור

יוצרים אישור שמזהה את האתר שלכם בפני המשתמשים. מידע על יצירת אישור מופיע במאמר שימוש באישור SSL בניהול Google.

רשות האישורים צריכה לאמת שאתם הבעלים של שם הדומיין שרשמתם. בשלבים הבאים, יוצרים מכונה וירטואלית כדי לאמת את הדומיין מול הרשות המנפיקה.

יצירת מכונה וירטואלית לאימות הבעלות על הדומיין

במסוף Google Cloud , נכנסים לדף Create an instance> Compute Engine.

כניסה לדף Create an instance

משתמשים בערכי ברירת המחדל, חוץ מהערכים הבאים:

  • שם: certbot-vm
  • סוג המכונה: מיקרו (f1-micro)
  • היקפי גישה:
    • הגדרת גישה לכל API
    • ‫Compute Engine: קריאה/כתיבה
  • קובץ אימג' של דיסק אתחול:
    • ‫Debian GNU/Linux 9 (stretch)
  • Firewall:
    • Allow HTTP traffic
    • Allow HTTPS traffic

כשמסיימים לעדכן את הערכים, לוחצים על יצירה כדי ליצור את מופע המכונה הווירטואלית. שימו לב לכתובת ה-IP החיצונית של המכונה הווירטואלית שיצרתם. תצטרכו אותו בשלב הבא.

הגדרת הדומיין כך שיפנה למכונה הווירטואלית

כדי להגדיר את הדומיין כך שיצביע על המכונה הווירטואלית, צריך לבצע את השלבים הבאים כדי להגדיר רשומות A:

  1. נכנסים לחשבון של הדומיין אצל מארח הדומיין.
  2. מאתרים את הדף שבו מעדכנים את רשומות ה-DNS של הדומיין. יכול להיות שהשם של הדף הוא 'ניהול DNS', 'ניהול שרת שמות' או 'הגדרות מתקדמות'.
  3. משנים את רשומות הכתובת הקבועה לערכים הבאים:
    • שם/מארח/כינוי: @
    • ערך: כתובת ה-IP החיצונית של המכונה הווירטואלית שיצרתם כדי לאמת את הבעלות על הדומיין שלכם (כפי שמוסבר למעלה).
    • TTL: ברירת המחדל של הרשם או 86400 (יום אחד).
  4. ממתינים עד שרשומת ה-DNS תתעדכן. יכול להיות שיעבור עד יום אחד עד שהרשומה שהוספתם תתעדכן.

מידע נוסף על רשומות A

בדיקת השרת

כדי לבדוק שהשרת פועל בצורה תקינה, מבצעים את השלבים הבאים:

  1. נכנסים לדף Compute Engine > VM Instances במסוף Google Cloud .
    לדף VM instances

  2. בקטע Connect (חיבור) של certbot-vm, לוחצים על SSH.

  3. מריצים את הפקודות הבאות כדי להפעיל שרת אינטרנט קטן במכונת ה-VM:

      mkdir web
      cd web
      echo "Hello" > index.html
      sudo busybox httpd -v -f
    
  4. בדפדפן אינטרנט, עוברים לשם הדומיין שרשמתם קודם. בדפדפן האינטרנט אמור להופיע Hello, ובסשן ה-SSH אמורה להופיע הודעה שמכילה את ... response:200. אם לא, מחכים כמה דקות וחוזרים על השלב הזה.

  5. אם הבדיקה מצליחה, מקישים על Ctrl+C כדי לעצור את שרת האינטרנט.

יצירת אישור

כדי ליצור אישור, נרשמים ב-Let's Encrypt על ידי הרצת הפקודות הבאות במכונה הווירטואלית, כאשר YOUR_DOMAIN הוא שם הדומיין שלכם, לא כולל הפרוטוקול:

sudo pkill busybox
sudo apt-get install -y certbot
sudo certbot certonly --standalone -d YOUR-DOMAIN

במהלך התהליך הזה, יכול להיות ש-Let's Encrypt יבקשו כתובת אימייל כדי לשלוח תזכורת כשתוקף האישור יפוג (כברירת מחדל, 3 חודשים אחרי שהוא מונפק). צריך גם להסכים לתנאים ולהגבלות של Let's Encrypt.

כשנרשמים בהצלחה, מופיעה ההודעה Congratulations! Your certificate and chain have been saved at....

הוספת האישור לפרויקט

כדי להוסיף את האישור לפרויקט, מריצים את הפקודות הבאות במכונה הווירטואלית:

sudo su
cd /etc/letsencrypt/live/YOUR_DOMAIN
gcloud compute ssl-certificates create my-cert --certificate=fullchain.pem --private-key=privkey.pem

אחרי שיוצרים את האישור בהצלחה, מופיעה הודעה שדומה לזו: Created [https://www.googleapis.com/compute/v1/projects/example-project/global/sslCertificates/my-cert]

לפני שממשיכים, סוגרים את סשן ה-SSH.

שלב 4: יצירת מאזן עומסים

לפני שמתחילים בשלב הזה, צריך לוודא שסגרתם את סשן ה-SSH שהתחלתם בשלב הקודם. כשהכול מוכן, פועלים לפי השלבים הבאים כדי ליצור מאזן עומסים:

  1. במסוף Google Cloud , עוברים לדף Network Services > Create a load balancer ובוחרים את הפרויקט שבו רוצים ליצור מאזן עומסים.
    כניסה לדף Create a load balancer

  2. בקטע HTTP(S) Load Balancing, לוחצים על Start configuration.

  3. בוחרים באפשרות From Internet to my VMs.

  4. בדף New external Application Load Balancer שמופיע, מזינים Name (שם) למאזן העומסים.

  5. לוחצים על Backend configuration.

  6. בקטע Backend services & backend buckets, בוחרים באפשרות Create a backend service.

  7. מוסיפים שם לשירות לקצה העורפי, כמו my-backend-service.

  8. עוברים לקטע אבטחה ובוחרים באפשרות הפעלת IAP כדי לאבטח את הגישה לאפליקציות.

    אי אפשר להשתמש ב-Cloud CDN וב-IAP ביחד. אם הפעלתם את Cloud CDN ואתם בוחרים להפעיל את IAP, ‏ Cloud CDN מושבת באופן אוטומטי.

  9. לוחצים על יצירה. הדף Load balancing נטען, ומאזן העומסים החדש מוצג ברשימה של מאזני העומסים.

  10. אחרי שמסוף Google Cloud Google Cloud מסיים ליצור את מאזן העומסים החדש, לוחצים על השם של מאזן העומסים ורושמים את כתובת ה-IP החיצונית בקטע פרטים > קצה קדמי. משתמשים בו בשלב הבא.

הגדרת הדומיין להפניה למאזן העומסים

כדי להגדיר את הדומיין כך שיפנה למאזן העומסים, צריך להגדיר רשומות A באמצעות השלבים הבאים:

  1. נכנסים לחשבון של הדומיין אצל מארח הדומיין.
  2. מאתרים את הדף שבו מעדכנים את רשומות ה-DNS של הדומיין. יכול להיות שהשם של הדף הוא 'ניהול DNS', 'ניהול שרת שמות' או 'הגדרות מתקדמות'.
  3. משנים את רשומות הכתובת הקבועה לערכים הבאים:
    • שם/מארח/כינוי: @
    • ערך: כתובת ה-IP החיצונית של מאזן העומסים שיצרתם קודם. אל תכללו את היציאה :443 ברשומת ה-DNS.
    • TTL: ברירת המחדל של הרשם או 86400 (יום אחד).
  4. ממתינים עד שרשומת ה-DNS תתעדכן. יכול להיות שיעבור עד יום עד שהרשומה שזה עתה הוספתם תתעדכן.
  5. כדי לבדוק את מאזן העומסים, משתמשים בדפדפן אינטרנט כדי להיכנס לדומיין עם פרוטוקול https://.
    • אם מאזן העומסים עדיין לא הוגדר, יופיעו שגיאות מסוג HTTP 502.
    • כשמאזן העומסים מוכן, מופיעה ההודעה 'בקשה לא מורשית'.

מידע נוסף על רשומות A

הפעלה מחדש של מכונות וירטואליות

כדי לאמת בקשות מ-IAP בצורה נכונה, צריך להפעיל מחדש את מכונות ה-VM ב-MIG.

  1. במסוף Google Cloud , נכנסים לדף Compute Engine > Instance groups.
    מעבר לדף Instance groups
  2. לוחצים על my-managed-instance-group.
  3. בחלק העליון של פרטי קבוצת המופעים שמופיעים, לוחצים על הפעלה מחדש/החלפה הדרגתית.
  4. בדף Restart/replace instances of my-managed-instance-group (הפעלה מחדש או החלפה של מופעים של my-managed-instance-group), מגדירים את הערכים הבאים:
    • פעולה: הפעלה מחדש
    • מקסימום לא זמינים: 3 מתוך 3 מקרים
    • זמן המתנה המינימלי: 0 שניות
  5. אחרי שמסיימים לעדכן את הערכים, לוחצים על הפעלה מחדש.

שלב 5: הגדרת רכישות מתוך האפליקציה

הגדרת חומת האש

בשלב הבא, מגדירים את חומת האש כך שתחסום גישה למכונות הווירטואליות הבסיסיות ותאפשר גישה רק דרך IAP:

  1. עוברים אל Google Cloud המסוף רשת VPC > כללי חומת אש.
    מעבר לדף של כללי חומת האש
  2. מסמנים את התיבה לצד הכללים הבאים:
    • default-allow-http
    • default-allow-https
    • default-allow-internal
  3. לוחצים על Delete.
  4. לוחצים על יצירת כלל לחומת האש ומגדירים את הערכים הבאים:
    • שם: allow-iap-traffic
    • יעדים: כל המופעים ברשת
    • טווחים של כתובות IP של מקורות (אחרי שמדביקים כל ערך בתיבה, לוחצים על Enter). טווח כתובות ה-IP מופיע ברשימת הכתובות המורשות כי הוא תנאי מוקדם לתקשורת של מאזן העומסים עם שרתי הבק-אנד.
      • 130.211.0.0/22
      • 35.191.0.0/16
    • פרוטוקולים ויציאות:
      • פרוטוקולים ויציאות שצוינו
      • tcp:80
  5. אחרי שמסיימים לעדכן את הערכים, לוחצים על יצירה.

הגדרת רכישות מתוך האפליקציה

כדי להגדיר רכישות מתוך האפליקציה בפרויקט, מבצעים את השלבים הבאים:

  1. במסוף Google Cloud , עוברים לדף Security > Identity-Aware Proxy ובוחרים את הפרויקט שרוצים להפעיל בו IAP.
    מעבר לדף של שרת proxy לאימות זהויות (IAP)
  2. אם לא הגדרתם את מסך ההסכמה ל-OAuth של הפרויקט, תתבקשו לעשות זאת:

    1. עוברים אל מסך ההסכמה ל-OAuth.
      הגדרת מסך ההסכמה
    2. בקטע כתובת אימייל לתמיכה, בוחרים את כתובת האימייל שרוצים להציג כאיש קשר ציבורי. כתובת האימייל צריכה להיות שייכת לחשבון המשתמש שאליו מחוברים כרגע, או לקבוצת Google שבה המשתמש שאליו מחוברים כרגע מוגדר כמנהל או כבעלים.
    3. מזינים את שם האפליקציה שרוצים להציג.
    4. מוסיפים פרטים אופציונליים שרוצים.
    5. לוחצים על Save.

    כדי לשנות בהמשך מידע במסך ההסכמה של OAuth, כמו שם המוצר או כתובת האימייל, צריך לחזור על השלבים הקודמים להגדרת מסך ההסכמה.

  3. לצד my-backend-service,

  4. בחלון Turn on IAP שמופיע, מסמנים את התיבה לצד האפשרות "I have read the configuration requirements and configured my Compute Engine resource according to documentation" (קראתי את דרישות ההגדרה והגדרתי את משאב Compute Engine בהתאם לתיעוד).

  5. לוחצים על הפעלה.

הוספת ישויות לרשימת הגישה

בשלב הבא, מוסיפים את הגורמים המורשים לרשימת הגישה של IAP לפרויקט.

  1. בצד שמאל של IAM ואדמין > Identity-Aware Proxy, בקטע גישה, לוחצים על הוספה.
  2. מזינים את החשבונות שרוצים לתת להם גישה, כולל החשבון שלכם, ומקצים לחשבונות את התפקיד משתמש באפליקציית אינטרנט מאובטחת באמצעות IAP. החשבונות יכולים להיות:
    • חשבונות Google: user@gmail.com
    • קבוצות Google: admins@googlegroups.com
    • חשבונות שירות: server@example.gserviceaccount.com
    • דומיינים ב-Google Workspace: ‏ example.com

שלב 6: בדיקת רכישות מתוך האפליקציה

כדי לבדוק שהרכישות מתוך האפליקציה פועלות בצורה תקינה, פועלים לפי השלבים הבאים:

  1. בדפדפן האינטרנט, עוברים לדומיין.
    1. אם מופיעה ההודעה 'בקשה לא מורשית', כדאי לנסות שוב בעוד כמה דקות.
  2. כשמופיע מסך הכניסה לחשבון Google, נכנסים באמצעות חשבון Google שהענקתם לו גישה בשלב הקודם.
  3. תוצג הודעה כמו "Hi, user@example.com. I am my-managed-instance-group-29z6."
  4. כדאי לרענן את הדף. בדפדפן אמורים להופיע השמות של 3 המכונות בקבוצת מופעי מכונה מנוהלים. זהו מאזן העומסים שמפיץ את תעבורת הנתונים בין מכונות ה-VM בקבוצה.

כל הכבוד! הפעלתם בהצלחה שירות עם איזון עומסים באמצעות IAP.

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.

אחרי שמסיימים להגדיר את IAP ל-Compute Engine, אפשר לפנות את המשאבים שיצרתם ב- Google Cloud כדי שלא תחויבו עליהם בעתיד. בקטעים הבאים מוסבר איך למחוק או להשבית את המשאבים האלה.

מחיקת הפרויקט

הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.

כדי למחוק את הפרויקט:

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

מחיקת מכונות

כדי למחוק מכונה של Compute Engine:

  1. נכנסים לדף VM instances במסוף Google Cloud .

    כניסה לדף VM instances

  2. מסמנים את התיבה שלצד המופע שרוצים למחוק.
  3. כדי למחוק את המכונה, לוחצים על More actions ואז על Delete ופועלים לפי ההוראות.

מחיקת כללים של חומת האש ברשת ברירת המחדל

כדי למחוק כלל חומת אש:

  1. נכנסים לדף Firewall במסוף Google Cloud .

    כניסה לדף Firewall

  2. מסמנים את התיבה שלצד כלל חומת האש שרוצים למחוק.
  3. כדי למחוק את כלל חומת האש, לוחצים על Delete.

המאמרים הבאים

  • אפשר לנסות לשנות את אפליקציית הדוגמה שבה השתמשנו במדריך הזה כדי להציג נתונים אחרים.
  • כדאי לקרוא את השיטות המומלצות כדי להבין איך לכתוב אפליקציות משלכם ולאבטח אותן באמצעות IAP.