חיבור Looker Cloud באמצעות רשתות היברידיות

1. מבוא

‫Looker (Google Cloud core) מספק הקצאה, הגדרה וניהול פשוטים ויעילים של מופע Looker מתוך מסוף Google Cloud. אפשר לבצע חלק ממשימות הניהול של המופע גם מהמסוף.

יש שלוש הגדרות רשת שזמינות למופעים של Looker (הליבה של Google Cloud):

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

במדריך הזה תפרסו רשת פרטית מקיפה מקצה לקצה כדי לתמוך בקישוריות של Looker ל-VPC מקומי דרך HA VPN שאפשר לשכפל כדי לעמוד בדרישות שלכם לקישוריות מרובת עננים ומקומית.

‫Looker (Google Cloud Core)‎ תומך בכתובות IP פרטיות עבור מקרים שעומדים בקריטריונים הבאים:

מה תפַתחו

במדריך הזה תבנו פריסה מקיפה של רשת פרטית של Looker ב-VPC עצמאי עם קישוריות היברידית למרובה עננים ולסביבה מקומית.

תגדירו רשת VPC בשם on-prem-vpc כדי לייצג סביבה מקומית. בפריסה שלכם, ה-on-prem-vpc לא יתקיים, ובמקומו ישמש חיבור רשת היברידי למרכז הנתונים המקומי או לספק שירותי הענן.

בהמשך מפורטים השלבים העיקריים של ההדרכה

  1. יצירת VPC עצמאי באזור us-central1
  2. הקצאת רשת משנה של כתובות IP לגישה לשירותים פרטיים
  3. פריסת מופע Looker ב-VPC עצמאי
  4. יצירת רשת ה-VPC on-prem ורשת היברידית
  5. פרסום ואימות של טווח כתובות ה-IP של Looker באמצעות BGP
  6. שילוב של Looker ו-Postgresql ואימות של תקשורת הנתונים

Figure1

8436cc4802b670db.png

מה תלמדו

  • איך יוצרים VPC ורשת היברידית משויכת
  • איך פורסים את Looker ב-VPC עצמאי
  • איך יוצרים רשת VPC מקומית ורישות היברידי משויך
  • חיבור של on-prem-vpc ל-analytics-vps באמצעות HA VPN
  • איך לפרסם רשתות משנה של Looker באמצעות רישות היברידי
  • איך עוקבים אחרי תשתית רשת היברידית
  • איך משלבים מסד נתונים של Postgresql עם Looker Cloud Core

מה תצטרכו

  • פרויקט ב-Google Cloud

הרשאות IAM

‫2. לפני שמתחילים

עדכון הפרויקט כדי לתמוך במדריך

במדריך הזה נעשה שימוש ב-$variables כדי לעזור בהטמעה של הגדרות gcloud ב-Cloud Shell.

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid

3. הגדרת VPC

יצירת analytics-vpc

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute networks create analytics-vpc --project=$projectid --subnet-mode=custom

יצירת on-prem-vpc

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute networks create on-prem-vpc --project=$projectid --subnet-mode=custom

יצירת תת-רשת של מסד נתונים של Postgresql

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud compute networks subnets create database-subnet-us-central1 --project=$projectid --range=172.16.10.0/27 --network=on-prem-vpc --region=us-central1

הגדרת Cloud Router ו-NAT

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

ב-Cloud Shell, יוצרים את Cloud Router.

gcloud compute routers create on-prem-cr-us-central1-nat --network on-prem-vpc --region us-central1

ב-Cloud Shell, יוצרים את שער ה-NAT.

gcloud compute routers nats create on-prem-nat-us-central1 --router=on-prem-cr-us-central1-nat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-central1

יצירת מכונת בדיקה של מסד הנתונים

יוצרים מכונת מסד נתונים של postgres שתשמש לבדיקה ולאימות של הקישוריות ל-Looker.

ב-Cloud Shell, יוצרים את המכונה.

gcloud compute instances create postgres-database \
    --project=$projectid \
    --zone=us-central1-a \
    --machine-type=e2-medium \
    --subnet=database-subnet-us-central1 \
    --no-address \
   --image=projects/ubuntu-os-cloud/global/images/ubuntu-2304-lunar-amd64-v20230621 \
    --metadata startup-script="#! /bin/bash
      sudo apt-get update
      sudo apt -y install postgresql postgresql-client postgresql-contrib -y"

יצירת כללים לחומת האש

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

  • רלוונטי לכל מכונות ה-VM שרוצים לגשת אליהן באמצעות IAP.
  • מאפשר תנועה נכנסת מטווח כתובות ה-IP‏ 35.235.240.0/20. הטווח הזה מכיל את כל כתובות ה-IP שמשמשות את IAP להעברת TCP.

