¿Cuál es la forma más sencilla de usar la gcloudlí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 gcloudcon una cuenta de servicio. Por ejemplo, en un servidor, me gustaría probar que GOOGLE_APPLICATION_CREDENTIALSestá 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 gcloudlínea de comando.
Las bibliotecas de Google Cloud (por ejemplo , python , java ) usan automáticamente la variable de entorno GOOGLE_APPLICATION_CREDENTIALSpara autenticarse en Google Cloud. Pero desafortunadamente, esta línea de comando parece no tener efecto gcloud. ¿Cuál es una forma limpia de usar gclouddejando 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:
gcloudgeneralmente no usaGOOGLE_APPLICATION_CREDENTIALSvariable 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
gcloudalmacena su configuración en $ {HOME} /. Config / gcloud. Es posible anular esa ubicación configurandoCLOUDSDK_CONFIGla 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_CONFIGya 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_CONFIGen algún directorio temporalgcloud auth activate-service-account --key-file=...gcloudhacer tu trabajo ...CLOUDSDK_CONFIGdirectorio temporal .fuente
¿Has mirado la
--accountopció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.json3) Verifique que las credenciales se hayan aplicado ejecutando
gcloud auth list.fuente