सर्वर पर gcloud के साथ GOOGLE_APPLICATION_CREDENTIALS का उपयोग कैसे करें?


11

gcloudGCE के बाहर सेवा खाते के साथ गैर-संवादात्मक रूप से कमांड लाइन का उपयोग करने का सबसे सरल तरीका क्या है ? अधिमानतः फ़ाइल सिस्टम को क्रेडेंशियल फ़ाइलों के साथ कूड़े के बिना, जो कि gcloud auth activate-service-account --key-file=...करता है।

gcloudसेवा खाते के साथ उपयोग करने के कई उपयोग मामले हैं। उदाहरण के लिए, एक सर्वर पर, मैं परीक्षण करना चाहूंगा कि GOOGLE_APPLICATION_CREDENTIALSयह सही ढंग से सेट है और मेरे आवेदन को चलाने से पहले आवश्यक अनुमतियाँ हैं। या, मैं कुछ सेटअप स्क्रिप्ट या क्रोन स्क्रिप्ट चलाना चाहूंगा जो gcloudकमांड लाइन के साथ कुछ जांच करते हैं ।

Google क्लाउड लाइब्रेरी (जैसे अजगर , जावा ) स्वचालित रूप GOOGLE_APPLICATION_CREDENTIALSसे Google क्लाउड को प्रमाणित करने के लिए पर्यावरण चर का उपयोग करते हैं । लेकिन दुर्भाग्य से, इस कमांड लाइन का कोई प्रभाव नहीं है gcloudgcloudफाइलसिस्टम को बरकरार रखते हुए उपयोग करने का एक साफ तरीका क्या है ?

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

कृपया अपने उपयोग के मामलों का उल्लेख के साथ Google सार्वजनिक समस्या ट्रैकर पर एक सुविधा का अनुरोध खोलने के लिए स्वतंत्र महसूस: issuetracker.google.com
कामरान

1
मैंने मुद्दा 38098801
योनरान

जवाबों:


20

gcloudआम तौर पर GOOGLE_APPLICATION_CREDENTIALSपर्यावरण चर का उपयोग नहीं करता है । इसमें केवल इन एप्लिकेशन को डिफ़ॉल्ट क्रेडेंशियल स्थापित करने की सुविधा के लिए कुछ कमांड हैं gcloud auth application-default [login|revoke|print-access-token...]

डिफ़ॉल्ट रूप gcloudसे $ {HOME} / config / gcloud में इसके कॉन्फ़िगरेशन को संग्रहीत करता है। CLOUDSDK_CONFIGपर्यावरण चर सेट करके उस स्थान को ओवरराइड करना संभव है ।

यह भी संभव है (हालांकि अधिक थकाऊ) अधिकांश सेटिंग को ओवरराइड करने के लिए ताकि उन्हें gcloud config set .../ और या के माध्यम से पूर्व-निर्धारित होने की आवश्यकता न हो gcloud auth activate-service-account। प्रत्येक सेटिंग के लिए एक पर्यावरण चर निर्दिष्ट कर सकता है।

उदाहरण के लिए आपने सेवा खाता कुंजी फ़ाइल का उपयोग करने की कोशिश की समतुल्य कमांड होगी:

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

ध्यान दें कि यह अभी भी क्रेडेंशियल कैश करेगा CLOUDSDK_CONFIGक्योंकि इसे एक्सेस-टोकन कैश करने की आवश्यकता है, ताकि इसे अपने इनवोकेशन पर रिफ्रेश करना पड़े।

आपके उपयोग के मामले में मेरे विचार में सबसे अच्छा विकल्प होगा

  1. CLOUDSDK_CONFIGकुछ अस्थायी निर्देशिका पर सेट करें
  2. gcloud auth activate-service-account --key-file=...
  3. ... gcloudअपना काम करने के लिए उपयोग करें ...
  4. अस्थायी CLOUDSDK_CONFIGनिर्देशिका निकालें ।

1

क्या आपने --accountविकल्प देखा है? पसंद

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

( संदर्भ )

"क्रेडेंशियल फ़ाइलों के साथ फ़ाइल सिस्टम को लैटरिंग के बिना अधिमानतः" के बारे में, मुझे यकीन नहीं है कि इसे प्राप्त करना संभव है।


मुझे लगता है कि ओपी इस बारे में पूछ रहा है कि सेवा खाता क्रेडेंशियल्स को सक्रिय किए बिना कैसे प्रमाणित किया जाए जो क्रेडेंशियल्स को कहीं और कैश करता है। मुझे लगता है कि --account=क्रेडेंशियल्स के सक्रिय होने के बाद ही आप उपयोग कर सकते हैं।
डेविड ज़िया

1

1) GCP IAM में एक ServiceAccount बनाएँ। "एक नई निजी कुंजी को सुसज्जित करें" बॉक्स को चेक करें, और फ़ाइल प्रकार के रूप में JSON का चयन करें।

2) अपने सर्वर पर JSON फाइल डाउनलोड करें, और टाइप करें: gcloud auth activate-service-account --key-file serviceaccount.json

3) सत्यापित क्रेडेंशियल्स को चलाने के द्वारा लागू किया गया था gcloud auth list

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.