מ-Cloud Shell

gcloud compute firewall-rules create on-prem-ssh \
    --network on-prem-vpc --allow tcp:22 --source-ranges=35.235.240.0/20

4. גישה לשירותים פרטיים

גישה לשירותים פרטיים היא חיבור פרטי בין רשת ה-VPC שלכם לבין רשת בבעלות Google או צד שלישי. ‫Google או הצד השלישי, ישויות שמספקות שירותים, נקראות גם יצרני שירותים. ‫Looker Cloud Core הוא בעלים של שירות מנוהל.

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

כדי להשתמש בגישה לשירותים פרטיים, צריך להקצות טווח כתובות IP (בלוק CIDR) ברשת ה-VPC, ואז ליצור חיבור פרטי לבעלים של שירות מנוהל.

הקצאת טווח כתובות IP לשירותים

לפני שיוצרים חיבור פרטי, צריך להקצות טווח כתובות IPv4 לשימוש ברשת ה-VPC של בעלים של שירות מנוהל. כך נמנעת התנגשות בין כתובות ה-IP ברשת ה-VPC שלכם לבין כתובות ה-IP ברשת של ספק השירות.

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

אין תמיכה בשימוש בטווחים של כתובות IPv6 עם גישה לשירותים פרטיים.

מפעילים את Service Networking API בפרויקט במסוף Google Cloud. כשמפעילים את ה-API, יכול להיות שיהיה צורך לרענן את דף המסוף כדי לוודא שה-API הופעל.

יצירת הקצאת כתובת IP

כדי לציין טווח כתובות ואורך קידומת (מסכה של רשת משנה), משתמשים בדגלים addresses ו-prefix-length. לדוגמה, כדי להקצות את בלוק ה-CIDR‏ 192.168.0.0/22, מציינים 192.168.0.0 לכתובת ו-22 לאורך הקידומת.

ב-Cloud Shell, יוצרים הקצאת כתובת IP ל-Looker.

gcloud compute addresses create psa-range-looker \
    --global \
    --purpose=VPC_PEERING \
    --addresses=192.168.0.0 \
    --prefix-length=22 \
    --description="psa range for looker" \
    --network=analytics-vpc

ב-Cloud Shell, מאמתים את הקצאת כתובת ה-IP.

gcloud compute addresses list --global --filter="purpose=VPC_PEERING"

דוגמה:

userl@cloudshell$ gcloud compute addresses list --global --filter="purpose=VPC_PEERING"
NAME: psa-range-looker
ADDRESS/RANGE: 192.168.0.0/22
TYPE: INTERNAL
PURPOSE: VPC_PEERING
NETWORK: analytics-vpc
REGION: 
SUBNET: 
STATUS: RESERVED

יצירת חיבור פרטי

אחרי שיוצרים טווח מוקצה, אפשר ליצור חיבור פרטי לבעלים של השירות המנוהל, Looker Cloud Core. החיבור הפרטי יוצר קישור בין רשת ה-VPC לרשת של ספק השירות אחרי שמוגדר מופע Looker.

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

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

ב-Cloud Shell, יוצרים חיבור פרטי ורושמים את שם הפעולה.

gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range-looker \
    --network=analytics-vpc

דוגמה:

user@cloudshell$ gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=psa-range-looker \
    --network=analytics-vpc
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.

ב-Cloud Shell, בודקים אם הפעולה הצליחה. מחליפים את OPERATION_NAME בשם שנוצר בשלב הקודם.

gcloud services vpc-peerings operations describe \
    --name=OPERATION_NAME

דוגמה:

user@cloudshell$ gcloud services vpc-peerings operations describe \
    --name=operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea
Operation "operations/pssn.p24-1049481044803-f16d61ba-7db0-4516-b525-cd0be063d4ea" finished successfully.

5. יצירת מופע של Looker (Google Cloud Core)‎

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

מפעילים את Looker API בפרויקט במסוף Google Cloud. כשמפעילים את ה-API, יכול להיות שיהיה צורך לרענן את דף המסוף כדי לוודא שה-API הופעל.

מגדירים לקוח OAuth כדי לבצע אימות ולגשת למופע.

בקטע הבא תצטרכו להשתמש במזהה הלקוח ובסוד הלקוח של OAuth כדי ליצור את מופע Looker.

אין צורך במקורות מורשים של JavaScript ובכתובות URI להפניה אוטומטית.

