בדף הזה מוסבר איך להגדיר ולהשתמש בהעברת TCP של שרת Proxy לאימות זהויות (IAP) עם כתובת IP או שם מארח בסביבת Google Cloud או בסביבה שהיא לאGoogle Cloud .
סקירה כללית
אתם יכולים להשתמש ב-Google Cloud CLI כדי ליצור מנהרות למשאבים באמצעות כתובת IP פרטית או שם מארח של משאב. אם יש לכם משאבים חיצוניים בסביבות שהן לאGoogle Cloud , שמחוברים ל- Google Cloud באמצעות Cloud Interconnect או VPN, אתם יכולים להשתמש בהעברת TCP של IAP עם המשאבים האלה.
לפני שמתחילים
כדי להעביר תעבורת נתונים למשאבים מחוץ ל- Google Cloud, צריך להגדיר קישוריות היברידית. כדי לחבר את המשאבים החיצוניים שאינם שלGoogle Cloud אלGoogle Cloud, צריך קישוריות היברידית. מידע נוסף זמין במסמכי התיעוד של Cloud Interconnect או של Cloud VPN.
ה-Cloud Router שלכם צריך לפרסם את טווח ה-IP של IAP-TCP, 35.235.240.0/20, כדי שהיעדים ישלחו את תעבורת הנתונים של התגובה בחזרה דרך Cloud VPN או Cloud Interconnect ולא דרך האינטרנט. אם אין לכם את ההגדרה הזו, לא תוכלו ליצור מנהרות למשאבים מחוץ לפרויקט ב- Google Cloud .
כדי להגדיר את ה-Cloud Router לפרסום טווח ה-IP של IAP-TCP 35.235.240.0/20, פועלים לפי ההוראות במאמר פרסום טווחי IP בהתאמה אישית.
בפעולות הבאות מופיעות דוגמאות ל-Google Cloud CLI להשלמת המשימות. במאמר משאב REST: projects.iap_tunnel.locations.destGroups מוסבר איך משתמשים בממשקי ה-API כדי לבצע פעולות בקבוצות היעדים.
יצירת קבוצת יעדים למנהרה
כשמגדירים מנהרה, מציינים קבוצת יעדים של מנהרות שתשמש לבדיקת הרשאות. קבוצות של יעדי מנהרות מייצגות משאבים שיש להם את אותן מגבלות גישה למנהרות. אתם יכולים ליצור כמה קבוצות יעד שתרצו, ולכל אחת מהן יכולים להיות כמה טווחי IP תואמים או שמות דומיין שמוגדרים במלואם (FQDN). כדי לאפשר גמישות רבה יותר, קבוצות היעדים יכולות לחפוף.
כשיוצרים קבוצת יעדים, צריך לציין אזור. כדי לקבל את התוצאות הטובות ביותר, האזור שאתם מציינים צריך להתאים למיקום של משאבי היעד. לדוגמה, אם המשאבים מחוברים באמצעות VPN, צריך להשתמש באזור של שער ה-VPN.
כדי ליצור קבוצת יעדים, צריך את ההרשאה iap.tunnelDestGroups.create, שאפשר לתת באמצעות התפקיד iap.tunnelDestGroupEditor. כדי להקצות תפקיד יחיד, קראו את המאמר הקצאת תפקיד יחיד במסמכי התיעוד של IAM.
המסוף
נכנסים לדף IAP ובוחרים פרויקט, אם עדיין לא נבחר פרויקט.
בכרטיסייה SSH and TCP resources, לוחצים על Create destination group.
מזינים שם לקבוצה. שם הקבוצה יכול להכיל רק אותיות קטנות (a-z) ומקפים (-).
ברשימה הנפתחת, בוחרים את האזור שבו רוצים ליצור את קבוצת היעדים.
בקטע IP address, לוחצים על Add row ומזינים את כתובות ה-IP או את ה-FQDN של המשאבים.
טווח כתובות IP מורכב מטווחים שמופרדים בפסיקים באמצעות סימון CIDR, כמו
10.1.2.0/24,172.0.0.0/8.רשימת FQDN היא רשימה מופרדת בפסיקים של שמות מארחים, כמו
*.internal.company.com. אפשר להשתמש בתווים כלליים לחיפוש ברשומת ה-FQDN.לוחצים על יצירת קבוצת יעדים.
gcloud
gcloud iap tcp dest-groups createYOUR_GROUP_NAME\ --region=REGION\ --ip-range-list=IP_RANGE_LIST\ --fqdn-list=FQDN_LIST
מחליפים את מה שכתוב בשדות הבאים:
YOUR_GROUP_NAME: שם הקבוצה. שם הקבוצה יכול להכיל רק אותיות קטנות (a-z) ומקפים (-).
REGION: האזור שבו יוצרים את קבוצת היעד, למשלus-central1.
IP_RANGE_LIST: אופציונלי. רשימת טווחי ה-IP, שמורכבת מטווחים שמופרדים בפסיקים באמצעות סימון CIDR, כמו10.1.2.0/24,172.0.0.0/8.
FQDN_LIST: אופציונלי. רשימת ה-FQDN היא רשימה מופרדת בפסיקים של שמות מארחים, כמו*.internal.company.com. אם לרשומת FQDN יש קידומת של תו כללי לחיפוש, היא תתאים לכל שם מארח עם הסיומת שצוינה. אחרת, נדרשת התאמה מדויקת. אם בקשה תואמת לטווח כתובות IP או ל-FQDN, היא נחשבת להתאמה.
אם אתם לא בטוחים אילו קבוצות כבר קיימות, הריצו את הפקודה הבאה כדי להציג את רשימת הקבוצות:
gcloud iap tcp dest-groups list \
--region=REGION
ניהול קבוצות של יעדי מנהרות
אתם יכולים לראות את הפרטים של קבוצת היעדים, לשנות אותה ולהסיר אותה.
המסוף
נכנסים לדף IAP ולוחצים על הכרטיסייה SSH and TCP resources.
כדי לראות את הפרטים של קבוצת יעדים, לוחצים על השם של קבוצת היעדים.
כדי לשנות קבוצת יעדים, בוחרים את קבוצת היעדים ולוחצים על סמל העיפרון כדי לפתוח את החלונית Edit destination group. אתם יכולים גם למחוק את קבוצת היעד מהחלונית הזו.
כדי להסיר קבוצת יעדים, בוחרים את קבוצת היעדים ולוחצים על סמל פח האשפה.
gcloud
למידע נוסף על ניהול קבוצות יעד באמצעות ה-CLI של gcloud, קראו את המאמר פקודות gcloud של קבוצת יעד.
הגדרת הרשאות למנהרה
כדי ליצור מנהרה, צריכה להיות לכם ההרשאה iap.tunnelDestGroups.accessViaIAP בקבוצת היעד הרלוונטית. אפשר לתת את ההרשאה באמצעות התפקיד iap.tunnelResourceAccessor.
כדי להגדיר הרשאות בקבוצות היעד, צריך את ההרשאה iap.tunnelDestGroups.setIamPolicy, שאפשר לתת באמצעות התפקיד iap.admin.
המסוף
נכנסים לדף IAP.
בכרטיסייה SSH and TCP resources, בוחרים את קבוצת היעד שרוצים להגדיר לה הרשאות.
בחלונית שנפתחת, לוחצים על Add principal ומזינים את כתובת האימייל של המשתמש.
בקטע Assign roles, בוחרים תפקיד שרוצים להקצות לחשבון המשתמש.
לוחצים על Save.
gcloud
gcloud iap tcp dest-groups add-iam-policy-binding \ --member=MEMBER \ --role=ROLE \ --dest-group=GROUP_NAME \ --region=REGION
מחליפים את מה שכתוב בשדות הבאים:
MEMBER: כתובת האימייל של המשתמש, למשל
user:exampleuser@company.com.ROLE: תפקיד ה-IAP הנדרש,
roles/iap.tunnelResourceAccessor.GROUP_NAME: שם קבוצת היעד.
REGION: שם האזור, למשל
us-central1.
הסבר על השימוש במנהרות
יש שלוש פקודות של ה-CLI של gcloud שאפשר להשתמש בהן כשעובדים עם IAP-TCP: start-iap-tunnel, ssh ו-scp.
הפקודות של IAP-TCP עודכנו כדי לתמוך במנהור שמבוסס על IP ו-FQDN. כדי לעבור לכתובת IP או ל-FQDN, מבצעים את הפעולות הבאות כשמשתמשים בפקודות:
צריך לציין כתובת IP או FQDN במקום את שם המכונה.
משתמשים ב-
--regionבמקום ב---zone.משתמשים ב-
--dest-groupכדי לציין את קבוצת היעד שבה רוצים להשתמש.משתמשים ב-
--networkכדי לציין את השם של רשת ה-VPC שבה רוצים להשתמש.
כתובת ה-IP שאתם מציינים צריכה להיות כתובת ה-IP הפרטית של היעד.
אי אפשר להשתמש ב-IAP-TCP עם כתובות IP ציבוריות. אם משתמשים ב-FQDN, הוא צריך להפנות לכתובת ה-IP הפרטית של היעד. שימו לב שתרגום השם מתבצע מתוך רשת ה-VPC שציינתם, ולא מהרשת של הלקוח. לדוגמה, אם אתם מנסים ליצור מנהרה אל vm.corp.company.com, השלב שבו vm.corp.company.com מומר לכתובת IP מתרחש בהקשר של רשת ה-VPC.
האזור שמציינים חייב להתאים לאזור של קבוצת היעד.
הרשת שאתם מציינים צריכה להתאים לשם של רשת ה-VPC שיש לה גישה ליעד. שם רשת אופייני הוא default. אפשר לראות את רשימת שמות הרשתות בדף רשתות VPC במסוף Google Cloud , או לאחזר את רשימת שמות הרשתות באמצעות הפקודה הבאה:
gcloud compute networks list --format='value(name)'
דוגמאות
בדוגמאות הבאות נעשה שימוש בכתובת ה-IP לדוגמה 172.16.1.2. בכל פקודה אפשר גם להשתמש ב-FQDN (לדוגמה, example.internal.company.com) במקום בכתובת ה-IP.
דוגמה ל-SSH
כדי להתחיל סשן SSH ב-172.16.1.2, מריצים את הפקודה הבאה:
gcloud compute ssh 172.16.1.2 \
--region=us-central1 \
--dest-group=DESTINATION_GROUP_NAME \
--network=default \
--tunnel-through-iap
מחליפים את DESTINATION_GROUP_NAME בשם של קבוצת היעד.
שימו לב ש---plain משתמע, ולכן אין ניסיון לנהל ולשלוח באופן אוטומטי מפתחות SSH כשמשתמשים בכתובת IP.
אם מופיעה השגיאה Permission denied (publickey), הפקודה לא מצאה את הקובץ שמכיל את מפתחות ה-SSH. כדי לפתור את הבעיה, צריך להוסיף את הנתיב לקובץ שמכיל את המפתחות הפרטיים של SSH כפרמטר לפקודת ה-SSH, כמו בדוגמה הבאה:
gcloud compute ssh 172.16.1.2 \
--region=us-central1 \
--dest-group=DESTINATION_GROUP_NAME \
--network=default \
--tunnel-through-iap \
-- -i ~/.ssh/google_compute_engine
מחליפים את DESTINATION_GROUP_NAME בשם של קבוצת היעד.
אם רוצים להיכנס כמשתמש ספציפי, משתמשים בפורמט USER@IP במקום לציין רק את כתובת ה-IP:
gcloud compute ssh user@172.16.1.2 \
--region=us-central1 \
--dest-group=DESTINATION_GROUP_NAME \
--network=default \
--tunnel-through-iap
אם החשבון מוגן באמצעות סיסמה, צריך להזין סיסמה. אם החשבון מוגן על ידי זוג מפתחות SSH פרטי או ציבורי, צריך לציין אותו באמצעות הדגל -- -i כפי שצוין למעלה.
דוגמה למנהרה
כדי ליצור מנהרה ליציאת TCP אחרת, משתמשים בפקודה start-iap-tunnel.
כדי ליצור מנהרה מ-localhost:8022 ליציאה 172.16.1.2:8085, מריצים את הפקודה הבאה:
gcloud compute start-iap-tunnel 172.16.1.2 8085 \
--local-host-port=localhost:8022 \
--region=us-central1 \
--dest-group=DESTINATION_GROUP_NAME \
--network=default
שימו לב שמכונת היעד צריכה להאזין ליציאה 8085 בדוגמה הזו.
אחרי שיוצרים מנהרה, אפשר להשתמש בכל כלי, כמו PuTTY, כדי ליצור חיבור.
דוגמה ל-SCP
כדי להעתיק קובץ אל 172.16.1.2 באמצעות SCP, מריצים את הפקודה הבאה:
gcloud compute scp file.txt 172.16.1.2:~/ \
--region=us-central1 \
--dest-group=DESTINATION_GROUP_NAME \
--network=default \
--tunnel-through-iap
שימו לב ש---plain משתמע, ולכן אין ניסיון לנהל ולשלוח באופן אוטומטי מפתחות SSH כשמשתמשים בכתובת IP.
דוגמה ל-SSH ProxyCommand
כדי להשתמש בפקודה כ-ProxyCommand שתמיד יוצרת מנהרה אל 172.16.1.2, מוסיפים רשומה להגדרת ~/.ssh/config או להגדרה מקבילה, כמו בדוגמה הבאה:
Host example
ProxyCommand gcloud compute start-iap-tunnel 172.16.1.2 '%p' --region=us-central1 --dest-group=DESTINATION_GROUP_NAME --network=default --verbosity=warning
הפקודה ProxyCommand נכנסת לתוקף כשמריצים את הפקודה הבאה: ssh example
אפשר גם להגדיר את ProxyCommand כך שיטפל בשמות מארחים רבים, כמו בדוגמה הבאה:
Host *.internal.company.com
ProxyCommand gcloud compute start-iap-tunnel '%h' '%p' --region=us-central1 --dest-group=DESTINATION_GROUP_NAME --network=default --verbosity=warning
הפקודה ProxyCommand נכנסת לתוקף כשמריצים את הפקודה הבאה: ssh example.internal.company.com