Cette page explique comment utiliser Private Service Connect pour se connecter à une instance AlloyDB pour PostgreSQL.
Vous pouvez utiliser Private Service Connect pour vous connecter à une instance AlloyDB principale ou à l'une de ses instances répliquées avec accès en lecture, ou à une instance AlloyDB secondaire à partir de plusieurs réseaux de cloud privé virtuel (VPC) appartenant à différents groupes, équipes, projets ou organisations.
Rôles requis
Vous devez accorder tous les rôles suivants à un utilisateur de votre réseau VPC pour qu'il puisse se connecter à une instance AlloyDB.
Rôle | Description |
---|---|
compute.networkAdmin |
Accorde un contrôle total sur le réseau VPC qui lance une connexion à une instance AlloyDB. Si vous utilisez Private Service Connect pour vous connecter à une instance AlloyDB à partir de plusieurs réseaux VPC, chaque réseau a son propre administrateur. |
dns.admin |
Accorde un contrôle total sur les ressources Cloud DNS, y compris les zones et enregistrements DNS. |
alloydb.admin |
Fournit un contrôle complet sur une instance AlloyDB et contrôle l'instance tout au long de son cycle de vie. |
alloydb.databaseUser (facultatif) |
Fournit un accès à l'instance AlloyDB. Si vous vous connectez via le client proxy d'authentification AlloyDB, vous devez disposer du rôle Client AlloyDB. Si vous vous connectez directement, vous n'avez pas besoin de rôles ni d'autorisations IAM (Identity and Access Management). |
Activer Private Service Connect
Pour activer Private Service Connect, vous devez créer un cluster AlloyDB avec Private Service Connect configuré, puis une instance AlloyDB avec une liste de projets autorisés.
Créer un cluster principal AlloyDB
L'exemple suivant utilise la commande gcloud alloydb clusters create
avec l'option --enable-private-service-connect
, qui crée un cluster AlloyDB avec Private Service Connect activé.
Le processus de création d'un cluster reste le même, à l'exception de la transmission de l'indicateur --enable-private-service-connect
. Pour en savoir plus sur la création d'un cluster, consultez la section Créer un cluster et son instance principale.
Pour créer le cluster, utilisez la commande gcloud alloydb clusters
create
.
gcloud alloydb clusters create CLUSTER_ID \
--password=PASSWORD \
--region=REGION_ID \
--project=PROJECT_ID \
--enable-private-service-connect
Remplacez les éléments suivants :
CLUSTER_ID
: ID du cluster que vous créez. Il doit commencer par une lettre minuscule et peut contenir des lettres minuscules, des chiffres et des traits d'union.PASSWORD
: mot de passe à utiliser pour l'utilisateurpostgres
par défaut.REGION_ID
: région dans laquelle vous souhaitez placer le cluster.PROJECT_ID
: ID du projet dans lequel vous souhaitez placer le cluster.
Cette commande lance une opération de longue durée et renvoie un ID d'opération.
Un cluster secondaire créé pour un cluster principal avec Private Service Connect activé hérite automatiquement de la configuration Private Service Connect. Pour en savoir plus, consultez Créer un cluster secondaire.
Créer une instance AlloyDB
L'exemple suivant montre comment créer une instance principale avec une liste de projets autorisés configurés. La procédure de création d'une instance reste la même, à l'exception de la transmission de la liste des projets autorisés à l'aide de l'indicateur --allowed-psc-projects
pour un cluster principal avec Private Service Connect activé.
Pour en savoir plus sur la création d'autres types d'instances, consultez les sections Créer une instance de pool de lecture et Créer une instance secondaire.
Pour créer l'instance principale, utilisez la commande gcloud alloydb instances create
.
gcloud alloydb instances create INSTANCE_ID \
--instance-type=PRIMARY \
--cpu-count=CPU_COUNT \
--availability-type=AVAILABILITY \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID \
--allowed-psc-projects=ALLOWED_PROJECT_LIST
Remplacez les éléments suivants :
INSTANCE_ID
: ID de l'instance que vous créez. Il doit commencer par une lettre minuscule et peut contenir des lettres minuscules, des chiffres et des traits d'union.CPU_COUNT
: nombre de processeurs virtuels souhaités pour l'instance. Les valeurs valides sont les suivantes :2
: 2 vCPU, 16 Go de RAM4
: 4 vCPU, 32 Go de RAM8
: 8 vCPU, 64 Go de RAM16
: 16 vCPU, 128 Go de RAM32
: 32 processeurs virtuels, 256 Go de RAM64
: 64 vCPU, 512 Go de RAM96
: 96 vCPU, 768 Go de RAM128
: 128 vCPU, 864 Go de RAM
AVAILABILITY
: indique si cette instance doit être hautement disponible (HA), avec des nœuds dans plusieurs zones. Les valeurs valides sont les suivantes :REGIONAL
: crée une instance HA avec des nœuds actifs et de secours distincts, et un basculement automatique entre eux. Il s'agit de la valeur par défaut, adaptée aux environnements de production.ZONAL
: crée une instance de base, ne contenant qu'un seul nœud et sans basculement automatique.
REGION_ID
: région dans laquelle vous souhaitez placer l'instance.CLUSTER_ID
: ID du cluster que vous avez créé précédemment.ALLOWED_PROJECT_LIST
: liste des ID de projet ou numéros de projet séparés par une virgule auxquels vous souhaitez autoriser l'accès à l'instance (par exemple,my-project-1
,12345
,my-project-n
).
Obtenir le rattachement de service
Après avoir créé une instance AlloyDB avec Private Service Connect activé, obtenez l'URL du rattachement de service et utilisez-la pour créer le point de terminaison Private Service Connect.
Utilisez la commande gcloud alloydb instances describe
pour afficher les détails d'une instance.
gcloud alloydb instances describe INSTANCE_ID \
--cluster=CLUSTER_ID --region=REGION_ID
Remplacez les éléments suivants :
INSTANCE_ID
: ID de l'instanceCLUSTER_ID
: ID du cluster.REGION_ID
: région dans laquelle le cluster AlloyDB est déployé.
Voici un exemple de réponse à la commande:
"pscInstanceConfig": {
"serviceAttachmentLink:": "https://www.googleapis.com/compute/v1/projects/my-project/regions/my-region/serviceAttachments/my-service-attachment-id"
"allowedConsumerProjects": {
"45678",
"12345",
"67890",
},
"pscDnsName": "11111111-1111-1111-1111-111111111111.22222222-2222-2222-2222-222222222222.alloydb-psc.goog."
}
Le paramètre pscServiceAttachmentLink
contient la valeur de l'URL du rattachement de service.
Créer un point de terminaison Private Service Connect
Pour créer un point de terminaison Private Service Connect, transmettez l'URL du rattachement de service avec un nom de point de terminaison unique. Pour en savoir plus sur la création d'un point de terminaison Private Service Connect, consultez Créer un point de terminaison.
Vous pouvez également réserver une adresse IP interne pour le point de terminaison Private Service Connect à l'aide de la commande gcloud compute addresses create
, puis utiliser l'adresse IP réservée lorsque vous créez le point de terminaison.
Se connecter à une instance AlloyDB
Vous pouvez vous connecter à une instance AlloyDB avec Private Service Connect activé à l'aide de l'une des options suivantes:
- une adresse IP interne ;
- un enregistrement DNS
- Proxy d'authentification AlloyDB
- Connecteurs de langage AlloyDB
Pour vous connecter à l'aide d'enregistrements DNS, vous devez créer un enregistrement DNS dans une zone DNS privée du réseau VPC correspondant. Une fois que vous avez créé un enregistrement DNS, vous pouvez vous connecter à une instance avec Private Service Connect activé directement à l'aide d'un enregistrement DNS, du proxy d'authentification AlloyDB ou des connecteurs de langage AlloyDB.
Configurer une zone gérée DNS et un enregistrement DNS
Pour configurer une zone gérée DNS et un enregistrement DNS dans votre réseau, procédez comme suit:
Pour afficher des informations récapitulatives sur une instance AlloyDB, y compris son nom DNS, utilisez la commande
gcloud alloydb instances describe
:gcloud alloydb instances describe INSTANCE_ID \ --project=CLUSTER_ID
Remplacez les éléments suivants :
INSTANCE_ID
: ID de l'instanceCLUSTER_ID
: ID du cluster.
Dans la réponse, vérifiez que le nom DNS apparaît. Le nom DNS suit le schéma
INSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
.Pour créer une zone DNS privée, utilisez la commande
gcloud dns managed-zones create
. Cette zone est associée au réseau VPC utilisé pour se connecter à l'instance AlloyDB via le point de terminaison Private Service Connect.gcloud dns managed-zones create ZONE_NAME \ --project=PROJECT_ID \ --description=DESCRIPTION \ --dns-name=DNS_NAME \ --networks=NETWORK_NAME \ --visibility=private
Remplacez les éléments suivants :
ZONE_NAME
: nom de la zone DNS.PROJECT_ID
: ID ou numéro de projet du Google Cloud projet contenant la zone.DESCRIPTION
: une description de la zone (par exemple, une zone DNS pour l'instance AlloyDB).DNS_NAME
: nom DNS de la zone, tel queINSTANCE_UID.PROJECT_UID.REGION_NAME.alloydb-psc.goog.
.NETWORK_NAME
: nom du réseau VPC.
Après avoir créé le point de terminaison Private Service Connect, utilisez la commande gcloud dns record-sets create pour créer un enregistrement DNS dans la zone:
gcloud dns record-sets create DNS_NAME \ --project=PROJECT_ID \ --type=RRSET_TYPE \ --rrdatas=RR_DATA \ --zone=ZONE_NAME
Remplacez les éléments suivants :
DNS_NAME
: le nom DNS que vous avez récupéré précédemment dans cette procédure.RRSET_TYPE
: type d'enregistrement de ressource du jeu d'enregistrements DNS (par exemple, A).RR_DATA
: adresse IP allouée au point de terminaison Private Service Connect (par exemple, 198.51.100.5). Vous pouvez également saisir plusieurs valeurs, par exemple rrdata1 rrdata2 rrdata3 (10.1.2.3 10.2.3.4 10.3.4.5).
Se connecter directement à l'aide d'un enregistrement DNS
Une fois que vous avez créé un point de terminaison Private Service Connect et un enregistrement DNS, vous pouvez vous connecter directement à l'aide de l'enregistrement DNS.
Pour récupérer l'enregistrement DNS du point de terminaison Private Service Connect, utilisez la commande
gcloud compute addresses describe
:gcloud compute addresses describe DNS_RECORD \ --project=PROJECT_ID \ --region=REGION_NAME
Remplacez les éléments suivants :
DNS_RECORD
: enregistrement DNS du point de terminaison.PROJECT_ID
: ID ou numéro de projet du Google Cloud projet contenant le point de terminaison.REGION_NAME
: nom de la région du point de terminaison.
Pour vous connecter à l'instance AlloyDB, utilisez l'enregistrement DNS.
psql user=USERNAME host=DNS_RECORD
Remplacez les éléments suivants :
USERNAME
: nom de l'utilisateur qui se connecte à l'instance.DNS_RECORD
: enregistrement DNS du point de terminaison.
Se connecter à l'aide du proxy d'authentification AlloyDB
Le proxy d'authentification AlloyDB est un connecteur qui vous permet d'établir des connexions autorisées et chiffrées aux bases de données AlloyDB. Le proxy d'authentification AlloyDB fonctionne avec un client local qui s'exécute dans l'environnement local. Pour communiquer avec le proxy d'authentification AlloyDB, votre application utilise le protocole de base de données standard de votre base de données.
Lorsque vous définissez l'option --psc
lorsque vous démarrez le client du proxy d'authentification, le proxy d'authentification AlloyDB utilise l'enregistrement DNS que vous avez créé pour se connecter à l'instance avec Private Service Connect activé.
Assurez-vous de démarrer le client du proxy d'authentification en transmettant l'URI de l'instance que vous récupérez à l'aide de la commande gcloud alloydb instances list
, puis définissez l'option --psc
.
Pour en savoir plus sur la connexion à une instance à l'aide du proxy d'authentification, consultez la section Se connecter à l'aide du proxy d'authentification.
Se connecter à l'aide des connecteurs de langage AlloyDB
Les connecteurs de langage AlloyDB sont des bibliothèques qui fournissent une mTLS automatisée avec TLS 1.3 et une autorisation IAM (Identity and Access Management) lors de la connexion à une instance AlloyDB.
Une fois que le connecteur linguistique a déterminé que l'instance est compatible avec Private Service Connect, il utilise l'enregistrement DNS que vous avez créé pour se connecter à l'instance.
Java
Si vous utilisez Private Service Connect pour vous connecter à votre instance AlloyDB, incluez les éléments suivants:
config.addDataSourceProperty("alloydbIpType", "PSC");
Pour en savoir plus sur l'utilisation du point de terminaison Private Service Connect dans les connecteurs de langage Java, consultez le dépôt GitHub.
Python (pg8000)
Si vous utilisez Private Service Connect pour vous connecter à votre instance AlloyDB, incluez les éléments suivants:
def getconn() -> pg8000.dbapi.Connection:
conn: pg8000.dbapi.Connection = connector.connect(
inst_uri,
"pg8000",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Pour en savoir plus sur l'utilisation du point de terminaison Private Service Connect dans les connecteurs de langage Python, consultez le dépôt GitHub.
Python (asyncpg)
Si vous utilisez Private Service Connect pour vous connecter à votre instance AlloyDB, incluez les éléments suivants:
async def getconn() -> asyncpg.Connection:
conn: asyncpg.Connection = await connector.connect(
inst_uri,
"asyncpg",
user=user,
password=password,
db=db,
# use ip_type to specify PSC
ip_type=IPTypes.PSC,
)
return conn
Pour en savoir plus sur l'utilisation du point de terminaison Private Service Connect dans les connecteurs de langage Python, consultez le dépôt GitHub.
Go (pgx)
Si vous utilisez Private Service Connect pour vous connecter à votre instance AlloyDB, incluez les éléments suivants:
d.Dial(ctx, instURI, alloydbconn.WithPSC())
Pour en savoir plus sur l'utilisation du point de terminaison Private Service Connect dans les connecteurs de langage Go, consultez le dépôt GitHub.
Go (database/sql)
Si vous utilisez Private Service Connect pour vous connecter à votre instance AlloyDB, incluez les éléments suivants:
cleanup, err := pgxv5.RegisterDriver(
"alloydb",
alloydbconn.WithDefaultDialOptions(alloydbconn.WithPSC())
)
Pour en savoir plus sur l'utilisation du point de terminaison Private Service Connect dans les connecteurs de langage Go, consultez le dépôt GitHub.
Se connecter directement via une adresse IP interne
Une fois que vous avez créé un point de terminaison Private Service Connect, vous pouvez vous connecter directement à une instance AlloyDB à l'aide de l'adresse IP que vous avez configurée.
Pour récupérer l'adresse IP du point de terminaison Private Service Connect, utilisez la commande
gcloud compute addresses describe
:gcloud compute addresses describe ADDRESS_NAME \ --project=PROJECT_ID \ --region=REGION_NAME
Remplacez les éléments suivants :
ADDRESS_NAME
: nom de l'adresse IP du point de terminaison.PROJECT_ID
: ID ou numéro de projet du Google Cloud projet contenant le point de terminaison.REGION_NAME
: nom de la région du point de terminaison.
Pour vous connecter à l'instance AlloyDB, utilisez l'adresse IP interne.
psql user=USERNAME hostaddr=IP_ADDRESS"
Remplacez les éléments suivants :
USERNAME
: nom de l'utilisateur qui se connecte à l'instance.IP_ADDRESS
: adresse IP du point de terminaison.
Limites
- Vous pouvez configurer jusqu'à 20 points de terminaison Private Service Connect qui se connectent au rattachement de service d'une instance AlloyDB sur laquelle Private Service Connect est activé.
- Vous ne pouvez pas utiliser l'option
--network
lorsque vous créez un cluster avec Private Service Connect activé, car elle est associée à l'accès aux services privés. - Vous ne pouvez pas activer ni désactiver Private Service Connect sur une instance existante.
- Vous ne pouvez pas configurer une instance pour laquelle Private Service Connect est activé afin d'utiliser l'accès aux services privés.
- Les extensions
pglogical
,dblink
etpostgres_fdw
qui nécessitent une connectivité sortante ne sont pas acceptées.