Connecter le cloud Looker via une mise en réseau hybride

1. Introduction

Looker (Google Cloud Core) permet de simplifier et de rationaliser le provisionnement, la configuration et la gestion d'une instance Looker depuis la console Google Cloud. Certaines tâches d'administration d'instance peuvent également être effectuées à partir de la console.

Il existe trois configurations réseau pour les instances Looker (Google Cloud Core) :

  • Public: la connexion réseau utilise une adresse IP externe accessible par Internet.
  • Privée: la connexion réseau utilise une adresse IP de cloud privé virtuel (VPC) interne hébergée par Google.
  • Publique et privée : la connexion réseau utilise à la fois une adresse IP publique et une adresse IP privée, le trafic entrant étant acheminé via l'adresse IP publique et le trafic sortant via l'adresse IP privée.

Dans ce tutoriel, vous allez déployer un réseau privé complet de bout en bout pour permettre la connectivité Looker à un VPC sur site via un VPN haute disponibilité qui peut être répliqué pour répondre à vos exigences de connectivité multicloud et sur site.

Looker (Google Cloud Core) est compatible avec les adresses IP privées pour les instances qui répondent aux critères suivants :

Objectifs de l'atelier

Dans ce tutoriel, vous allez créer un déploiement de réseau Looker privé complet dans un VPC autonome offrant une connectivité hybride multicloud et sur site.

Vous allez configurer un réseau VPC appelé on-prem-vpc pour représenter un environnement sur site. Pour votre déploiement, le VPC sur site n'existera pas. À la place, un réseau hybride sera utilisé pour votre centre de données sur site ou votre fournisseur cloud.

Voici les principales étapes du tutoriel :

  1. Créer un VPC autonome dans la région us-central1
  2. Allouer un sous-réseau IP à l'accès aux services privés
  3. Déployer une instance Looker dans le VPC autonome
  4. Créer le réseau VPC on-prem-vpc et le réseau hybride
  5. Annoncez et validez la plage d'adresses IP Looker sur BGP
  6. Intégrer et valider la communication de données Looker et Postgresql

Figure 1

8436cc4802b670db.png

Points abordés

  • Créer un VPC et un réseau hybride associé
  • Déployer Looker dans un VPC autonome
  • Créer un on-prem-vpc et un réseau hybride associé
  • Connecter le VPC sur site à analytics-vps via un VPN haute disponibilité
  • Annoncer des sous-réseaux Looker via une mise en réseau hybride
  • Surveiller l'infrastructure de mise en réseau hybride
  • Intégrer une base de données Postgresql à Looker Cloud Core

Prérequis

  • Projet Google Cloud

Autorisations IAM

2. Avant de commencer

Mettre à jour le projet pour qu'il soit compatible avec le tutoriel

Ce tutoriel utilise $variables pour faciliter l'implémentation de la configuration gcloud dans Cloud Shell.

Dans Cloud Shell, effectuez les opérations suivantes:

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

3. Configuration du VPC

Créer le VPC analytics

Dans Cloud Shell, procédez comme suit :

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

Créer le VPC on-prem-vpc

Dans Cloud Shell, procédez comme suit :

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

Créer le sous-réseau de base de données Postgresql

Dans Cloud Shell, procédez comme suit :

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

Configuration de Cloud Router et du NAT

Cloud NAT est utilisé dans le tutoriel pour l'installation du package logiciel, car l'instance de VM de base de données ne dispose pas d'adresse IP externe.

Dans Cloud Shell, créez le routeur Cloud Router.

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

Dans Cloud Shell, créez la passerelle 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

Créer l'instance de test de base de données

Créez une instance de base de données Postgres qui servira à tester et valider la connectivité avec Looker.

Dans Cloud Shell, créez l'instance.

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"

Créer des règles de pare-feu

Pour autoriser IAP à se connecter à vos instances de VM, créez une règle de pare-feu qui :

  • S'applique à toutes les instances de VM auxquelles vous souhaitez rendre accessibles à l'aide d'IAP.
  • Autorise le trafic entrant provenant de la plage d'adresses IP 35.235.240.0/20. Cette plage contient toutes les adresses IP utilisées par IAP pour le transfert TCP.

Depuis 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. Accès privé aux services

