La CLI de gcloud y las claves de cuenta de servicio p12

La CLI de gcloud permite a los desarrolladores usar claves privadas para autenticarse en cuentas de servicio, también conocidas como cuentas robot. En esta página se describe cómo crear y usar claves p12 de cuentas de servicio para la Google Cloud.

Instalar pyca/cryptography

La biblioteca pyca/cryptography (versión >= 2.5) permite que la CLI de gcloud decodifique los archivos de claves con formato p12 que identifican una cuenta de servicio. Como incluye rutinas criptográficas, pyca/cryptography no se distribuye con la CLI de gcloud.

Si tu sistema tiene instalado pip, la interfaz de línea de comandos de Python Package Index, ejecuta el siguiente comando para instalar pyca/cryptography. Consulta las instrucciones de instalación para obtener más información.

python -m pip install cryptography

CLOUDSDK_PYTHON_SITEPACKAGES=1

Una vez que se haya instalado pyca/cryptography, tendrás que definir la variable de entorno CLOUDSDK_PYTHON_SITEPACKAGES en 1. Este ajuste de la variable de entorno indica a la CLI de gcloud que debe buscar bibliotecas fuera de su propio directorio google-cloud-sdk/lib para incluirlas. Por lo general, es seguro definir CLOUDSDK_PYTHON_SITEPACKAGES=1, pero si algo deja de funcionar, es posible que tengas que deshacerlo.

Creando una cuenta de servicio

Para crear una cuenta de servicio y descargar un archivo de clave p12, sigue los pasos que se indican en el artículo Crear claves de cuenta de servicio.

Este archivo de claves debe considerarse secreto y debes tomar precauciones para asegurarte de que no puedan acceder a él terceros que no sean de confianza. En sistemas tipo Unix, puedes asegurarte de que un archivo no sea visible para otros usuarios conectados de forma remota (excepto el usuario root) mediante el siguiente comando.

chmod 0600 YOUR_KEY_FILE.p12

Usar tu cuenta de servicio con la CLI de gcloud

Las credenciales de la cuenta de servicio se pueden habilitar mediante gcloud auth activate-service-account.

Para usar tu cuenta de servicio con la CLI de gcloud, ejecuta gcloud auth activate-service-account y pásale la ruta a tu archivo de clave con la marca --key-file obligatoria, así como una cuenta como argumento posicional.

La cuenta que utilices debe ser el correo de la cuenta de servicio que aparece en la consola Google Cloud , pero no se verificará. Solo te ayudará a recordar qué cuenta estás usando.

gcloud auth activate-service-account --key-file ~/mykeys/my_key_file.p12 my_service_account@developer.gserviceaccount.com
Activated service account credentials for my_service_account@developer.gserviceaccount.com.

ADVERTENCIA: gcloud auth activate-service-account hará una copia de tu clave privada y la almacenará en $HOME/.config/gcloud/legacy_credentials/my_service_account@developer.gserviceaccount.com/private_key.p12 y $HOME/.config/gcloud/credentials.db. Se creará con permisos de 0600 (lectura y escritura solo para tu usuario) y todo lo que se almacene en $HOME/.config/gcloud ya se considerará un secreto. Para eliminar de forma fiable y segura los datos de autenticación almacenados por la CLI de gcloud, solo tienes que eliminar $HOME/.config/gcloud. El usuario es el responsable de gestionar de forma segura el archivo de clave descargado de la Google Cloud consola. Si tienes dudas, revoca la clave en la Google Cloud consola.

Ahora que la cuenta de servicio se ha activado, se puede ver en la lista de credenciales.

gcloud auth list
        Credentialed Accounts
ACTIVE    ACCOUNT
*         my_service_account@developer.gserviceaccount.com

To set the active account, run:
    $ gcloud config set account my_service_account@developer.gserviceaccount.com

Volver al principio