103601bca0b6ebe8.png

במסוף Cloud, יוצרים מכונה על סמך צילומי המסך שמופיעים כאן.

עוברים אל LOOKER → CREATE AN INSTANCE (יצירת מכונה)

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

b780ed751824176c.png

3fe880e26a81a756.png

91acffd74c68a067.png

לוחצים על יצירה.

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

אחרי שיוצרים את מכונת Looker, נוצרת כתובת URL של המכונה. שימו לב לכתובת ה-URL.

5ac8a1b8b438dce6.png

6. עדכון מזהה הלקוח ב-OAuth 2.0

בקטע הבא, תצטרכו לעדכן את מזהה הלקוח ב-OAuth שיצרתם קודם Authorized redirect URI על ידי הוספת /oauth2callback לכתובת ה-URL של המופע.

אחרי שמסיימים, אפשר להשתמש בכתובת ה-URL של המכונה כדי להתחבר לממשק המשתמש של Looker.

במסוף Cloud, עוברים אל APIs & SERVICES → CREDENTIALS.

בוחרים את מזהה הלקוח ב-OAuth 2.0 ומעדכנים את כתובת ה-URL של המופע. דוגמה:

793c5b82ec34fb1f.png

7. אימות הגישה ל-Looker

ב-Cloud Console, עוברים אל Looker ובוחרים את כתובת ה-URL של המכונה שפותחת את ממשק המשתמש של Looker.

9d132a67c532279e.png

אחרי ההפעלה, יוצג דף הנחיתה כמו בצילום המסך שלמטה, שמאשר את הגישה שלכם ל-Looker Cloud Core.

b77055fd674f8a69.png

8. קישוריות היברידית

בקטע הבא תיצרו Cloud Router שיאפשר לכם להחליף מסלולים באופן דינמי בין הענן הווירטואלי הפרטי (VPC) לבין הרשת השכנה באמצעות Border Gateway Protocol ‏ (BGP).

‫Cloud Router יכול להגדיר סשן BGP דרך מנהרת Cloud VPN כדי לחבר את הרשתות שלכם. הוא לומד באופן אוטומטי טווחי כתובות IP חדשים של רשתות משנה ומכריז עליהם ברשת העמיתים.

במדריך הזה תפרסו HA VPN בין analytics-vpc לבין on-prem-vpc כדי להדגים קישוריות פרטית ל-Looker.

יצירת שער HA VPN עבור analytics-vpc

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

ב-Cloud Shell, יוצרים שער HA VPN

gcloud compute vpn-gateways create analytics-vpn-gw \
   --network=analytics-vpc\
   --region=us-central1

יוצרים שער HA VPN עבור on-prem-vpc

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

ב-Cloud Shell, יוצרים שער HA VPN.

gcloud compute vpn-gateways create on-prem-vpn-gw \
   --network=on-prem-vpc\
   --region=us-central1

אימות של יצירת שער HA VPN

במסוף, עוברים אל HYBRID CONNECTIVITY (קישוריות היברידית) ← VPN ← CLOUD VPN GATEWAYS (שערי Cloud VPN).

a3973b2bbb832bae.png

יצירת Cloud Router עבור analytics-vpc

ב-Cloud Shell, יוצרים את Cloud Router שנמצא ב-us-central1

gcloud compute routers create analytics-cr-us-central1 \
   --region=us-central1 \
   --network=analytics-vpc\
   --asn=65001

יצירת Cloud Router עבור on-prem-vpc

ב-Cloud Shell, יוצרים את Cloud Router שנמצא ב-us-central1

gcloud compute routers create on-prem-cr-us-central1 \
   --region=us-central1 \
   --network=on-prem-vpc \
   --asn=65002

יצירת מנהרות VPN עבור analytics-vpc

תצרו שתי מנהרות VPN בכל שער HA VPN.

יצירת מנהרת VPN‏ tunnel0

ב-Cloud Shell, יוצרים את tunnel0:

gcloud compute vpn-tunnels create analytics-vpc-tunnel0 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router analytics-cr-us-central1 \
    --vpn-gateway analytics-vpn-gw \
    --interface 0

יצירת מנהרת VPN‏ 1

ב-Cloud Shell, יוצרים את המנהרה tunnel1:

gcloud compute vpn-tunnels create analytics-vpc-tunnel1 \
    --peer-gcp-gateway on-prem-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router analytics-cr-us-central1 \
    --vpn-gateway analytics-vpn-gw \
    --interface 1

יצירת מנהרות VPN עבור on-prem-vpc

תצרו שתי מנהרות VPN בכל שער HA VPN.