L'accès aux services privés est une connexion privée entre votre réseau VPC et un réseau appartenant à Google ou à un tiers. Google ou le tiers sont des entités fournissant des services. Ils sont également appelés "producteurs de services". Looker Cloud Core est un producteur de services.

La connexion privée permet aux instances de VM de votre réseau VPC et aux services auxquels vous accédez de communiquer exclusivement par le biais d'adresses IP internes.

De manière générale, pour utiliser l'accès aux services privés, vous devez allouer une plage d'adresses IP (bloc CIDR) à votre réseau VPC, puis créer une connexion privée à un producteur de services.

Allouer une plage d'adresses IP aux services

Avant de créer une connexion privée, vous devez allouer une plage d'adresses IPv4 qui sera utilisée par le réseau VPC du producteur de services. Cela garantit qu'il n'y a pas de conflit d'adresses IP entre votre réseau VPC et le réseau du producteur de services.

Lorsque vous allouez une plage dans votre réseau VPC, elle n'est pas éligible pour les sous-réseaux (plages principales et secondaires) ni pour les destinations des routes statiques personnalisées.

L'utilisation de plages d'adresses IPv6 avec accès aux services privés n'est pas disponible.

Activez l'API Service Networking pour votre projet dans la console Google Cloud. Lors de l'activation de l'API, vous devrez peut-être actualiser la page de la console pour vérifier qu'elle a bien été activée.

Créer une allocation d'adresses IP

Pour spécifier une plage d'adresses et une longueur de préfixe (masque de sous-réseau), utilisez les indicateurs addresses et prefix-length. Par exemple, pour allouer le bloc CIDR 192.168.0.0/22, spécifiez 192.168.0.0 pour l'adresse et 22 pour la longueur du préfixe.

Dans Cloud Shell, créez l'allocation d'adresses IP pour 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

Dans Cloud Shell, validez l'allocation d'adresses IP.

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

Exemple :

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

Créer une connexion privée

Une fois que vous avez créé une plage allouée, vous pouvez créer une connexion privée à un producteur de services, Looker Cloud Core. La connexion privée établit une connexion d'appairage de réseaux VPC entre votre réseau VPC et le réseau du producteur de services une fois l'instance Looker établie.

Les connexions privées sont des relations un à un entre votre réseau VPC et un producteur de services. Si un producteur de services offre plusieurs services, vous n'avez besoin que d'une seule connexion privée pour tous les services du producteur.

Si vous vous connectez à plusieurs producteurs de services, utilisez une allocation unique pour chacun d'entre eux. Ceci facilite la gestion des paramètres réseau, tels que les routes et les règles de pare-feu, de chaque producteur de services.

Dans Cloud Shell, créez une connexion privée et notez le nom de l'opération.

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

Exemple :

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.

Dans Cloud Shell, vérifiez si l'opération a réussi. Remplacez OPERATION_NAME par le nom généré à l'étape précédente.

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

Exemple :

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. Créer une instance Looker (Google Cloud Core)

Avant de commencer

Activez l'API Looker pour votre projet dans la console Google Cloud. Lors de l'activation de l'API, vous devrez peut-être actualiser la page de la console pour vérifier qu'elle a bien été activée.

Configurez un client OAuth pour s'authentifier et accéder à l'instance.

Dans la section suivante, vous devrez utiliser l'ID et le code secret du client OAuth pour créer l'instance Looker.

Les origines JavaScript autorisées et les URI de redirection ne sont pas obligatoires.

103601bca0b6ebe8.png

Dans la console Cloud, créez une instance basée sur les captures d'écran fournies.

Accédez à LOOKER → CRÉER UNE INSTANCE.

Renseignez l'ID et le code secret du client OAuth précédemment créés.

b780ed751824176c.png

3fe880e26a81a756.png

91acffd74c68a067.png

Sélectionnez CRÉER.

Pendant la création de l'instance, vous êtes redirigé vers la page Instances de la console. Vous devrez peut-être actualiser la page pour afficher l'état de votre nouvelle instance. Vous pouvez également consulter votre activité de création d'instances en cliquant sur l'icône de notification dans le menu de la console Google Cloud. Pendant la création de votre instance, l'icône de notification dans le menu de la console Google Cloud est entourée d'une icône de chargement.

Une fois l'instance Looker créée, une URL d'instance est générée. Notez l'URL.

5ac8a1b8b438dce6.png

