הגדרת 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 ובוחרים את הפרויקט שבו רוצים ליצור מאזן עומסים.
    כניסה לדף 'יצירת מאזן עומסים'

  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 מקרים