יצירת מנהרת VPN‏ tunnel0

ב-Cloud Shell, יוצרים את tunnel0:

gcloud compute vpn-tunnels create on-prem-tunnel0 \
    --peer-gcp-gateway analytics-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [ZzTLxKL8fmRykwNDfCvEFIjmlYLhMucH] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 0

יצירת מנהרת VPN‏ 1

ב-Cloud Shell, יוצרים את המנהרה tunnel1:

gcloud compute vpn-tunnels create on-prem-tunnel1 \
    --peer-gcp-gateway analytics-vpn-gw \
    --region us-central1 \
    --ike-version 2 \
    --shared-secret [bcyPaboPl8fSkXRmvONGJzWTrc6tRqY5] \
    --router on-prem-cr-us-central1 \
    --vpn-gateway on-prem-vpn-gw \
    --interface 1

אימות של יצירת מנהרת VPN

במסוף, עוברים אל HYBRID CONNECTIVITY (קישוריות היברידית) ← VPN ← CLOUD VPN TUNNELS (מנהרות Cloud VPN).

61c09b3d3102149d.png

9. הגדרת שכנים ב-BGP

יצירת סשנים של BGP

בקטע הזה תגדירו ממשקים של Cloud Router ורשתות שכנות של BGP.

יצירת ממשק BGP וקישור בין רשתות שכנות עבור analytics-vpc

ב-Cloud Shell, יוצרים את ממשק ה-BGP:

gcloud compute routers add-interface analytics-cr-us-central1 \
    --interface-name if-tunnel0-to-onprem \
    --ip-address 169.254.1.1 \
    --mask-length 30 \
    --vpn-tunnel analytics-vpc-tunnel0 \
    --region us-central1

ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:

gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel0 \
    --interface if-tunnel1-to-onprem \
    --peer-ip-address 169.254.1.2 \
    --peer-asn 65002 \
    --region us-central1

ב-Cloud Shell, יוצרים את ממשק ה-BGP:

gcloud compute routers add-interface analytics-cr-us-central1 \
    --interface-name if-tunnel1-to-onprem \
    --ip-address 169.254.2.1 \
    --mask-length 30 \
    --vpn-tunnel analytics-vpc-tunnel1 \
    --region us-central1

ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:

gcloud compute routers add-bgp-peer analytics-cr-us-central1 \
    --peer-name bgp-on-premises-tunnel1 \
    --interface if-tunnel2-to-onprem \
    --peer-ip-address 169.254.2.2 \
    --peer-asn 65002 \
    --region us-central1

יצירת ממשק BGP וקישור בין רשתות שכנות עבור on-prem-vpc

ב-Cloud Shell, יוצרים את ממשק ה-BGP:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel0-to-analytics-vpc \
    --ip-address 169.254.1.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel0 \
    --region us-central1

ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-analytics-vpc-tunnel0 \
    --interface if-tunnel1-to-analytics-vpc \
    --peer-ip-address 169.254.1.1 \
    --peer-asn 65001 \
    --region us-central1

ב-Cloud Shell, יוצרים את ממשק ה-BGP:

gcloud compute routers add-interface on-prem-cr-us-central1 \
    --interface-name if-tunnel1-to-analytics-vpc \
    --ip-address 169.254.2.2 \
    --mask-length 30 \
    --vpn-tunnel on-prem-tunnel1 \
    --region us-central1

ב-Cloud Shell, יוצרים את הקישור בין רשתות שכנות באמצעות BGP:

gcloud compute routers add-bgp-peer on-prem-cr-us-central1 \
    --peer-name bgp-analytics-vpc-tunnel1\
    --interface if-tunnel2-to-analytics-vpc \
    --peer-ip-address 169.254.2.1 \
    --peer-asn 65001 \
    --region us-central1

עוברים אל Hybrid CONNECTIVITY → VPN כדי לראות את פרטי מנהרת ה-VPN.

ddd4a8f851d44fd6.png

אימות של מסלולים שנלמדו ב-analytics-vpc דרך HA VPN

מכיוון שמנהרות ה-HA VPN וסשני ה-BGP נוצרו, המסלולים מ-on-prem-vpc נלמדים מ-analytics-vpc. במסוף, עוברים אל רשת VPC ← רשתות VPC ← analytics-vpc ← מסלולים ← אזור ← us-central1 ← הצגה

בודקים שהרשת analytics-vpc למדה מסלולים ממסד הנתונים של on-prem-vpc, מרשת המשנה database-subnet-us-central1 172.16.10.0/27

57c7898390db4bcb.png