6. Mettre à jour l'ID client OAuth 2.0

Dans la section suivante, vous devrez mettre à jour l'URI de redirection autorisé de l'ID client OAuth créé précédemment en ajoutant /oauth2callback à l'URL de l'instance.

Une fois l'opération terminée, vous pouvez utiliser l'URL de l'instance pour vous connecter à l'UI Looker.

Dans la console Cloud, accédez à API et SERVICES → IDENTIFIANTS.

Sélectionnez votre ID client OAuth 2.0 et mettez à jour votre URL d'instance, comme indiqué ci-dessous :

793c5b82ec34fb1f.png

7. Valider l'accès à Looker

Dans Cloud Console, accédez à Looker et sélectionnez l'URL de votre instance pour ouvrir l'interface utilisateur de Looker.

9d132a67c532279e.png

Une fois le lancement effectué, la page de destination s'affiche, comme illustré dans la capture d'écran ci-dessous, confirmant votre accès à Looker Cloud Core.

b77055fd674f8a69.png

8. Connectivité hybride

Dans la section suivante, vous allez créer un routeur Cloud Router qui vous permettra d'échanger dynamiquement des routes entre votre cloud privé virtuel (VPC) et votre réseau appairé à l'aide du protocole BGP (Border Gateway Protocol).

Cloud Router peut configurer une session BGP sur un tunnel Cloud VPN pour connecter vos réseaux. Il apprend automatiquement les nouvelles plages d'adresses IP de sous-réseau et les annonce à votre réseau de pairs.

Dans ce tutoriel, vous allez déployer un VPN haute disponibilité entre analytics-vpc et on-prem-vpc pour illustrer la connectivité privée avec Looker.

Créez le GW du VPN haute disponibilité pour le VPC analytics-vpc.

Lorsque les passerelles sont créées, deux adresses IPv4 externes sont automatiquement attribuées, une pour chaque interface de passerelle. Notez ces adresses IP pour les utiliser ultérieurement dans les étapes de configuration.

Dans Cloud Shell, créez le GW du VPN haute disponibilité.

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

Créez le GW du VPN haute disponibilité pour le VPC on-prem-vpc.

Lorsque les passerelles sont créées, deux adresses IPv4 externes sont automatiquement attribuées, une pour chaque interface de passerelle. Notez ces adresses IP pour les utiliser ultérieurement dans les étapes de configuration.

Dans Cloud Shell, créez la passerelle VPN haute disponibilité.

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

Valider la création de la passerelle VPN haute disponibilité

Dans la console, accédez à CONNECTIVITÉ HYBRIDE → VPN → PASSERELLES CLOUD VPN.

a3973b2bbb832bae.png

Créer le routeur cloud pour le VPC analytics-vpc

Dans Cloud Shell, créez le routeur Cloud situé dans la région us-central1.

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

Créer le routeur cloud pour le VPC on-prem-vpc

Dans Cloud Shell, créez le routeur Cloud situé dans us-central1.

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

Créer les tunnels VPN pour analytics-vpc

Vous allez créer deux tunnels VPN sur chaque passerelle VPN haute disponibilité.

Créer un tunnel VPN0

Dans Cloud Shell, créez 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

Créer un tunnel VPN1

