Cette page explique comment configurer et utiliser le proxy d'authentification AlloyDB pour établir des connexions autorisées et chiffrées aux instances AlloyDB. Pour obtenir une présentation conceptuelle du proxy d'authentification, consultez À propos du proxy d'authentification AlloyDB.
Pour utiliser le proxy d'authentification AlloyDB, vous devez effectuer plusieurs étapes de configuration ponctuelles, puis démarrer le client du proxy d'authentification et vous connecter aux bases de données à l'aide de celui-ci :
- Étapes de configuration :
- Téléchargez le client proxy d'authentification sur votre hôte client.
- Choisissez le compte principal Identity and Access Management (IAM) à utiliser pour l'autorisation, assurez-vous qu'il dispose des autorisations requises et que ses identifiants sont disponibles sur votre hôte client.
- Collectez les URI de connexion pour les instances AlloyDB auxquelles vous souhaitez vous connecter.
- Démarrez le client proxy d'authentification sur votre hôte client.
- Connectez une application à une base de données en ouvrant une connexion locale au client du proxy d'authentification.
Avant de commencer
-
L'hôte client doit répondre aux exigences suivantes :
Il doit avoir une visibilité réseau sur le réseau de cloud privé virtuel (VPC) où résident les instances auxquelles vous souhaitez vous connecter. Les hôtes clients (comme les instances Compute Engine) de ce réseau de cloud privé virtuel (VPC) disposent intrinsèquement de cette visibilité. Les hôtes clients des réseaux externes (réseaux sur site ou réseaux VPC différents) ont cette visibilité si le réseau VPC de l'instance AlloyDB a été connecté au réseau externe à l'aide d'un tunnel Cloud VPN ou d'un rattachement de VLAN pour Dedicated Interconnect ou Partner Interconnect.
Si l'hôte client dispose d'une règle de pare-feu sortante, il doit autoriser les connexions sortantes au port
5433
sur les adresses IP de vos instances AlloyDB et autoriser les connexions sortantes au port443
(port HTTPS standard) vers toutes les adresses IP.Si vous utilisez une instance Compute Engine comme hôte client, elle doit disposer du niveau d'accès#39;application
https://www.googleapis.com/auth/cloud-platform
pour pouvoir utiliser l'API AlloyDB Admin. Si nécessaire, modifiez son champ d'application de l'accès pour inclure ce champ d'application.
Télécharger le client proxy d'authentification
La machine sur laquelle vous téléchargez le client Auth Proxy dépend de l'endroit depuis lequel vous souhaitez vous connecter à vos instances AlloyDB : depuis son réseau VPC ou depuis l'extérieur.
Si vous souhaitez vous connecter à votre cluster à l'aide de l'accès aux services privés, vous pouvez télécharger le client Auth Proxy sur une instance de machine virtuelle (VM) Compute Engine s'exécutant dans le réseau VPC qui dispose d'un accès aux services privés à votre cluster.
Si vous prévoyez de vous connecter à votre cluster depuis l'extérieur du VPC, la machine sur laquelle vous l'installez dépend de la stratégie de connexion externe que vous utilisez. Par exemple, vous pouvez installer le client Auth Proxy sur une machine macOS ou Windows locale à votre application, puis utiliser un serveur SOCKS exécuté dans votre réseau VPC AlloyDB comme intermédiaire de connexion. Pour en savoir plus, consultez Se connecter à un cluster depuis l'extérieur de son VPC.
Linux
64 bits (AMD)
Téléchargez le client du proxy d'authentification :
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.linux.amd64 -O alloydb-auth-proxy
Rendez le client du proxy d'authentification exécutable :
chmod +x alloydb-auth-proxy
32 bits (AMD)
Téléchargez le client du proxy d'authentification :
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.linux.386 -O alloydb-auth-proxy
Rendez le client du proxy d'authentification exécutable :
chmod +x alloydb-auth-proxy
64 bits (ARM)
Téléchargez le client du proxy d'authentification :
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.linux.arm64 -O alloydb-auth-proxy
Rendez le client du proxy d'authentification exécutable :
chmod +x alloydb-auth-proxy
32 bits (ARM)
Téléchargez le client du proxy d'authentification :
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.linux.arm -O alloydb-auth-proxy
Rendez le client du proxy d'authentification exécutable :
chmod +x alloydb-auth-proxy
macOS
M1
Téléchargez le client du proxy d'authentification :
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.darwin.arm64
Rendez le client du proxy d'authentification exécutable :
chmod +x alloydb-auth-proxy
64 bits
Téléchargez le client du proxy d'authentification :
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.darwin.amd64
Rendez le client du proxy d'authentification exécutable :
chmod +x alloydb-auth-proxy
32 bits
Téléchargez le client du proxy d'authentification :
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy.darwin.386
Rendez le client du proxy d'authentification exécutable :
chmod +x alloydb-auth-proxy
Windows
64 bits
Effectuez un clic droit sur https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy-x64.exe et sélectionnez Enregistrer le lien sous pour télécharger le client Auth Proxy.
Renommez le fichier en alloydb-auth-proxy.exe
.
32 bits
Effectuez un clic droit sur https://storage.googleapis.com/alloydb-auth-proxy/v1.13.4/alloydb-auth-proxy-x86.exe et sélectionnez Enregistrer le lien sous pour télécharger le client Auth Proxy.
Renommez le fichier en alloydb-auth-proxy.exe
.
Image Docker
Pour plus de commodité, plusieurs images de conteneur contenant le client Auth Proxy sont disponibles dans Artifact Registry.
Vous pouvez extraire la dernière image sur votre ordinateur local en utilisant Docker avec la commande suivante :
docker pull gcr.io/alloydb-connectors/alloydb-auth-proxy:latest
Autres systèmes d'exploitation
Pour les autres systèmes d'exploitation non inclus ici, vous pouvez compiler le client Auth Proxy à partir de la source.
Choisir le compte principal IAM et le préparer pour l'autorisation
Le proxy d'authentification AlloyDB est compatible avec l'utilisation de ces types de principaux IAM pour autoriser les connexions entre votre client et une instance AlloyDB :
Un compte de service géré par l'utilisateur. Vous pouvez créer un compte de service IAM pour votre application, puis autoriser les connexions à l'aide de ce compte.
Google vous recommande vivement d'utiliser un compte de service pour l'autorisation dans les environnements de production.
Votre compte utilisateur Vous pouvez utiliser votre propre compte utilisateur IAM pour autoriser les connexions.
Il est pratique d'utiliser votre propre compte utilisateur dans les environnements de développement où vous gérez les ressources AlloyDB à l'aide de la gcloud CLI, développez la base de données à l'aide d'un outil tel que
psql
et développez le code d'application sur le même hôte.Compte de service Compute Engine par défaut : Si l'hôte client est une instance Compute Engine, vous pouvez utiliser le compte de service Compute Engine par défaut pour autoriser les connexions.
Après avoir choisi le compte principal IAM à utiliser, vous devez vous assurer qu'il dispose des autorisations IAM requises et que ses identifiants sont disponibles sur votre hôte client.
Autorisations IAM requises
Le compte principal IAM que vous utilisez pour autoriser les connexions doit disposer des autorisations fournies par les rôles prédéfinis roles/alloydb.client
(Client AlloyDB) et roles/serviceusage.serviceUsageConsumer
(Consommateur Service Usage).
Pour attribuer le rôle Client Cloud AlloyDB à un principal IAM :
L'API Cloud Resource Manager doit être activée dans le projet Google Cloud .
Vous devez disposer du rôle IAM de base
roles/owner
(propriétaire) dans le projetGoogle Cloud , ou d'un rôle qui vous accorde les autorisations suivantes :resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.setIamPolicy
Pour obtenir ces autorisations tout en suivant le principe du moindre privilège, demandez à votre administrateur de vous attribuer le rôle
roles/resourcemanager.projectIamAdmin
(Administrateur IAM du projet).
Rendre les identifiants IAM disponibles sur l'hôte client
La façon dont vous mettez les identifiants IAM à disposition sur l'hôte client dépend du type de compte principal IAM que vous utilisez pour autoriser les connexions :
Compte de service géré par l'utilisateur
Pour fournir des identifiants IAM pour un compte de service géré par l'utilisateur, créez une clé de compte de service au format JSON et téléchargez-la sur votre hôte client. Lorsque vous démarrez le client Auth Proxy, spécifiez l'emplacement du fichier de clé à l'aide de l'option
--credentials-file
.Votre compte utilisateur
Pour fournir des identifiants IAM pour votre compte utilisateur, installez Google Cloud CLI sur votre hôte client, puis exécutez la commande
gcloud init
pour l'initialiser à l'aide de votre compte utilisateur. Lorsque vous démarrez le client Auth Proxy, il découvre et utilise automatiquement les identifiants de votre compte utilisateur si vous ne fournissez pas d'identifiants de compte de service géré par l'utilisateur.Compte de service Compute Engine par défaut
Si vous utilisez une instance Compute Engine comme hôte client, les identifiants du compte de service Compute Engine par défaut sont déjà présents sur l'hôte. Lorsque vous démarrez le client Auth Proxy, il découvre et utilise automatiquement ces identifiants si les identifiants de compte de service géré par l'utilisateur et de compte utilisateur ne sont pas disponibles.
Collecter les URI de connexion pour les instances AlloyDB
Lorsque vous démarrez le client Auth Proxy, vous identifiez la ou les instances AlloyDB auxquelles vous souhaitez vous connecter à l'aide de ce format d'URI de connexion :
projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Pour afficher la liste des URI de connexion de toutes vos instances, utilisez la commande alloydb instances list
de la gcloud CLI.
Récupérez l'URI de connexion de chaque instance à laquelle vous souhaitez vous connecter.
Démarrer le client du proxy d'authentification
Lorsque vous démarrez le client Auth Proxy, vous lui fournissez des informations sur les instances AlloyDB auxquelles se connecter et, si nécessaire, des informations d'identification à utiliser lors de l'autorisation de ces connexions.
Lorsqu'il démarre, le client du proxy d'authentification :
- Autorise les connexions aux instances AlloyDB à l'aide des identifiants et des autorisations IAM du principal IAM que vous avez configuré. Il recherche les identifiants en suivant une séquence d'étapes spécifique.
- Autorise automatiquement les connexions à l'adresse IP publique au réseau source si l'adresse IP publique est activée pour l'instance.
- Configure une connexion TLS 1.3 privée au serveur proxy d'authentification de chaque instance.
- Commence à écouter les demandes de connexion des clients locaux.
Par défaut, le client Auth Proxy écoute les connexions TCP sur l'adresse IP 127.0.0.1, en commençant par le port 5432 et en incrémentant le numéro de port de 1 pour chaque instance AlloyDB au-delà de la première. Vous pouvez spécifier une autre adresse d'écouteur et d'autres ports lorsque vous démarrez le client Auth Proxy.
Ligne de commande
./alloydb-auth-proxy INSTANCE_URI... \
[ --credentials-file PATH_TO_KEY_FILE \ ]
[ --token OAUTH_ACCESS_TOKEN \ ]
[ --port INITIAL_PORT_NUMBER \ ]
[ --address LOCAL_LISTENER_ADDRESS \ ]
[ --auto-iam-authn \ ]
[ --psc \ ]
[ --public-ip \ ]
[ --disable-built-in-telemetry ]
Remplacez les éléments suivants :
INSTANCE_URI
: URI de connexion de l'instance AlloyDB à laquelle se connecter, spécifié au format suivant :projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Vous pouvez remplacer le port d'écouteur local par défaut que le client Auth Proxy utilisera pour l'instance en ajoutant le paramètre de requête
port
à l'URI :"projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?port=PORT"
Facultatif :
PATH_TO_KEY_FILE
: chemin d'accès au fichier de clé JSON du compte de service géré par l'utilisateur à utiliser pour l'autorisation de connexion.Facultatif :
OAUTH_ACCESS_TOKEN
: valeur du jeton OAuth2 à utiliser pour l'autorisation de connexion.Facultatif :
INITIAL_PORT_NUMBER
: numéro de port de départ à utiliser au lieu du port par défaut5432
lors de l'écoute des connexions TCP locales.Facultatif :
LOCAL_LISTENER_ADDRESS
: adresse de l'écouteur à utiliser au lieu de l'adresse par défaut127.0.0.1
lors de l'écoute des connexions TCP locales.
L'option facultative --auto-iam-authn
permet l'authentification automatique à l'instance. Cela ne fonctionne que pour l'utilisateur de la base de données associé au compte IAM qui exécute le client Auth Proxy. Pour en savoir plus, consultez S'authentifier automatiquement à l'aide du proxy d'authentification.
L'option facultative --psc
permet au proxy d'authentification de se connecter à une instance sur laquelle Private Service Connect est activé. Pour en savoir plus sur la configuration du DNS avec Private Service Connect, consultez Configurer une zone gérée DNS et un enregistrement DNS.
L'option facultative --public-ip
permet au proxy d'authentification de se connecter à une instance dont l'adresse IP publique est activée à l'aide de l'adresse IP publique de l'instance. Pour en savoir plus sur l'adresse IP publique, consultez Se connecter à l'aide d'une adresse IP publique.
L'indicateur --disable-built-in-telemetry
facultatif désactive le rapporteur de métriques interne utilisé par le proxy d'authentification pour générer des rapports sur l'état des connexions et du réseau. Par défaut, le proxy d'authentification génère des rapports sur ses opérations internes avec le préfixe de métrique système alloydb.googleapis.com
. Ces métriques aident AlloyDB à améliorer les performances et à identifier les problèmes de connectivité des clients. Cette option est utile pour les applications qui fonctionnent dans des environnements où l'exportation de métriques sortantes est limitée. Si vous préférez désactiver cette télémétrie, utilisez cet indicateur.
Conteneur Docker
Démarrez le client Auth Proxy à l'aide de la commande docker run
.
Si vous utilisez les identifiants fournis par votre instance Compute Engine, vous pouvez utiliser une commande semblable à la suivante :
docker run \
--publish 127.0.0.1:PORT:PORT \
gcr.io/alloydb-connectors/alloydb-auth-proxy:latest \
--address 0.0.0.0 \
--port PORT \
INSTANCE_URI
Remplacez les éléments suivants :
PORT
: port à utiliser pour les connexions locales au client Auth Proxy. La valeur par défaut est5432
.INSTANCE_URI
: URI de connexion à une instance AlloyDB, spécifié au format suivant :projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Vous pouvez remplacer le port d'écouteur local par défaut que le client Auth Proxy utilise pour l'instance en ajoutant le paramètre de requête
port
à l'URI :"projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?port=PORT"
Spécifiez toujours le préfixe 127.0.0.1
dans l'indicateur --publish
afin de ne pas exposer le client du proxy d'authentification en dehors de l'hôte local.
La valeur 0.0.0.0
dans l'indicateur --address
est requise pour rendre l'écouteur accessible de l'extérieur du conteneur Docker.
Pour fournir des identifiants que vous avez stockés dans un fichier JSON local, incluez les indicateurs --volume
et --credentials-file
lorsque vous exécutez la commande docker run
:
docker run \
--volume PATH_TO_KEY_FILE:/key.json \
--publish 127.0.0.1:PORT:PORT \
gcr.io/alloydb-connectors/alloydb-auth-proxy:latest \
--address 0.0.0.0 \
--port PORT \
--credentials-file=/key.json \
INSTANCE_URI
Remplacez PATH_TO_KEY_FILE
par le chemin d'accès au fichier de clé JSON du compte de service géré par l'utilisateur à utiliser pour l'autorisation de connexion.
Exemples de start-up
Les exemples suivants montrent différentes façons de démarrer le client Auth Proxy. Ils utilisent les URI de connexion d'instance suivants :
projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary
projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool
Démarrage de base
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary"
Dans cet exemple, le client du proxy d'authentification autorise la connexion en suivant sa séquence normale d'étapes d'autorisation, puis commence à écouter les connexions locales à l'instance myprimary
sur 127.0.0.1:5432
.
Démarrage à l'aide d'un compte de service géré par l'utilisateur
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \\
--credentials-file "myappaccount/key.json"
Dans cet exemple, le client du proxy d'authentification autorise la connexion à l'aide de la clé JSON du compte de service géré par l'utilisateur stockée à l'emplacement myappaccount/key.json
, puis commence à écouter les connexions locales à l'instance myprimary
sur 127.0.0.1:5432
.
Démarrage de la connexion à plusieurs instances
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool"
Dans cet exemple, le client du proxy d'authentification autorise la connexion en suivant sa séquence normale d'étapes d'autorisation, puis commence à écouter les connexions locales à l'instance myprimary
sur 127.0.0.1:5432
et à l'instance myreadpool
sur 127.0.0.1:5433
.
Démarrage de l'écoute sur des ports personnalisés
L'utilisation de ports personnalisés pour le client du proxy d'authentification peut être utile lorsque vous devez réserver le port 5432
pour d'autres connexions PostgreSQL.
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary?port=5000" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool?port=5001"
Dans cet exemple, le client du proxy d'authentification autorise la connexion en suivant sa séquence normale d'étapes d'autorisation, puis commence à écouter les connexions locales à l'instance myprimary
sur 127.0.0.1:5000
et à l'instance myreadpool
sur 127.0.0.1:5001
.
Étant donné que ces ports personnalisés sont séquentiels, le même effet peut être obtenu à l'aide de cette commande de démarrage :
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool" \
--port 5000
Démarrage de l'écoute sur une adresse IP personnalisée
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
--address "0.0.0.0"
Dans cet exemple, le client du proxy d'authentification autorise la connexion en suivant sa séquence normale d'étapes d'autorisation, puis commence à écouter les connexions locales à l'instance myprimary
sur 0.0.0.0:5432
.
Connecter une application à une base de données à l'aide du proxy d'authentification AlloyDB
Les exemples suivants montrent comment connecter une application à une base de données à l'aide du proxy d'authentification AlloyDB.
L'exemple psql
montre comment connecter un outil de ligne de commande.
Pour plusieurs langages de programmation, la connexion à une instance AlloyDB à l'aide du proxy d'authentification AlloyDB est identique à la connexion à une instance Cloud SQL pour PostgreSQL à l'aide du proxy d'authentification Cloud SQL. Les exemples de langage présentés ici sont donc les mêmes que ceux pour Cloud SQL pour PostgreSQL.
Ces exemples sont basés sur un démarrage par défaut du client Auth Proxy afin qu'il écoute les connexions TCP locales sur 127.0.0.1:5432
.
psql
psql -h 127.0.0.1 -p 5432 -U DB_USER
Remplacez DB_USER
par l'utilisateur de la base de données avec lequel vous souhaitez vous connecter (par exemple, postgres
).
Vous êtes alors invité à saisir le mot de passe de l'utilisateur DB_USER
.
Python
Java
Node.js
Go
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
C#
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
Ruby
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.
PHP
Pour afficher cet extrait dans le contexte d'une application Web, consultez le fichier README sur GitHub.