ربط Looker Cloud عبر الشبكات المختلطة

1. مقدمة

توفّر Looker (المنتج الأساسي من Google Cloud) عملية مبسطة وسلسة لإدارة مثيل Looker وإعداده وتوفيره من Google Cloud Console. يمكن أيضًا تنفيذ بعض مهام إدارة المثيلات من وحدة التحكّم.

تتوفّر ثلاثة إعدادات للشبكة في مثيلات Looker (المنتج الأساسي من Google Cloud):

  • عام: يستخدم اتصال الشبكة عنوان IP خارجيًا يمكن الوصول إليه من الإنترنت.
  • خاص: يستخدم اتصال الشبكة عنوان IP داخليًا مستضافًا على Google لسحابة إلكترونية خاصة افتراضية (VPC).
  • العامة والخاصة: يستخدم اتصال الشبكة عنوان IP عامًا وعنوان IP خاصًا، حيث سيتم توجيه الزيارات الواردة من خلال عنوان IP العام، وسيتم توجيه الزيارات الصادرة من خلال عنوان IP الخاص.

في هذا البرنامج التعليمي، ستنشئ شبكة خاصة شاملة ومتكاملة لدعم اتصال Looker بشبكة VPC محلية عبر شبكة HA VPN يمكن تكرارها لتلبية متطلباتك بشأن الاتصال المتعدد السحابات والاتصال المحلي.

يتيح Looker (المنتج الأساسي من Google Cloud) استخدام عناوين IP الخاصة للمثيلات التي تستوفي المعايير التالية:

ما ستنشئه

في هذا البرنامج التعليمي، ستنشئ عملية نشر شاملة لشبكة Looker خاصة في شبكة VPC مستقلة تتضمّن اتصالاً مختلطًا بالسحابة الإلكترونية المتعددة والبيئة المحلية.

ستُعدّ شبكة سحابة VPC باسم on-prem-vpc لتمثيل بيئة محلية. في عملية النشر، لن تكون شبكة VPC المحلية متاحة، بل سيتم استخدام الشبكات المختلطة للوصول إلى مركز البيانات المحلي أو مقدّم خدمات السحابة الإلكترونية.

في ما يلي الخطوات الرئيسية للبرنامج التعليمي

  1. إنشاء شبكة VPC مستقلة في us-central1
  2. تخصيص شبكة IP فرعية لخدمة Private Service Access
  3. نشر نسخة Looker في شبكة VPC المستقلة
  4. إنشاء شبكة VPC محلية وشبكة مختلطة
  5. الإعلان عن نطاق عناوين IP الخاص بـ Looker والتحقّق منه عبر بروتوكول BGP
  6. دمج عملية تبادل البيانات بين Looker وPostgresql والتحقّق من صحتها

Figure1

8436cc4802b670db.png

أهداف الدورة التعليمية

  • كيفية إنشاء شبكة VPC والشبكات المختلطة المرتبطة بها
  • كيفية نشر Looker في شبكة VPC مستقلة
  • كيفية إنشاء شبكة VPC محلية وشبكة مختلطة مرتبطة بها
  • ربط شبكة VPC المحلية بشبكة VPS الخاصة بخدمة "إحصاءات Google" من خلال HA VPN
  • كيفية الإعلان عن الشبكات الفرعية في Looker عبر الشبكات المختلطة
  • كيفية مراقبة البنية الأساسية للشبكات المختلطة
  • كيفية دمج قاعدة بيانات Postgresql مع Looker Cloud Core

المتطلبات

  • مشروع Google Cloud

أذونات "إدارة الهوية وإمكانية الوصول"

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"

إنشاء قواعد جدار الحماية

للسماح لميزة "الوصول إلى الأجهزة الافتراضية عبر الإنترنت" بالاتصال بأجهزة 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. Private Service Access

الوصول الخاص إلى الخدمات هو اتصال خاص بين شبكة السحابة الإلكترونية الافتراضية (VPC) وشبكة تملكها Google أو جهة خارجية. يُطلق على Google أو الجهة الخارجية أو الجهات التي تقدّم الخدمات أيضًا اسم "مقدّمو الخدمات". ‫Looker Cloud Core هي خدمة منتِجة.

يتيح الاتصال الخاص لآلات VPC الافتراضية والخدمات التي تصل إليها التواصل حصريًا باستخدام عناوين IP داخلية.

بشكل عام، لاستخدام ميزة "الوصول إلى الخدمات الخاصة"، عليك تخصيص نطاق عناوين IP (كتلة CIDR) في شبكة السحابة الإلكترونية الخاصة الافتراضية (VPC)، ثم إنشاء اتصال خاص بمقدّم الخدمة.

