GOOGLE_APPLICATION_CREDENTIALS, bir sunucuda gcloud ile nasıl kullanılır?


12

gcloudKomut satırını GCE dışındaki bir Hizmet Hesabı ile etkileşimsiz olarak kullanmanın en basit yolu nedir ? Tercihen dosya sistemini kimlik bilgileri dosyaları ile doldurmadan, bu da ne gcloud auth activate-service-account --key-file=...yapar.

gcloudHizmet hesabıyla kullanmak için birçok kullanım durumu vardır . Örneğin, bir sunucuda, GOOGLE_APPLICATION_CREDENTIALSuygulamamı çalıştırmadan önce doğru ayarlandığını ve gerekli izinlere sahip olduğunu test etmek istiyorum. Veya, gcloudkomut satırı ile bazı denetim gerçekleştiren bazı kurulum komut dosyalarını veya cron komut dosyalarını çalıştırmak istiyorum .

Google Cloud kitaplıkları (örn. Python , java ) GOOGLE_APPLICATION_CREDENTIALSGoogle Cloud'da kimlik doğrulaması yapmak için ortam değişkenini otomatik olarak kullanır . Ancak ne yazık ki, bu komut satırının üzerinde hiçbir etkisi yok gibi görünüyor gcloud. gcloudDosya sistemini olduğu gibi bırakırken kullanmanın temiz yolu nedir ?

$ 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.

Lütfen kullanım durumlarınızı belirterek
Kamran

1
Sayı 38098801'i
yonran

Yanıtlar:


21

gcloudgenellikle GOOGLE_APPLICATION_CREDENTIALSortam değişkeni kullanmaz . Bu uygulama varsayılan kimlik bilgilerini ayarlamayı kolaylaştırmak için yalnızca bazı komutları vardır gcloud auth application-default [login|revoke|print-access-token...].

Varsayılan gcloudolarak yapılandırmasını $ {HOME} /. Config / gcloud dizininde saklar. CLOUDSDK_CONFIGOrtam değişkenini ayarlayarak bu konumu geçersiz kılmak mümkündür .

Ayrıca gcloud config set ...ve / veya üzerinden önceden yapılandırılmaları gerekmeyecek şekilde çoğu ayarı geçersiz kılmak mümkündür (daha sıkıcı olsa da) gcloud auth activate-service-account. Her ayar için ortam değişkeni belirtilebilir.

Örneğin, hizmet hesabı anahtar dosyasını kullanmaya çalıştığınız eşdeğer komut şöyle olacaktır:

$ CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/etc/my-service-account-4b4b6e63aaed.json \
    gcloud alpha pubsub topics publish testtopic hello

CLOUDSDK_CONFIGErişim belirtecini önbelleğe alması gerektiğinden, kimlik bilgilerini yine de önbelleğe alacağını unutmayın , böylece her çağrıda yenilemek zorunda kalmazsınız.

Kullanım durumunuz için bence en iyi seçenek

  1. CLOUDSDK_CONFIGBir geçici dizine ayarla
  2. gcloud auth activate-service-account --key-file=...
  3. ... gcloudişini yapmak için kullan ...
  4. Geçici CLOUDSDK_CONFIGdizini kaldırın .

1

Seçeneğe --accountbaktınız mı? Sevmek

$gcloud --account="foo" ...

( Referans )

"Tercihen kimlik bilgilerini dosyaları ile dosya sistemi çöp olmadan" ile ilgili, ben mümkün olup olmadığını emin değilim.


Ben OP başka bir yerde kimlik bilgilerini önbelleğe alır hizmet hesabı kimlik bilgilerini etkinleştirmek zorunda kalmadan nasıl kimlik doğrulaması hakkında soruyor düşünüyorum. Sadece --account=kimlik bilgileri etkinleştirildikten sonra kullanabileceğinizi düşünüyorum .
David Xia

1

1) GCP IAM'de bir ServiceAccount oluşturun. "Yeni bir özel anahtar ver" kutusunu işaretleyin ve dosya türü olarak JSON'u seçin.

2) JSON dosyasını sunucunuza indirin ve şunu yazın: gcloud auth activate-service-account --key-file serviceaccount.json

3) Çalışarak kimlik bilgilerinin uygulandığını doğrulayın gcloud auth list.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.