אימות לכך שרשת on-prem-vpc לא למדה מסלולים דרך HA VPN

ל-analytics-vpc אין רשת משנה, ולכן Cloud Router לא יפרסם רשתות משנה ל-on-prem-vpc . במסוף, עוברים אל רשת VPC ← רשתות VPC ← on-prem-vpc ← מסלולים ← אזור ← us-central1 ← הצגה

5b007e46a7c7026.png

10. פרסום תת-הרשת של Looker ב-on-prem

נתב הענן analytics-cr-us-central1 לא מפרסם אוטומטית את רשת המשנה של Looker Private Service Access (PSA) כי רשת המשנה מוקצית ל-PSA ולא ל-VPC.

תצטרכו ליצור פרסום של מסלול מותאם אישית מ-analytics-cr-central1 עבור רשת המשנה של PSA‏ 192.168.0.0/22 (psa-range-looker), שיפורסם בסביבה המקומית וישמש עומסי עבודה כדי לגשת ל-Looker.

במסוף, עוברים אל HYBRID CONNECTIVITY → CLOUD ROUTERS → analytics-cr-us-central1 ולוחצים על EDIT.

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

87f95ee3d1cd8521.png

11. בדיקה שהרשת הפרטית הווירטואלית (VPC) המקומית למדה את רשת המשנה של Looker

עכשיו לרשת ה-VPC המקומית תהיה גישה לתת-הרשת של PSA ב-Looker, כי היא פורסמה מ-analytics-cr-us-central1 כפרסום ניתוב (route advertisement) מותאם אישית.

במסוף, עוברים אל VPC NETWORK → VPC NETWORKS → on-prem-vpc → ROUTES → REGION → us-central1 → VIEW

בודקים את המסלולים של Looker שפורסמו מ-analytics-vpc:

a987a76fd57ddedd.png

12. אימות של קישור בין רשתות VPC שכנות (peering)

החיבור בין Looker Cloud Core לבין analytics-vpc מתבצע באמצעות קישור בין רשתות VPC שכנות (peering), שמאפשר החלפה של מסלולים מותאמים אישית שנלמדו באמצעות BGP. במדריך, צריך לפרסם את המסלולים שנלמדו על ידי analytics-vpc ב-Looker. כדי להפעיל את הפונקציונליות הזו, קישור בין רשתות שכנות (peering) ב-VPC דורש עדכון כדי לייצא מסלולים מותאמים אישית.

אימות של נתיבים מיובאים ומיוצאים.

עוברים אל VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com

f6d9395712934cd8.png

בצילום המסך שלמטה מפורט ייבוא הניתוח analytics-vpc של psa-range-looker מרשת ה-VPC המנוהלת על ידי Google, servicesnetworking.

86a0e8c3534c6986.png

בחירה באפשרות EXPORTED ROUTES לא תציג נתיבים שיוצאו לרשת ה-VPC המקושרת כי 1) לא הוגדרו רשתות משנה ב-analytics-vpc 2) לא נבחרה האפשרות Export custom routes

a52de427fa73fb22.png

13. עדכון של קישור בין רשתות VPC שכנות (peering)

עוברים אל VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com → EDIT

בוחרים באפשרות ייצוא של נתיבים מותאמים אישית → שמירה.

a2309e4c3a7cee80.png

14. אימות של קישור בין רשתות VPC שכנות (peering)

מאמתים את הנתיבים שיוצאו.

עוברים אל VPC NETWORK → VPC NETWORK PEERING → servicenetworking-googleapis-com

בחירה באפשרות EXPORTED ROUTES (נתיבים מיוצאים) חושפת שהנתיבים של ה-VPC המקומי (רשת המשנה של מסד הנתונים 172.16.10.0/27) מיוצאים לרשת ה-VPC המקבילה שמארחת את Looker על ידי analytics-vpc.

47e953268d78a469.png

15. יצירת מסד נתונים של postgres ב-Looker

בקטע הבא תתבצע כניסה באמצעות SSH למכונה הווירטואלית postgres-database באמצעות Cloud Shell.

בתוך Cloud Shell, מבצעים SSH למכונת מסד הנתונים postgres**.**

 gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"

בתוך מערכת ההפעלה, מזהים את כתובת ה-IP (ens4) של מופע מסד הנתונים postgres ורושמים אותה.

ip a

דוגמה:

user@postgres-database:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
    link/ether 42:01:ac:10:0a:02 brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 172.16.10.2/32 metric 100 scope global dynamic ens4
       valid_lft 84592sec preferred_lft 84592sec
    inet6 fe80::4001:acff:fe10:a02/64 scope link 
       valid_lft forever preferred_lft forever

