¿Cuál es la forma más sencilla de usar la gcloud
línea de comandos de forma no interactiva con una cuenta de servicio fuera de GCE? Preferiblemente sin ensuciar el sistema de archivos con archivos de credenciales, que es lo que gcloud auth activate-service-account --key-file=...
hace.
Hay muchos casos de uso para usar gcloud
con una cuenta de servicio. Por ejemplo, en un servidor, me gustaría probar que GOOGLE_APPLICATION_CREDENTIALS
está configurado correctamente y tiene los permisos necesarios antes de ejecutar mi aplicación. O, me gustaría ejecutar algunos scripts de configuración o scripts cron que realicen alguna comprobación con la gcloud
línea de comando.
Las bibliotecas de Google Cloud (por ejemplo , python , java ) usan automáticamente la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
para autenticarse en Google Cloud. Pero desafortunadamente, esta línea de comando parece no tener efecto gcloud
. ¿Cuál es una forma limpia de usar gcloud
dejando el sistema de archivos intacto?
$ GOOGLE_APPLICATION_CREDENTIALS=/etc/my-service-account-4b4b6e63aaed.json gcloud alpha pubsub topics publish testtopic hello
ERROR: (gcloud.alpha.pubsub.topics.publish) You do not currently have an active account selected.
Please run:
$ gcloud auth login
to obtain new credentials, or if you have already logged in with a
different account:
$ gcloud config set account ACCOUNT
to select an already authenticated account to use.
fuente
Respuestas:
gcloud
generalmente no usaGOOGLE_APPLICATION_CREDENTIALS
variable de entorno. Solo tiene algunos comandos para facilitar la configuración de estas credenciales predeterminadas de la aplicacióngcloud auth application-default [login|revoke|print-access-token...]
.Por defecto
gcloud
almacena su configuración en $ {HOME} /. Config / gcloud. Es posible anular esa ubicación configurandoCLOUDSDK_CONFIG
la variable de entorno.También es posible (aunque más tedioso) anular la mayoría de las configuraciones para que no tengan que preconfigurarse mediante
gcloud config set ...
y / ogcloud auth activate-service-account
. Para cada configuración, se puede especificar la variable de entorno.Por ejemplo, el comando equivalente que intentó usar el archivo de clave de la cuenta de servicio sería:
Tenga en cuenta que esto seguirá almacenando en caché las credenciales
CLOUDSDK_CONFIG
ya que necesita almacenar en caché el token de acceso, de modo que no tendrá que actualizarlo en cada invocación.Para su caso de uso, la mejor opción en mi opinión sería
CLOUDSDK_CONFIG
en algún directorio temporalgcloud auth activate-service-account --key-file=...
gcloud
hacer tu trabajo ...CLOUDSDK_CONFIG
directorio temporal .fuente
¿Has mirado la
--account
opción? Me gusta( Referencia )
Con respecto a "Preferiblemente sin ensuciar el sistema de archivos con archivos de credenciales", no estoy seguro de si es posible lograrlo.
fuente
--account=
una vez que se hayan activado las credenciales.1) Cree una cuenta de servicio en GCP IAM. Marque la casilla "Proporcionar una nueva clave privada" y seleccione JSON como tipo de archivo.
2) Descargue el archivo JSON en su servidor y escriba:
gcloud auth activate-service-account --key-file serviceaccount.json
3) Verifique que las credenciales se hayan aplicado ejecutando
gcloud auth list
.fuente