تخصيص نطاق عناوين IP للخدمات

قبل إنشاء اتصال خاص، يجب تخصيص نطاق عناوين IPv4 لاستخدامه من قِبل شبكة السحابة الإلكترونية الخاصة الافتراضية لمقدّم الخدمة. يضمن ذلك عدم حدوث تعارض في عناوين IP بين شبكة VPC وشبكة مقدّم الخدمة.

عند تخصيص نطاق في شبكة VPC، يكون هذا النطاق غير مؤهَّل للشبكات الفرعية (النطاقات الأساسية والثانوية) ووجهات المسارات الثابتة المخصّصة.

لا تتوفّر إمكانية استخدام نطاقات عناوين IPv6 مع ميزة "الوصول الخاص إلى الخدمات".

فعِّل Service Networking API لمشروعك في Google Cloud Console. عند تفعيل واجهة برمجة التطبيقات، قد تحتاج إلى إعادة تحميل صفحة وحدة التحكّم للتأكّد من أنّ واجهة برمجة التطبيقات قد تم تفعيلها.

إنشاء عملية تخصيص عنوان IP

لتحديد نطاق عناوين وطول بادئة (قناع شبكة فرعية)، استخدِم علامتَي العناوين وطول البادئة. على سبيل المثال، لتخصيص حظر 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 بين شبكة 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)

قبل البدء

فعِّل Looker API لمشروعك في Google Cloud Console. عند تفعيل واجهة برمجة التطبيقات، قد تحتاج إلى إعادة تحميل صفحة وحدة التحكّم للتأكّد من أنّ واجهة برمجة التطبيقات قد تم تفعيلها.

إعداد عميل OAuth للمصادقة والوصول إلى المثيل

في القسم التالي، عليك استخدام معرّف عميل OAuth والرمز السري لإنشاء مثيل Looker.

لا يُشترط توفير مصادر JavaScript معتمَدة ومعرّفات موارد منتظمة (URI) لإعادة التوجيه.

103601bca0b6ebe8.png

داخل Cloud Console، أنشئ مثيلاً استنادًا إلى لقطات الشاشة المقدَّمة.

انتقِل إلى LOOKER → إنشاء مثيل

املأ معرّف عميل OAuth وسرّه اللذين تم إنشاؤهما سابقًا.

b780ed751824176c.png

3fe880e26a81a756.png

91acffd74c68a067.png

انقر على إنشاء.

أثناء إنشاء الجهاز الافتراضي، ستتم إعادة توجيهك إلى صفحة الأجهزة الافتراضية في وحدة التحكّم. قد تحتاج إلى إعادة تحميل الصفحة للاطّلاع على حالة مثيلك الجديد. يمكنك أيضًا الاطّلاع على نشاط إنشاء الجهاز الظاهري من خلال النقر على رمز الإشعارات في قائمة "وحدة تحكّم Google Cloud". أثناء إنشاء مثيلك، سيتم وضع رمز تحميل حول رمز الإشعارات في قائمة Google Cloud Console.

بعد إنشاء مثيل Looker، يتم إنشاء عنوان URL للمثيل. دوِّن عنوان URL.

5ac8a1b8b438dce6.png

6. تعديل معرّف عميل OAuth 2.0

في القسم التالي، عليك تعديل معرّف عميل OAuth الذي تم إنشاؤه سابقًا معرّف الموارد المنتظم (URI) المُعتمَد لإعادة التوجيه من خلال إضافة /oauth2callback إلى عنوان URL الخاص بالمثيل.

بعد اكتمال العملية، يمكنك استخدام عنوان URL الخاص بالنسخة لتسجيل الدخول إلى واجهة مستخدم Looker.