בתוך מערכת ההפעלה, מתחברים אל postgresql.

sudo -u postgres psql postgres

בתוך מערכת ההפעלה, מזינים את הסיסמה בהנחיה.

\password postgres

בתוך מערכת ההפעלה, מגדירים את הסיסמה ל-postgres (מזינים את אותה סיסמה פעמיים)

postgres

דוגמה:

user@postgres-database:~$ sudo -u postgres psql postgres
\password postgres
psql (13.11 (Debian 13.11-0+deb11u1))
Type "help" for help.

postgres=# \password postgres
Enter new password for user "postgres": 
Enter it again: 

בתוך מערכת ההפעלה, יוצאים מ-postgres.

\q

דוגמה:

postgres=# \q
user@postgres-database:~$ 

בקטע הבא, צריך להזין את כתובת ה-IP של מופע מסד הנתונים של postgres ואת תת-הרשת של Looker גישה פרטית ל-Google ‏ (192.168.0.0/22) בקובץ pg_hba.conf בקטע IPv4 local connections, כמו בצילום המסך שלמטה:

178364a8ee9b6233.png

sudo nano /etc/postgresql/15/main/pg_hba.conf

בקטע הבא, מבטלים את ההערה של postgresql.conf כדי להאזין לכל כתובות ה-IP של '*' לפי צילום המסך שלמטה:

sudo nano /etc/postgresql/15/main/postgresql.conf

לפני:

aad52092c0a9408.png

אחרי:

7e80b916d29e097c.png

בתוך מערכת ההפעלה, מפעילים מחדש את שירות postgresql.

sudo service postgresql restart

בתוך מערכת ההפעלה, מאמתים שהסטטוס של postgresql הוא פעיל.

sudo service postgresql status

דוגמה:

בתוך מערכת ההפעלה, מאמתים שהסטטוס של postgresql הוא פעיל.

user@postgres-database$ sudo service postgresql status
 postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; preset: enabled)
     Active: active (exited) since Sat 2023-07-01 23:40:59 UTC; 7s ago
    Process: 4073 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 4073 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Jul 01 23:40:59 postgres-database systemd[1]: Starting postgresql.service - PostgreSQL RDBMS...
Jul 01 23:40:59 postgres-database systemd[1]: Finished postgresql.service - PostgreSQL RDBMS.

16. יצירת מסד נתונים של postgres

בקטע הבא, תיצרו מסד נתונים של postgres בשם postgres_looker וסכימה בשם looker_schema, שישמשו לאימות של looker לקישוריות מקומית.

בתוך מערכת ההפעלה, מתחברים ל-postgres.

sudo -u postgres psql postgres

בתוך מערכת ההפעלה, יוצרים את מסד הנתונים.

create database postgres_looker;

בתוך מערכת ההפעלה, מציגים את מסד הנתונים.

\l

בתוך מערכת ההפעלה, יוצרים את המשתמש looker עם הסיסמה looker

create user postgres_looker with password 'postgreslooker';

בתוך מערכת ההפעלה, מתחברים למסד הנתונים.

\c postgres_looker;

בתוך מערכת ההפעלה, יוצרים את הסכימה looker-schema ויוצאים להנחיה של Cloud Shell.

create schema looker_schema;
create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
exit

דוגמה:

user@postgres-database$ sudo -u postgres psql postgres
psql (15.3 (Ubuntu 15.3-0ubuntu0.23.04.1))
Type "help" for help.

postgres=# create database postgres_looker;
CREATE DATABASE
postgres=# \l
                                                List of databases
      Name       |  Owner   | Encoding | Collate |  Ctype  | ICU Locale | Locale Provider |   Access privileges   
-----------------+----------+----------+---------+---------+------------+-----------------+-----------------------
 postgres        | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | 
 postgres_looker | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | 
 template0       | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | =c/postgres          +
                 |          |          |         |         |            |                 | postgres=CTc/postgres
 template1       | postgres | UTF8     | C.UTF-8 | C.UTF-8 |            | libc            | =c/postgres          +
                 |          |          |         |         |            |                 | postgres=CTc/postgres
(4 rows)

postgres=# create user postgres_looker with password 'postgreslooker';
CREATE ROLE
postgres=# \c postgres_looker;
You are now connected to database "postgres_looker" as user "postgres".
postgres_looker=# create schema looker_schema;
CREATE SCHEMA
postgres_looker=# create table looker_schema.test(firstname CHAR(15), lastname CHAR(20));
CREATE TABLE
postgres_looker=# exit

