En esta página se explica cómo configurar y usar el proxy de autenticación de AlloyDB para establecer conexiones autorizadas y cifradas con instancias de AlloyDB. Para obtener una descripción general conceptual del proxy de autenticación, consulta Información sobre el proxy de autenticación de AlloyDB.
Para usar el proxy de autenticación de AlloyDB, debes seguir varios pasos de configuración únicos, iniciar el cliente del proxy de autenticación y, a continuación, conectarte a las bases de datos mediante él:
- Pasos de configuración:
- Descarga el cliente Auth Proxy en tu host cliente.
- Elige el principal de Gestión de Identidades y Accesos (IAM) que quieras usar para la autorización, comprueba que tenga los permisos necesarios y asegúrate de que sus credenciales estén disponibles en el host del cliente.
- Recopila los URIs de conexión de las instancias de AlloyDB a las que quieras conectarte.
- Inicia el cliente Auth Proxy en el host del cliente.
- Conecta una aplicación a una base de datos abriendo una conexión local al cliente proxy de autenticación.
Antes de empezar
-
El host del cliente debe cumplir los siguientes requisitos:
Debe tener visibilidad de la red de nube privada virtual (VPC) en la que residen las instancias a las que quieres conectarte. Los hosts cliente (como las instancias de Compute Engine) de esta red de nube privada virtual (VPC) tienen esta visibilidad de forma inherente. Los hosts de clientes de redes externas (redes on-premise o redes VPC diferentes) tienen esta visibilidad si la red VPC de la instancia de AlloyDB se ha conectado a la red externa mediante un túnel de Cloud VPN o una vinculación de VLAN para Interconexión Dedicada o Interconexión de Partner.
Si el host del cliente tiene una política de cortafuegos de salida, debe permitir las conexiones salientes al puerto
5433
en las direcciones IP de tus instancias de AlloyDB y las conexiones salientes al puerto443
(el puerto HTTPS estándar) a todas las direcciones IP.Si usas una instancia de Compute Engine como host de cliente, debe tener el ámbito de acceso
https://www.googleapis.com/auth/cloud-platform
para poder usar la API AlloyDB. Si es necesario, cambia su ámbito de acceso para incluir este ámbito.
Descarga el cliente Auth Proxy
La máquina en la que descargues el cliente del proxy de autenticación dependerá de si quieres conectarte a tus instancias de AlloyDB desde dentro o desde fuera de su red de VPC.
Si quieres conectarte a tu clúster mediante el acceso a servicios privados, puedes descargar el cliente Auth Proxy en una instancia de máquina virtual (VM) de Compute Engine que se ejecute en la red de VPC que tenga acceso a servicios privados a tu clúster.
Si tienes previsto conectarte a tu clúster desde fuera de la VPC, la máquina en la que lo instales dependerá de la estrategia de conexión externa que utilices. Por ejemplo, puedes instalar el cliente Auth Proxy en un ordenador macOS o Windows que esté en la misma red local que tu aplicación y, a continuación, usar un servidor SOCKS que se ejecute en tu red de VPC de AlloyDB como intermediario de conexión. Para obtener más información, consulta Conectarse a un clúster desde fuera de su VPC.
Linux
64 bits (AMD)
Descarga el cliente de proxy de autenticación:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.6/alloydb-auth-proxy.linux.amd64 -O alloydb-auth-proxy
Haz que el cliente de Auth Proxy sea ejecutable:
chmod +x alloydb-auth-proxy
32 bits (AMD)
Descarga el cliente de proxy de autenticación:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.6/alloydb-auth-proxy.linux.386 -O alloydb-auth-proxy
Haz que el cliente de Auth Proxy sea ejecutable:
chmod +x alloydb-auth-proxy
64 bits (ARM)
Descarga el cliente de proxy de autenticación:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.6/alloydb-auth-proxy.linux.arm64 -O alloydb-auth-proxy
Haz que el cliente de Auth Proxy sea ejecutable:
chmod +x alloydb-auth-proxy
32 bits (ARM)
Descarga el cliente de proxy de autenticación:
wget https://storage.googleapis.com/alloydb-auth-proxy/v1.13.6/alloydb-auth-proxy.linux.arm -O alloydb-auth-proxy
Haz que el cliente de Auth Proxy sea ejecutable:
chmod +x alloydb-auth-proxy
macOS
M1
Descarga el cliente de proxy de autenticación:
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.6/alloydb-auth-proxy.darwin.arm64
Haz que el cliente de Auth Proxy sea ejecutable:
chmod +x alloydb-auth-proxy
64 bits
Descarga el cliente de proxy de autenticación:
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.6/alloydb-auth-proxy.darwin.amd64
Haz que el cliente de Auth Proxy sea ejecutable:
chmod +x alloydb-auth-proxy
32 bits
Descarga el cliente de proxy de autenticación:
curl -o alloydb-auth-proxy https://storage.googleapis.com/alloydb-auth-proxy/v1.13.6/alloydb-auth-proxy.darwin.386
Haz que el cliente de Auth Proxy sea ejecutable:
chmod +x alloydb-auth-proxy
Windows
64 bits
Haz clic con el botón derecho en https://storage.googleapis.com/alloydb-auth-proxy/v1.13.6/alloydb-auth-proxy-x64.exe
y selecciona Guardar enlace como para descargar el cliente de Auth Proxy.
Cambia el nombre del archivo a alloydb-auth-proxy.exe
.
32 bits
Haz clic con el botón derecho en https://storage.googleapis.com/alloydb-auth-proxy/v1.13.6/alloydb-auth-proxy-x86.exe
y selecciona Guardar enlace como para descargar el cliente Auth Proxy.
Cambia el nombre del archivo a alloydb-auth-proxy.exe
.
Imagen Docker
Para mayor comodidad, hay varias imágenes de contenedor que contienen el cliente de Auth Proxy en Artifact Registry.
Puedes extraer la imagen más reciente en tu máquina local con Docker mediante el siguiente comando:
docker pull gcr.io/alloydb-connectors/alloydb-auth-proxy:latest
Otros SO
En el caso de otros sistemas operativos que no se incluyan aquí, puedes compilar el cliente de Auth Proxy a partir del código fuente.
Elige la entidad de IAM y prepárala para la autorización
AlloyDB Auth Proxy admite el uso de estos tipos de principales de IAM para autorizar conexiones entre tu cliente y una instancia de AlloyDB:
Una cuenta de servicio gestionada por el usuario. Puedes crear una cuenta de servicio de gestión de identidades y accesos para tu aplicación y, a continuación, autorizar las conexiones con ella.
Google recomienda encarecidamente que utilices una cuenta de servicio para la autorización en entornos de producción.
Tu cuenta de usuario. Puedes usar tu propia cuenta de usuario de IAM para autorizar conexiones.
Usar tu propia cuenta de usuario es práctico en entornos de desarrollo en los que gestionas recursos de AlloyDB con la CLI de gcloud, desarrollas la base de datos con una herramienta como
psql
y desarrollas código de aplicación en el mismo host.La cuenta de servicio predeterminada de Compute Engine. Si el host del cliente es una instancia de Compute Engine, puedes usar la cuenta de servicio predeterminada de Compute Engine para autorizar las conexiones.
Después de elegir el principal de gestión de identidades y accesos que vas a usar, debes asegurarte de que tenga los permisos de gestión de identidades y accesos necesarios y de que sus credenciales estén disponibles en tu host cliente.
Permisos de gestión de identidades y accesos necesarios
La entidad de gestión de identidades y accesos que uses para autorizar las conexiones debe tener los permisos que proporcionan los roles predefinidos roles/alloydb.client
(Cliente de Cloud AlloyDB) y roles/serviceusage.serviceUsageConsumer
(Consumidor de uso de servicios).
Para asignar el rol de cliente de Cloud AlloyDB a un principal de IAM, sigue estos pasos:
La API Cloud Resource Manager debe estar habilitada en el Google Cloud proyecto.
Debes tener el rol básico de gestión de identidades y accesos
roles/owner
(Propietario) en elGoogle Cloud proyecto o un rol que te conceda estos permisos:resourcemanager.projects.get
resourcemanager.projects.getIamPolicy
resourcemanager.projects.setIamPolicy
Para obtener estos permisos y seguir el principio de mínimos accesos, pide a tu administrador que te asigne el rol
roles/resourcemanager.projectIamAdmin
(administrador de gestión de identidades y accesos del proyecto).
Hacer que las credenciales de gestión de identidades y accesos estén disponibles en el host del cliente
La forma de poner las credenciales de gestión de identidades y accesos a disposición del host del cliente depende del tipo de principal de gestión de identidades y accesos que utilices para autorizar las conexiones:
Cuenta de servicio gestionada por el usuario
Para proporcionar credenciales de IAM a una cuenta de servicio gestionada por el usuario, crea una clave de cuenta de servicio en formato JSON y descárgala en tu host cliente. Cuando inicies el cliente Auth Proxy, especifica la ubicación del archivo de claves con la marca
--credentials-file
.Tu cuenta de usuario
Para proporcionar credenciales de IAM a tu cuenta de usuario, instala la CLI de Google Cloud en tu host cliente y, a continuación, ejecuta el comando
gcloud init
para inicializarla con tu cuenta de usuario. Cuando inicias el cliente Auth Proxy, descubre y usa automáticamente las credenciales de tu cuenta de usuario si no proporcionas credenciales de cuenta de servicio gestionadas por el usuario.Cuenta de servicio predeterminada de Compute Engine
Si usas una instancia de Compute Engine como host de cliente, las credenciales de la cuenta de servicio predeterminada de Compute Engine ya estarán en el host. Cuando inicias el cliente Auth Proxy, este descubre y usa automáticamente estas credenciales si no hay disponibles credenciales de cuenta de servicio gestionada por el usuario ni de cuenta de usuario.
Recopilar URIs de conexión de las instancias de AlloyDB
Cuando inicias el cliente de proxy de autenticación, identificas la instancia o las instancias de AlloyDB a las que quieres conectarte mediante este formato de URI de conexión:
projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Para ver una lista de todos los URIs de conexión de tus instancias, usa el comando de la CLI de gcloud
alloydb instances list
.
Obtenga el URI de conexión de la instancia de cada instancia a la que quiera conectarse.
Iniciar el cliente de proxy de autenticación
Cuando inicias el cliente Auth Proxy, le proporcionas información sobre las instancias de AlloyDB a las que debe conectarse y, si es necesario, información de las credenciales que debe usar al autorizar estas conexiones.
Cuando empieza, el cliente de Auth Proxy hace lo siguiente:
- Autoriza las conexiones a instancias de AlloyDB mediante las credenciales y los permisos de gestión de identidades y accesos de la cuenta principal de gestión de identidades y accesos que hayas configurado. Busca las credenciales siguiendo una secuencia específica de pasos.
- Autoriza automáticamente las conexiones IP públicas a la red de origen si la instancia tiene habilitada la IP pública.
- Configura una conexión privada TLS 1.3 con el servidor proxy de autenticación de cada instancia.
- Empieza a escuchar las solicitudes de conexión de clientes locales.
De forma predeterminada, el cliente de Auth Proxy escucha las conexiones TCP en la dirección IP 127.0.0.1, empezando por el puerto 5432 y aumentando en uno el número de puerto por cada instancia de AlloyDB posterior a la primera. Puedes especificar otra dirección de escucha y otros puertos al iniciar el cliente Auth Proxy.
Línea de comandos
./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 ]
Haz los cambios siguientes:
INSTANCE_URI
: el URI de conexión de la instancia de AlloyDB a la que se va a conectar, especificado con este formato:projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Para anular el puerto de escucha local predeterminado que usará el cliente de Auth Proxy en la instancia, puedes añadir el parámetro de consulta
port
a la URI:"projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?port=PORT"
Opcional:
PATH_TO_KEY_FILE
: la ruta al archivo de clave JSON de la cuenta de servicio gestionada por el usuario que se va a usar para la autorización de la conexión.Opcional:
OAUTH_ACCESS_TOKEN
: valor de token de OAuth2 que se usará para la autorización de conexión.Opcional:
INITIAL_PORT_NUMBER
: número de puerto inicial que se va a usar en lugar del puerto predeterminado5432
al escuchar conexiones TCP locales.Opcional:
LOCAL_LISTENER_ADDRESS
: dirección del receptor que se va a usar en lugar de la dirección127.0.0.1
predeterminada al escuchar conexiones TCP locales.
La marca opcional --auto-iam-authn
permite la autenticación automática en la instancia. Esto solo funciona con el usuario de la base de datos asociado a la cuenta de IAM que ejecuta el cliente Auth Proxy. Para obtener más información, consulta Autenticarse automáticamente mediante el proxy de autenticación.
La marca --psc
opcional permite que el proxy de autenticación se conecte a una instancia con Private Service Connect habilitado. Para obtener más información sobre cómo configurar el DNS con Private Service Connect, consulta Configurar una zona gestionada de DNS y un registro de DNS.
La marca opcional --public-ip
permite que el proxy de autenticación se conecte a una instancia con la IP pública habilitada mediante la dirección IP pública de la instancia. Para obtener más información sobre las IPs públicas, consulta Conectarse mediante una IP pública.
La marca opcional --disable-built-in-telemetry
inhabilita el reportero de métricas interno que usa el proxy de autenticación para informar sobre el estado de la conexión y de la red. De forma predeterminada, Auth Proxy informará sobre sus operaciones internas al prefijo de métrica del sistema alloydb.googleapis.com
. Estas métricas ayudan a AlloyDB a mejorar el rendimiento e identificar problemas de conectividad de los clientes. Esta opción es útil para las aplicaciones que operan en entornos en los que se restringe la exportación de métricas salientes. Si prefieres inhabilitar esta telemetría, usa esta marca.
Contenedor Docker
Inicia el cliente del proxy de autenticación con el comando docker run
.
Si usas las credenciales proporcionadas por tu instancia de Compute Engine, puedes usar un comando similar al siguiente:
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
Haz los cambios siguientes:
PORT
: el puerto que se va a usar para las conexiones locales al cliente Auth Proxy. El valor predeterminado es5432
.INSTANCE_URI
: el URI de conexión de la instancia de una instancia de AlloyDB a la que conectarse, especificado con el siguiente formato:projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID
Para anular el puerto de escucha local predeterminado que usa el cliente de Auth Proxy para la instancia, puede añadir el parámetro de consulta
port
a la URI:"projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?port=PORT"
Especifica siempre el prefijo 127.0.0.1
en la marca --publish
para que el cliente de proxy de autenticación no se exponga fuera del host local.
El valor 0.0.0.0
de la marca --address
es obligatorio para que el receptor sea accesible desde fuera del contenedor de Docker.
Para proporcionar las credenciales que has almacenado en un archivo JSON local, incluye las marcas --volume
y --credentials-file
al ejecutar el comando 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
Sustituye PATH_TO_KEY_FILE
por la ruta al archivo de clave JSON de la cuenta de servicio gestionada por el usuario que se va a usar para la autorización de la conexión.
Ejemplos de startups
En los siguientes ejemplos se muestran varias formas de iniciar el cliente Auth Proxy. Usan estos URIs de conexión de instancias de ejemplo:
projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary
projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool
Inicio básico
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary"
En este ejemplo, el cliente proxy de autenticación autoriza la conexión siguiendo su secuencia de pasos de autorización normal y, a continuación, empieza a escuchar las conexiones locales a la instancia myprimary
en 127.0.0.1:5432
.
Inicio con una cuenta de servicio gestionada por el usuario
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \\
--credentials-file "myappaccount/key.json"
En este ejemplo, el cliente de Auth Proxy autoriza la conexión mediante la clave JSON de la cuenta de servicio gestionada por el usuario almacenada en myappaccount/key.json
y, a continuación, empieza a escuchar las conexiones locales a la instancia myprimary
en
127.0.0.1:5432
.
Startup connecting to multiple instances
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool"
En este ejemplo, el cliente de proxy de autenticación autoriza la conexión siguiendo su secuencia de pasos de autorización normal y, a continuación, empieza a escuchar las conexiones locales a la instancia myprimary
en 127.0.0.1:5432
y a la instancia myreadpool
en 127.0.0.1:5433
.
Iniciar la escucha en puertos personalizados
Usar puertos personalizados para el cliente del proxy de autenticación puede ser útil cuando necesites reservar el puerto 5432
para otras conexiones de 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"
En este ejemplo, el cliente de proxy de autenticación autoriza la conexión siguiendo su secuencia de pasos de autorización normal y, a continuación, empieza a escuchar las conexiones locales a la instancia myprimary
en 127.0.0.1:5000
y a la instancia myreadpool
en 127.0.0.1:5001
.
Como estos puertos personalizados son secuenciales, se puede conseguir el mismo efecto con este comando de inicio:
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myreadpool" \
--port 5000
Iniciar la escucha en una dirección IP personalizada
./alloydb-auth-proxy \
"projects/myproject/locations/us-central1/clusters/mycluster/instances/myprimary" \
--address "0.0.0.0"
En este ejemplo, el cliente proxy de autenticación autoriza la conexión siguiendo su secuencia de pasos de autorización normal y, a continuación, empieza a escuchar las conexiones locales a la instancia myprimary
en 0.0.0.0:5432
.
Conectar una aplicación a una base de datos mediante el proxy de autenticación de AlloyDB
En los siguientes ejemplos se muestra cómo puedes conectar una aplicación a una base de datos mediante el proxy de autenticación de AlloyDB.
El ejemplo de psql
muestra cómo conectar una herramienta de línea de comandos.
Conectarse a una instancia de AlloyDB mediante el proxy de autenticación de AlloyDB es, en varios lenguajes de programación, idéntico a conectarse a una instancia de Cloud SQL para PostgreSQL mediante el proxy de autenticación de Cloud SQL, por lo que los ejemplos de lenguaje que se muestran aquí son los mismos que los de Cloud SQL para PostgreSQL.
Estos ejemplos se basan en un inicio predeterminado del cliente proxy de autenticación para que escuche las conexiones TCP locales en 127.0.0.1:5432
.
psql
psql -h 127.0.0.1 -p 5432 -U DB_USER
Sustituye DB_USER
por el usuario de la base de datos con el que quieras conectarte (por ejemplo, postgres
).
Se te pedirá que introduzcas la contraseña del usuario DB_USER
.
Python
Java
Node.js
Go
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
C#
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
Ruby
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.
PHP
Para ver este fragmento en el contexto de una aplicación web, consulta el archivo README en GitHub.