في Cloud Console، انتقِل إلى واجهات برمجة التطبيقات والخدمات (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 GW لشبكة analytics-vpc

عند إنشاء كلّ بوابة، يتمّ تخصيص عنوانَي IPv4 خارجيَّين تلقائيًا، عنوان واحد لكلّ واجهة بوابة. دوِّن عناوين IP هذه لاستخدامها لاحقًا في خطوات الإعداد.

في Cloud Shell، أنشئ HA VPN GW

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

أنشئ HA VPN GW لـ on-prem-vpc

عند إنشاء كلّ بوابة، يتمّ تخصيص عنوانَي IPv4 خارجيَّين تلقائيًا، عنوان واحد لكلّ واجهة بوابة. دوِّن عناوين IP هذه لاستخدامها لاحقًا في خطوات الإعداد.

في Cloud Shell، أنشئ HA VPN GW.

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

التحقّق من صحة إنشاء بوابة HA VPN

باستخدام وحدة التحكّم، انتقِل إلى "الاتصال المختلط" (HYBRID CONNECTIVITY) → "الشبكة الافتراضية الخاصة" (VPN) → "بوابات الشبكة الافتراضية الخاصة على Cloud" (CLOUD VPN GATEWAYS).

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 لشبكة 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.

إنشاء اتصال نفقي بشبكة VPN0

داخل 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

إنشاء اتصال نفقي بشبكة VPN1

داخل Cloud Shell، أنشئ النفق 1:

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 لشبكة VPC المحلية

ستنشئ نفقَي VPN على كل بوابة HA VPN.

إنشاء اتصال نفقي بشبكة VPN0

داخل 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

إنشاء اتصال نفقي بشبكة VPN1

داخل Cloud Shell، أنشئ النفق 1:

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 (أنفاق شبكة 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 وتبادل معلومات بين الشبكات لشبكة 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

التحقّق من صحة المسارات التي تم التعرّف عليها في 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

تأكَّد من أنّ شبكة VPC المحلية لم تتعرّف على مسارات عبر HA VPN.

لا تحتوي analytics-vpc على شبكة فرعية، وبالتالي لن يعلن Cloud Router عن أي شبكات فرعية إلى on-prem-vpc . باستخدام وحدة التحكّم، انتقِل إلى شبكة VPC → شبكات VPC → on-prem-vpc → طرق التوجيه → المنطقة → us-central1 → عرض

5b007e46a7c7026.png

10. الإعلان عن الشبكة الفرعية Looker على الشبكة المحلية

لا يتم الإعلان تلقائيًا عن الشبكة الفرعية لخدمة الوصول الخاص (PSA) في Looker من خلال موجّه السحابة analytics-cr-us-central1 لأنّ الشبكة الفرعية مخصّصة لخدمة الوصول الخاص (PSA)، وليس لسحابة VPC.

عليك إنشاء إعلان مسار مخصّص من analytics-cr-central1 لشبكة PSA الفرعية 192.168.0.0/22 (psa-range-looker) سيتم الإعلان عنه للبيئة المحلية وستستخدمه أحمال العمل للوصول إلى Looker.

من وحدة التحكّم، انتقِل إلى الربط المختلط → أجهزة توجيه السحابة الإلكترونية → analytics-cr-us-central1، ثمّ اختَر تعديل.

في قسم "المسارات المُعلَن عنها"، اختَر الخيار إنشاء مسارات مخصّصة، وعدِّل الحقول استنادًا إلى المثال أدناه، ثم اختَر تم، وانقر على حفظ.

87f95ee3d1cd8521.png

11. تأكَّد من أنّ شبكة VPC المحلية قد تعرّفت على الشبكة الفرعية في Looker

ستتمكّن شبكة on-prem-vpc الآن من الوصول إلى الشبكة الفرعية PSA في Looker لأنّه تم الإعلان عنها من analytics-cr-us-central1 كإعلان عن مسار مخصّص.

باستخدام وحدة التحكّم، انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → شبكات السحابة الافتراضية الخاصة (VPC) → on-prem-vpc → طرق التوجيه → المنطقة → us-central1 → عرض

لاحظ مسارات Looker المُعلن عنها من analytics-vpc:

a987a76fd57ddedd.png

12. التحقّق من صحة عملية تبادل المعلومات الحالية بين شبكات VPC

يتم الاتصال بين Looker Cloud Core وanalytics-vpc من خلال تبادل المعلومات بين شبكات VPC، ما يتيح تبادل المسارات المخصّصة التي يتم التعرّف عليها من خلال بروتوكول BGP. في البرنامج التعليمي، ستحتاج analytics-vpc إلى نشر المسارات التي تعلّمها on-prem-vpc إلى Looker. لتفعيل هذه الوظيفة، يتطلّب ربط شبكة VPC تعديلًا لتصدير المسارات المخصّصة.

التحقّق من صحة المسارات الحالية التي تم استيرادها وتصديرها

انتقِل إلى شبكة VPC ‏(VPC NETWORK) → تبادل المعلومات بين شبكات VPC ‏(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) لم يتم اختيار "تصدير المسارات المخصّصة"

a52de427fa73fb22.png

13. تعديل ميزة "تبادل المعلومات بين شبكات VPC"

انتقِل إلى شبكة السحابة الافتراضية الخاصة (VPC) → ربط شبكة السحابة الافتراضية الخاصة (VPC) → servicenetworking-googleapis-com → تعديل

انقر على تصدير المسارات المخصّصة → حفظ

a2309e4c3a7cee80.png

14. التحقّق من عملية تبادل المعلومات بين شبكات VPC المعدَّلة

التحقّق من صحة المسارات التي تم تصديرها

انتقِل إلى شبكة VPC ‏(VPC NETWORK) → تبادل المعلومات بين شبكات VPC ‏(VPC NETWORK PEERING) → servicenetworking-googleapis-com

يؤدي اختيار "المسارات التي تم تصديرها" إلى الكشف عن أنّه تم تصدير مسارات شبكة VPC المحلية (شبكة قاعدة البيانات الفرعية 172.16.10.0/27) إلى شبكة VPC المتصلة التي تستضيف Looker من خلال analytics-vpc.

47e953268d78a469.png

15. إنشاء قاعدة بيانات postgres في Looker

في القسم التالي، ستنفّذ عملية SSH في الجهاز الظاهري لقاعدة بيانات postgres باستخدام 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 وشبكة فرعية من خلال ميزة "الوصول الخاص إلى Google" في Looker‏ (192.168.0.0/22) في ملف pg_hba.conf ضمن الاتصالات المحلية عبر IPv4 وفقًا للقطة الشاشة أدناه:

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.

من Cloud Shell، أنشئ جدار الحماية on-prem-vpc.

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 إنشاء نظام أسماء نطاقات خاص في analytics-vpc

على الرغم من أنّ Looker يتم نشره في شبكة VPC تديرها Google، يمكن الوصول إلى نظام أسماء النطاقات الخاص (Private DNS) في analytics-vpc من خلال تبادل المعلومات مع شبكة الخدمات.

في القسم التالي، ستنشئ منطقة نظام أسماء نطاقات خاصًا في analytics-vpc يتألف من سجلّ A لاسم النطاق المؤهّل بالكامل (postgres.analytics.com)) وعنوان IP الخاص بمثيل قاعدة بيانات postgres.

من 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.

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 بشبكة الخدمات، ما يتيح وصول 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

في القسم التالي، ستستخدم Cloud Console لإنشاء اتصال قاعدة بيانات بمثيل قاعدة بيانات postgres المحلية.

في Cloud Console، انتقِل إلى Looker واختَر عنوان URL لنسختك الذي سيفتح واجهة مستخدم Looker.

9d132a67c532279e.png

بعد إطلاق التطبيق، ستظهر لك الصفحة المقصودة كما هو موضّح في لقطة الشاشة أدناه.

b77055fd674f8a69.png

انتقِل إلى ADMIN (المشرف) → DATABASE (قاعدة البيانات) → CONNECTIONS (عمليات الربط) → اختَر ADD CONNECTION (إضافة عملية ربط).

املأ تفاصيل الربط وفقًا للقطة الشاشة أدناه، ثم انقر على ربط.

c8cca15252c2020d.png

تم الاتصال بنجاح

3e51b7e2cc62fb45.png

20. التحقّق من إمكانية الاتصال بمنصة Looker

في القسم التالي، ستتعرّف على كيفية التحقّق من صحة اتصال Looker بقاعدة بيانات postgres في on-prem-vpc باستخدام إجراء "الاختبار" في Looker وTCPDUMP.

من Cloud Shell، سجِّل الدخول إلى قاعدة بيانات postgres إذا انتهت مهلة الجلسة.

داخل 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 باستخدام الشبكة الفرعية 192.168.0.0/22 لأداة psa-range-looker.

sudo tcpdump -i any net 192.168.0.0/22 -nn

انتقِل إلى "ربط البيانات" المشرف → قاعدة البيانات → عمليات الربط → اختيار → اختبار

بعد اختيار "اختبار"، سيتم ربط Looker بقاعدة بيانات postgres بنجاح كما هو موضّح أدناه:

ef25b837b6a41fe.png

ارجع إلى نافذة نظام التشغيل وتحقّق من أنّ أداة TCPDUMP قد حدّدت أنّ النطاق psc-range-looker يتصل بمثيل قاعدة بيانات postgres المحلية.

إضافة ملاحظة تفيد بأنّ أي عنوان 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 إلى قاعدة البيانات باستخدام الإصدار 1.2 أو إصدار أحدث من بروتوكول أمان طبقة النقل (TLS).
  • يتم تشفير البيانات غير النشطة تلقائيًا، ويمكن للعميل أيضًا الاستفادة من مفاتيح التشفير المُدارة من قِبل العميل (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 بنجاح باستخدام أداة "الاختبار" في Lookers Connect وTCPDUMP في مثيل قاعدة بيانات postgres.

تعتقد Cosmopup أنّ الفيديوهات التعليمية رائعة!!

e6d3675ca7c6911f.jpeg

مزيد من المعلومات والفيديوهات

المستندات المرجعية