Dans Cloud Shell, créez le tunnel 1 (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

Créer les tunnels VPN pour on-prem-vpc

Vous allez créer deux tunnels VPN sur chaque passerelle VPN haute disponibilité.

Créer un tunnel VPN0

Dans Cloud Shell, créez 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

Créer un tunnel VPN1

Dans Cloud Shell, créez 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

Valider la création du tunnel VPN

Dans la console, accédez à CONNECTIVITÉ HYBRIDE → VPN → TUNNELS VPN CLOUD.

61c09b3d3102149d.png

9. Établir des voisins BGP

Créer des sessions BGP

Dans cette section, vous allez configurer les interfaces Cloud Router et les pairs BGP.

Créer une interface BGP et un appairage pour analytics-vpc

Dans Cloud Shell, créez l'interface 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

Dans Cloud Shell, créez le pair 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

Dans Cloud Shell, créez l'interface 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

Dans Cloud Shell, créez le pair 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

Créer une interface BGP et un appairage pour on-prem-vpc

Dans Cloud Shell, créez l'interface 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

Dans Cloud Shell, créez le pair 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

Dans Cloud Shell, créez l'interface 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

Dans Cloud Shell, créez le pair 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

Accédez à CONNECTIVITÉ HYBRIDE → VPN pour afficher les informations sur le tunnel VPN.

ddd4a8f851d44fd6.png

Valider les routes apprises par analytics-vpc via un VPN haute disponibilité

Étant donné que les tunnels VPN haute disponibilité et les sessions BGP sont établis, les routes de on-prem-vpc sont apprises à partir d'analytics-vpc. Depuis la console, accédez à Réseau VPC → Réseaux VPC → analytics-vpc → ROUTES → RÉGION → us-central1 → VUE

Vérifiez que analytics-vpc a appris les routes de l'instance on-prem-vpc database-subnet-us-central1 172.16.10.0/27.

57c7898390db4bcb.png

Vérifier que on-prem-vpc n'a pas appris les routes via un VPN haute disponibilité

Le sous-réseau analytics-vpc n'existe pas. Par conséquent, le routeur cloud n'annonce aucun sous-réseau au VPC sur site. Dans la console, accédez à Réseau VPC → Réseaux VPC → on-prem-vpc → ROUTES → RÉGION → us-central1 → AFFICHER.

5b007e46a7c7026.png

10. Annoncer le sous-réseau Looker sur site

Le sous-réseau Looker Private Service Access (PSA) n'est pas automatiquement annoncé par le routeur cloud analytics-cr-us-central1, car il est attribué au PSA, et non au VPC.

Vous devrez créer une annonce de routage personnalisée à partir d'analytics-cr-central1 pour le sous-réseau PSA 192.168.0.0/22 (psa-range-looker) qui sera annoncé dans l'environnement sur site et utilisé par les charges de travail pour accéder à Looker.

Dans la console, accédez à CONNECTIVITÉ HYBRIDE → CLOUD ROUTERS → analytics-cr-us-central1, puis sélectionnez MODIFIER.

Dans la section "Routes annoncées", sélectionnez l'option Créer des routes personnalisées, mettez à jour les champs en fonction de l'exemple ci-dessous, sélectionnez OK,puis cliquez sur ENREGISTRER.

87f95ee3d1cd8521.png

11. Vérifier que le VPC on-prem-vpc a appris le sous-réseau Looker

Le VPC on-prem-vpc peut désormais accéder au sous-réseau d'accès privés aux services Looker, car il a été annoncé depuis analytics-cr-us-central1 en tant qu'annonce de routage personnalisée.

Dans la console, accédez à RÉSEAU VPC → RÉSEAUX VPC → on-prem-vpc → ROUTES → RÉGION → us-central1 → AFFICHER.

Observez les routes Looker annoncées à partir du VPC analytics :

a987a76fd57ddedd.png

12. Valider l'appairage VPC en cours

La connexion entre Looker Cloud Core et le VPC analytics s'effectue via l'appairage VPC, qui permet d'échanger des routes personnalisées apprises via BGP. Dans ce tutoriel, le VPC "analytics-vpc" devra publier les routes apprises par le VPC on-prem-vpc dans Looker. Pour activer cette fonctionnalité, l'appairage VPC nécessite une mise à jour pour exporter des routes personnalisées.

Validez les routes importées et exportées actuellement.

Accédez à RÉSEAU VPC → PEERING DU RÉSEAU VPC → servicenetworking-googleapis-com.

f6d9395712934cd8.png

La capture d'écran ci-dessous détaille le VPC analytics-vpc qui importe le psa-range-looker à partir du réseau VPC appairé géré par Google, servicesnetworking.

86a0e8c3534c6986.png

Sélectionnez EXPORTED ROUTES (ROUTES EXPORTÉES) et aucune route n'a été exportée vers le réseau VPC appairé, car 1) les sous-réseaux ne sont pas configurés dans le VPC analytics-vpc 2) les routes personnalisées d'exportation ne sont pas sélectionnées

a52de427fa73fb22.png

13. Mettre à jour l'appairage VPC

Accédez à RÉSEAU VPC → APPAIREMENT DE RÉSEAU VPC → servicenetworking-googleapis-com → MODIFIER.

Sélectionnez EXPORTER LES ROUTES PERSONNALISÉES → ENREGISTRER.

a2309e4c3a7cee80.png

14. Valider l'appairage VPC mis à jour

Validez les routes exportées.

Accédez à RÉSEAU VPC → APPAIREMENT DE RÉSEAU VPC → servicenetworking-googleapis-com.

Sélectionnez EXPORTED ROUTES (ROUTES EXPORTÉES) pour indiquer que les routes on-prem-vpc (sous-réseau de base de données 172.16.10.0/27) sont exportées vers le réseau VPC appairé hébergeant Looker par analytics-vpc.

47e953268d78a469.png

15. Création de la base de données Postgres Looker

Dans la section suivante, vous allez vous connecter en SSH à la VM postgres-database à l'aide de Cloud Shell.

Dans Cloud Shell, effectuez une connexion SSH à l'instance de base de données postgres.

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

Dans le système d'exploitation, identifiez et notez l'adresse IP (ens4) de l'instance postgres-database.

ip a

Exemple :

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

Dans l'OS, connectez-vous à postgresql.

sudo -u postgres psql postgres

Dans le système d'exploitation, saisissez l'invite de saisie du mot de passe.

\password postgres

Dans l'OS, définissez le mot de passe sur postgres (saisissez le même mot de passe deux fois).

postgres

Exemple :

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: 

Dans l'OS, quittez postgres.

\q

Exemple :

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

Dans la section suivante, vous allez insérer l'adresse IP de votre instance postgres-database et le sous-réseau d'accès privé à Google Looker (192.168.0.0/22) dans le fichier pg_hba.conf sous les connexions locales IPv4, comme illustré dans la capture d'écran ci-dessous:

178364a8ee9b6233.png

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

Dans la section suivante, supprimez le commentaire du fichier postgresql.conf pour écouter toutes les adresses IP "*", comme indiqué dans la capture d'écran ci-dessous :

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

Avant :

aad52092c0a9408.png

Après :

7e80b916d29e097c.png

Dans l'OS, redémarrez le service postgresql.

sudo service postgresql restart

Dans l'OS, vérifiez que l'état postgresql est actif.

sudo service postgresql status

Exemple :

Dans l'OS, vérifiez que l'état postgresql est actif.

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. Créer la base de données PostgreSQL

Dans la section suivante, vous allez créer une base de données postgres nommée postgres_looker et un schéma looker_schema permettant de valider la connectivité de Looker à la connectivité sur site.

Dans l'OS, connectez-vous à postgres.

sudo -u postgres psql postgres

Dans l'OS, créez la base de données.

create database postgres_looker;

Dans l'OS, répertoriez la base de données.

\l

Dans l'OS, créez le looker utilisateur avec le mot de passe looker

create user postgres_looker with password 'postgreslooker';

Dans l'OS, connectez-vous à la base de données.

\c postgres_looker;

Dans l'OS, créez le schéma looker-schema et quittez l'invite Cloud Shell.

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

Exemple :

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

Quittez l'OS et revenez à Cloud Shell.

\q
exit

17. Créer un pare-feu dans on-prem-vpc

Dans la section suivante, créez un pare-feu d'entrée avec journalisation qui autorise la communication du sous-réseau Looker avec l'instance de base de données PostgreSQL.

Dans Cloud Shell, créez le pare-feu 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. Créer un DNS privé dans le VPC analytics

Bien que Looker soit déployé dans un VPC géré par Google, l'accès au DNS privé analytics-vpc est disponible via l'appairage avec la mise en réseau de services.

Dans la section suivante, vous allez créer une zone DNS privée dans le VPC "analytics-vpc" composée d'un enregistrement A du nom de domaine complet (postgres.analytics.com)) et de l'adresse IP de l'instance postgres-database.

Dans Cloud Shell, créez la zone privée 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"

Dans Cloud Shell, identifiez l'adresse IP de l'instance de base de données postgres.

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

Exemple :

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

Dans Cloud Shell, créez l'enregistrement A, en veillant à ajouter l'adresse IP précédemment identifiée.

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

Exemple :

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

Depuis Cloud Shell, le suffixe DNS pair analytics.com jusqu'à la mise en réseau des services permet à Looker d'accéder à la zone privée analytics-vpc.

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

19. Intégrer Looker à la base de données Postgres postgres-database

Dans la section suivante, vous allez utiliser la console Cloud pour créer une connexion de base de données à l'instance postgres-database sur site.

Dans la console Cloud, accédez à Looker et sélectionnez l'URL de votre instance pour ouvrir l'UI de Looker.

9d132a67c532279e.png

Une fois le programme lancé, la page de destination s'affiche, comme illustré ci-dessous.

b77055fd674f8a69.png

Accédez à ADMIN → DATABASE → CONNECTIONS (ADMIN → BASE DE DONNÉES → CONNEXIONS), puis sélectionnez ADD CONNECTION (AJOUTER UNE CONNEXION).

Indiquez les informations de connexion comme indiqué dans la capture d'écran ci-dessous, puis sélectionnez ASSOCIER.

c8cca15252c2020d.png

La connexion est maintenant établie

3e51b7e2cc62fb45.png

20. Valider la connectivité de Looker

Dans la section suivante, vous allez apprendre à valider la connectivité de Looker à la base de données postgres-database dans le VPC on-prem-vpc à l'aide de l'action "test" de Looker et de TCPDUMP.

Dans Cloud Shell, connectez-vous à la base de données postgres-database si la session a expiré.

Dans Cloud Shell, effectuez les opérations suivantes:

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"

Depuis l'OS, créez un filtre TCPDUMP avec le sous-réseau psa-range-looker 192.168.0.0/22.

sudo tcpdump -i any net 192.168.0.0/22 -nn

Accédez à la connexion de données : ADMIN → DATABASE → CONNECTIONS → Select → Test (ADMIN → DATABASE → CONNECTIONS → Select → Test).

Une fois l'option "Test" sélectionnée, Looker se connecte à la base de données PostgreSQL, comme indiqué ci-dessous :

ef25b837b6a41fe.png

Revenez au terminal de l'OS et vérifiez que TCPDUMP a identifié que psc-range-looker se connecte à l'instance postgres-database sur site.

Ajoutez une note indiquant que toutes les adresses IP de la plage d'accès privés aux services sont affichées depuis 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. Recommandations pour améliorer la sécurité

Voici quelques recommandations et bonnes pratiques de sécurité pour sécuriser Looker et la base de données Postgres. Par exemple :

  • Configurer les autorisations de compte de base de données avec le plus faible privilège pour Looker, tout en lui permettant d'exécuter les fonctions nécessaires.
  • Les données en transit entre le client et l'interface utilisateur Looker, et entre Looker et la base de données sont chiffrées à l'aide de TLS 1.2 ou version ultérieure.
  • Les données au repos sont chiffrées par défaut. Le client peut également utiliser CMEK pour les instances Looker (https://cloud.google.com/looker/docs/looker-core-cmek) et pour Postgres (https://cloud.google.com/sql/docs/postgres/configure-cmek).
  • Contrôle des accès Looker : les administrateurs Looker peuvent contrôler ce qu'un principe ou un groupe d'utilisateurs peut voir et faire dans Looker en accordant des droits d'accès au contenu, aux données et aux fonctionnalités. Ces options permettent à l'administrateur Looker de définir des rôles spécifiques, y compris le modèle et l'ensemble d'autorisations, et de créer un contrôle des accès précis aux données.
  • Looker est compatible avec les journaux d'audit et les journaux d'accès aux données, qui enregistrent qui a fait quoi, quand et où. Les journaux d'audit sont activés par défaut, tandis que les journaux d'accès aux données doivent être activés explicitement.
  • Actuellement, VPC-SC est compatible avec les instances Enterprise et Embed configurées uniquement avec une adresse IP privée

22. Effectuer un nettoyage

Supprimez l'instance Looker Cloud Core, puis accédez à :

LOOKER → looker-tutorial → SUPPRIMER

e5a2e3af9e7ffd40.png

Dans Cloud Shell, supprimez les composants du tutoriel.

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. Félicitations

Félicitations, vous avez configuré et validé la connectivité Looker via un réseau hybride, ce qui permet de communiquer des données dans des environnements sur site et multicloud.

Vous avez également réussi à tester la connectivité de Looker Cloud Core à la base de données postgres à l'aide de l'outil "Test" de Looker Connect et de TCPDUMP dans l'instance de la base de données postgres.

Cosmopup trouve les tutoriels géniaux !

e6d3675ca7c6911f.jpeg

Autres ressources et vidéos

Documents de référence