הגדרת IAP ל-Compute Engine

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

מטרות

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

  • יצירת תבנית של הגדרות מכונה ב-Compute Engine וקבוצת מופעי מכונה מנוהלים (MIG).
  • קבלת שם דומיין ואישור.
  • יצירת מאזן עומסים ב-HTTPS עם אישור.
  • הפעלת IAP.
  • בדיקה ש-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 ובוחרים את הפרויקט שבו רוצים ליצור תבנית של הגדרות מכונה.

כניסה לדף תבנית של הגדרות מכונה

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

  • סוג המכונה:
    • מיקרו (f1-micro)
  • היקפי גישה:
    • הגדרת גישה לכל API
    • ‫Compute Engine: קריאה בלבד
  • חומת אש:
    • Allow HTTP traffic
  • בקטע Management, בקטע Automation > סקריפט לטעינה בזמן ההפעלה, מעתיקים ומדביקים את הסקריפט הבא:
    # 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
  • מיקום: מספר אזורים
  • ‫Instance template: בוחרים את תבנית של הגדרות מכונה שיצרתם בשלב 1.
  • מספר המכונות: כדי לשנות את מספר המכונות, צריך קודם להשבית את ההתאמה האוטומטית לעומס.
  • מצב התאמה אוטומטית לעומס: Don't autoscale
  • בדיקת תקינות: בוחרים באפשרות Create a health check ומזינים את הערכים הבאים:

    • Name: my-health-check
    • Protocol: HTTP

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

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

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

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

הגדרת האישור

יוצרים אישור שמזהה את האתר שלכם למשתמשים. במאמר שימוש באישורי SSL בניהול Google מוסבר איך יוצרים אישור.

רשות האישורים צריכה לאמת שאתם הבעלים של שם הדומיין שרשמתם. בשלבים הבאים תיצרו מכונה וירטואלית כדי לאמת את הדומיין מול ה-CA.

יצירת VM לאימות הבעלות על הדומיין

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

כניסה לדף CREATE AN INSTANCE

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

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

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

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

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

  1. נכנסים לחשבון של הדומיין אצל מארח הדומיין.
  2. מוצאים את הדף שבו מעדכנים את רשומות ה-DNS של הדומיין. השם של הדף יכול להיות "ניהול DNS", "ניהול שרת השמות" או "הגדרות מתקדמות".
  3. משנים את רשומות ה-A לערכים הבאים:
    • שם/מארח/כינוי: @
    • ערך: כתובת ה-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 ובוחרים את הפרויקט שבו רוצים ליצור מאזן עומסים.
    כניסה לדף יצירת מאזן עומסים

  2. בקטע איזון עומסים של HTTP(S), לוחצים על Start configuration.

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

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

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

  6. בקטע שירותי קצה עורפי וקטגוריות קצה עורפי, בוחרים באפשרות יצירת שירות קצה עורפי.

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

  8. בקטע Security, בוחרים באפשרות Enable IAP to secure access to your applications.

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

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

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

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

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

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

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

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

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

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

שלב 5: הגדרת IAP

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

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

  1. נכנסים לדף VPC network > Firewall rules במסוף Google Cloud .
    כניסה לדף FIREWALL RULES

  2. מסמנים את התיבה לצד הכללים הבאים:

    • default-allow-http

    • default-allow-https

    • default-allow-internal

  3. לוחצים על Delete.

  4. לוחצים על Create firewall rule ומגדירים את הערכים הבאים:

    • שם: allow-iap-traffic

    • טירגוט: כל המופעים ברשת

    • טווחי כתובות IP של מקור (מקישים על Enter אחרי שמדביקים כל ערך בשדה): צריך לאפשר תנועה מטווחי כתובות ה-IP האלה כדי שמאזן העומסים יוכל לתקשר עם הקצוות העורפיים.

      • 130.211.0.0/22

      • 35.191.0.0/16

    • פרוטוקולים ויציאות:

      • פרוטוקולים ויציאות שצוינו

      • tcp:80

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

הגדרת IAP

כדי להגדיר את IAP בפרויקט:

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

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

1. ליד my-backend-service, 1. בחלון Turn on IAP שמופיע, מסמנים את התיבה שליד "I have read the configuration requirements and configured my Compute Engine resource according to the documentation". 1. לוחצים על הפעלה.

הוספת חשבונות משתמשים לרשימת הגישה

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

  1. בקטע Access שבצד ימין של הדף Security > שרת proxy לאימות זהויות (IAP), לוחצים על Add.
  2. מזינים את חשבונות המשתמשים שרוצים לתת להם גישה, כולל החשבון שלכם, ומקצים להם את התפקיד משתמש באפליקציית אינטרנט באבטחת IAP. חשבונות המשתמשים יכולים להיות:
    • חשבונות Google: ‏user@gmail.com
    • קבוצות Google: ‏ admins@googlegroups.com
    • חשבונות שירות: server@example.
    • דומיינים ב-Google Workspace: ‏ example.com

שלב 6: בודקים את ה-IAP

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

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

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

הסרת המשאבים

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

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

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

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

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

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

    כניסה לדף 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.

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