יוצאים ממערכת ההפעלה וחוזרים אל Cloud Shell.

\q
exit

17. יצירת חומת אש ב-on-prem-vpc

בקטע הבא, יוצרים חומת אש של Ingress עם רישום ביומן שמאפשרת תקשורת של רשת המשנה של Looker עם מופע מסד הנתונים של postgres.

יוצרים את חומת האש on-prem-vpc מ-Cloud Shell.

gcloud compute --project=$projectid firewall-rules create looker-access-to-postgres --direction=INGRESS --priority=1000 --network=on-prem-vpc --action=ALLOW --rules=all --source-ranges=192.168.0.0/22 --enable-logging

18. יצירת DNS פרטי ב-analytics-vpc

למרות ש-Looker נפרס ב-VPC מנוהל של Google, הגישה לשרת ה-DNS הפרטי של analytics-vpc נתמכת באמצעות קישור בין רשתות שכנות (peering) עם Service Networking.

בקטע הבא תיצרו תחום DNS פרטי ב-analytics-vpc, שכולל רשומת A של שם דומיין שמוגדר במלואו (postgres.analytics.com)) וכתובת ה-IP של מופע postgres-database.

מ-Cloud Shell, יוצרים את האזור הפרטי analytics.com.

gcloud dns --project=$projectid managed-zones create gcp-private-zone --description="" --dns-name="analytics.com." --visibility="private" --networks="https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/analytics-vpc"

מ-Cloud Shell, מזהים את כתובת ה-IP של מופע postgres-database.

gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:

דוגמה:

user@cloudshell$ gcloud compute instances describe postgres-database --zone=us-central1-a | grep networkIP:
  networkIP: 172.16.10.2

מ-Cloud Shell, יוצרים את רשומת A ומוסיפים את כתובת ה-IP שזוהתה קודם.

gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="your-postgres-database-ip"

דוגמה:

user@cloudshell$ gcloud dns --project=$projectid record-sets create postgres.analytics.com. --zone="gcp-private-zone" --type="A" --ttl="300" --rrdatas="172.16.10.2"
NAME: postgres.analytics.com.
TYPE: A
TTL: 300
DATA: 172.16.10.2

מ-Cloud Shell, מקשרים בין dns-suffix analytics.com לבין Service Networking, וכך מאפשרים ל-Looker גישה לאזור הפרטי analytics-vpc.

gcloud services peered-dns-domains create looker-com --network=analytics-vpc --service=servicenetworking.googleapis.com --dns-suffix=analytics.com.

19. שילוב Looker עם מסד הנתונים postgres של Postgres

בקטע הבא נשתמש ב-Cloud Console כדי ליצור חיבור למסד נתונים למופע של postgres-database מקומי.

ב-Cloud Console, עוברים אל Looker ובוחרים את כתובת ה-URL של המכונה שפותחת את ממשק המשתמש של Looker.

9d132a67c532279e.png

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

b77055fd674f8a69.png

עוברים אל ADMIN → DATABASE → CONNECTIONS → בוחרים באפשרות ADD CONNECTION (הוספת חיבור).

ממלאים את פרטי החיבור לפי צילום המסך שלמטה ולוחצים על CONNECT (חיבור).

c8cca15252c2020d.png

החיבור הצליח

3e51b7e2cc62fb45.png

20. אימות החיבור ל-Looker

בקטע הבא נסביר איך לוודא שיש קישוריות בין Looker לבין מסד הנתונים postgres ב-VPC המקומי באמצעות הפעולה 'test' של Looker ו-TCPDUMP.

אם הסשן הסתיים בגלל חוסר פעילות, מתחברים למסד הנתונים postgres מ-Cloud Shell.

ב-Cloud Shell, מבצעים את הפעולות הבאות:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectid=YOUR-PROJECT-NAME
echo $projectid
gcloud compute ssh --zone "us-central1-a" "postgres-database" --project "$projectid"

ממערכת ההפעלה, יוצרים מסנן TCPDUMP עם רשת המשנה psa-range-looker‏ 192.168.0.0/22

sudo tcpdump -i any net 192.168.0.0/22 -nn

עוברים אל Data Connection (חיבור נתונים) ADMIN (ניהול) → DATABASE (מסד נתונים) → CONNECTIONS (חיבורים) → Select (בחירה) → Test (בדיקה)

אחרי שבוחרים באפשרות Test (בדיקה), Looker מתחבר בהצלחה למסד הנתונים של postgres, כמו שמוצג בהמשך:

ef25b837b6a41fe.png

חוזרים למסוף של מערכת ההפעלה ומוודאים שהכלי TCPDUMP זיהה שהכלי psc-range-looker מתחבר למופע של מסד הנתונים postgres-database המקומי.

הוספת הערה שלפיה כל כתובת IP מטווח ה-PSA תוצג מ-Looker

user@postgres-database$ sudo tcpdump -i any net 192.168.0.0/22 -nn
tcpdump: data link type LINUX_SLL2
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
00:16:55.121631 ens4  In  IP 192.168.1.24.46892 > 172.16.10.2.5432: Flags [S], seq 2221858189, win 42600, options [mss 1366,sackOK,TS val 4045928414 ecr 0,nop,wscale 7], length 0
00:16:55.121683 ens4  Out IP 172.16.10.2.5432 > 192.168.1.24.46892: Flags [S.], seq 1464964586, ack 2221858190, win 64768, options [mss 1420,sackOK,TS val 368503074 ecr 4045928414,nop,wscale 7], length 0

21. המלצות בנושא אבטחה

יש כמה המלצות ושיטות מומלצות לאבטחה שקשורות לאבטחת Looker ומסד הנתונים של Postgres. למשל:

  • הגדרת הרשאות מינימליות לחשבון מסד הנתונים ב-Looker, שעדיין מאפשרות לו לבצע את הפונקציות הנדרשות.
  • הנתונים בזמן המעבר בין הלקוח לממשק המשתמש של Looker ובין Looker למסד הנתונים מוצפנים באמצעות TLS 1.2 ומעלה.
  • נתונים באחסון מוצפנים כברירת מחדל, והלקוחות יכולים גם להשתמש ב-CMEK עבור מופעי Looker‏ ( https://cloud.google.com/looker/docs/looker-core-cmek) ועבור Postgres‏ ( https://cloud.google.com/sql/docs/postgres/configure-cmek).
  • בקרת גישה ב-Looker – אדמינים ב-Looker יכולים לקבוע מה גורם מרכזי או קבוצת משתמשים יכולים לראות ולעשות ב-Looker, על ידי הענקת גישה לתוכן, גישה לנתונים וגישה לפיצ'רים. האפשרויות האלה מאפשרות לאדמין ב-Looker להגדיר תפקידים ספציפיים שכוללים מודל וקבוצת הרשאות, וליצור בקרת גישה לנתונים ברמת גרנולריות גבוהה.
  • ‫Looker תומך ביומני ביקורת וביומני גישה לנתונים שמתעדים מי עשה מה, מתי ואיפה. יומני הביקורת מופעלים כברירת מחדל, אבל צריך להפעיל באופן מפורש את יומני הגישה לנתונים.
  • נכון לעכשיו, VPC-SC תומך במכונות Enterprise ובמכונות Embed שמוגדרות עם כתובת IP פרטית בלבד

22. הסרת המשאבים

מוחקים את המכונה של Looker Cloud Core. עוברים אל:

LOOKER → looker-tutorial → DELETE

e5a2e3af9e7ffd40.png

ב-Cloud Shell, מוחקים את רכיבי ההדרכה.

gcloud compute vpn-tunnels delete analytics-vpc-tunnel0 analytics-vpc-tunnel1 on-prem-tunnel0 on-prem-tunnel1 --region=us-central1 --quiet

gcloud compute vpn-gateways delete analytics-vpn-gw on-prem-vpn-gw --region=us-central1 --quiet

gcloud compute routers delete analytics-cr-us-central1 on-prem-cr-us-central1 on-prem-cr-us-central1-nat --region=us-central1 --quiet

gcloud compute instances delete postgres-database --zone=us-central1-a --quiet

gcloud compute networks subnets delete database-subnet-us-central1 --region=us-central1 --quiet

gcloud compute firewall-rules delete looker-access-to-postgres on-prem-ssh --quiet

gcloud dns record-sets delete postgres.analytics.com. --type=A --zone=gcp-private-zone
        
gcloud dns managed-zones delete gcp-private-zone

gcloud compute networks delete on-prem-vpc --quiet

gcloud compute addresses delete psa-range-looker --global --quiet

gcloud compute networks delete analytics-vpc --quiet

23. מזל טוב

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

בנוסף, הצלחת לבדוק את הקישוריות של Looker Cloud Core למסד הנתונים postgres באמצעות כלי הבדיקה של Looker Connect ו-TCPDUMP במופע של מסד הנתונים postgres.

‫Cosmopup חושב שסרטוני הדרכה הם מדהימים!!

e6d3675ca7c6911f.jpeg

קריאה נוספת וסרטונים

מאמרי עזרה