जीएसटीई से "एक्सेसडेनएडएक्ससेप्शन: 403 अपर्याप्त अनुमति" की वापसी वाली जीएसटीआईएल कॉपी


90

मैं SSH के माध्यम से GCE उदाहरण में लॉग इन हूं। वहाँ से मैं एक सेवा खाते की मदद से संग्रहण तक पहुँचना चाहूँगा:

GCE> gcloud auth list
Credentialed accounts:
 - 1234567890-compute@developer.gserviceaccount.com (active)

मैंने पहली बार यह सुनिश्चित किया कि यह सेवा खाता उस प्रोजेक्ट की अनुमतियों में "संपादित कर सकता है", जिसे मैं काम कर रहा हूं। "

local> gsutil acl ch -u 1234567890-compute@developer.gserviceaccount.com:W gs://mybucket

लेकिन तब निम्न आदेश विफल रहता है:

GCE> gsutil cp test.txt gs://mybucket/logs

(मैंने यह भी सुनिश्चित किया कि "लॉग" "mybucket" के तहत बनाया गया है)।

मुझे मिलने वाला त्रुटि संदेश है:

Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission               0 B  

मैं क्या खो रहा हूँ?


7
क्या जीसीई वीएम को पूर्ण नियंत्रण के साथ बनाया गया था या जीसीएस दायरे को पढ़ा / लिखा गया था?
17

1
उसे इंगित करने के लिए धन्यवाद। मुझे वास्तव में उस विकल्प के बारे में पता नहीं था। मैंने सक्षम किए गए विकल्प के साथ इंस्टेंस को फिर से बनाया और यह काम किया। यदि आप एक उत्तर के रूप में झंडे को चालू करने का सुझाव दे सकते हैं तो मैं इसे खुशी से झंडी दिखाऊंगा।
क्रिस्टोफ़

जवाबों:


131

देखने के लिए एक और चीज यह सुनिश्चित करना है कि आप जीसीई वीएम बनाते समय उपयुक्त स्कोप स्थापित करें। भले ही एक वीएम का एक सेवा खाता संलग्न हो, उसे जीसीएस का उपयोग करने के लिए डिस्टॉर्ज़ स्कूप सौंपा जाना चाहिए।

उदाहरण के लिए, यदि आपने अपने VM को devstorage.read_onlyस्कोप के साथ बनाया है, तो एक बाल्टी में लिखने की कोशिश विफल हो जाएगी, भले ही आपके सेवा खाते में बाल्टी को लिखने की अनुमति हो। आपको आवश्यकता होगी devstorage.full_controlयाdevstorage.read_write

सेवा खातों का उपयोग करने के लिए एक उदाहरण तैयार करने पर अनुभाग देखेंविवरण के लिए देखें।

ध्यान दें: डिफ़ॉल्ट गणना सेवा खाते में बहुत सीमित स्कोप हैं (जिनमें केवल पढ़ने के लिए जीसीएस शामिल है)। ऐसा इसलिए किया जाता है क्योंकि डिफ़ॉल्ट सेवा खाते में प्रोजेक्ट संपादक IAM अनुमतियाँ होती हैं। यदि आप किसी भी उपयोगकर्ता सेवा खाते का उपयोग करते हैं, तो यह आमतौर पर एक समस्या नहीं है क्योंकि उपयोगकर्ता द्वारा निर्मित सेवा खातों को डिफ़ॉल्ट रूप से सभी गुंजाइश मिलती है।

VM में आवश्यक स्कोप जोड़ने के बाद, gsutilअभी भी कैश्ड क्रेडेंशियल्स का उपयोग किया जा सकता है , जिसमें नए स्कोप नहीं हैं। ~/.gsutilफिर से gsutil कमांड को आज़माने से पहले हटाएं । (टिप्पणियों में इसे इंगित करने के लिए @mndrix के लिए धन्यवाद।)


1
मैंने अनुमतियों के साथ अपने उदाहरण को फिर से बनाया और यह अब काम करता है। धन्यवाद
Syclone

33
अब तक, आप स्कोप को संपादित कर सकते हैं। मशीन बंद करें - संपादित करें - फिर क्लाउड एपीआई एक्सेस स्कोप बदलें। मेरा मानना ​​है कि यह केवल अब लगभग एक महीने के लिए उपलब्ध है।
वारेन

143
VM में आवश्यक स्कोप जोड़ने के बाद, gsutilअभी भी कैश्ड क्रेडेंशियल्स का उपयोग किया जा सकता है , जिसमें नए स्कोप नहीं हैं। gsutilआदेशों को फिर से आज़माने से पहले ~ / .gsutil हटा दें ।
15

2
बहुत बहुत धन्यवाद!
गिलर्मो

2
@ मॉन्ड्रिक्स दिन को बचाता है
बेन गिल्ड

50

आपको उस खाते से लॉग-इन करना होगा जिसमें आपके पास उस परियोजना के लिए आवश्यक अनुमतियाँ हों:

gcloud auth login

1
gcloud auth revoke <email-account>समाप्त करने के बाद जारी करना न भूलें ।
ssasa

50

gsutil config -b

फिर उस URL पर सर्फ करें जो इसे प्रदान करता है, [CLICK Allow]

फिर सत्यापन कोड कॉपी करें और टर्मिनल पर पेस्ट करें।


ध्यान दें कि यह काम नहीं करता है यदि आप से चलाते gsutilहैं ssh
bfontaine

3
यह आपके ब्राउज़र को न खोलने के लिए "काम नहीं करता" है। इसके बजाय, यह आपको मैन्युअल रूप से कॉपी और पेस्ट करने के लिए एक url प्रदान करता है।
BuvinJ

6
यदि आप ड्रॉप करते हैं तो-b यह अन्य सभी के लिए भी ठीक है । यह एक ब्राउज़र नहीं खोलेगा, लेकिन केवल एक url बाहर थूक देगा जो शेल के बाहर खोला जा सकता है।
oligofren

8

मैंने इस सवाल का जवाब लिखा है क्योंकि मैं टिप्पणी पोस्ट नहीं कर सकता:

यदि आप कुछ मामलों में उपसर्ग के gsutilसाथ कमांड चला रहे हैं तो यह त्रुटि भी हो सकती है sudo


3
यह वास्तव में एक टिप्पणी है, एक जवाब नहीं है। थोड़ा और प्रतिनिधि के साथ, आप टिप्पणी पोस्ट करने में सक्षम होंगे
लेसे

1
मैंने उत्तर (+1) दिया है ताकि @ TheLoneDeranger 'पोस्ट टिप्पणी' विशेषाधिकार की प्रतिष्ठा के करीब होगा।
रैन लाइफशिट

8
  1. VM को रोकें
  2. मिला -> वीएम उदाहरण विवरण।
  3. "क्लाउड एपीआई एक्सेस स्कोप" में "सभी क्लाउड एपीआई पर पूर्ण पहुंच की अनुमति दें" का चयन करें फिर "सहेजें" पर क्लिक करें।
  4. VM को पुनरारंभ करें और ~ / .gsutil को हटा दें।


3
  1. आपके द्वारा बाल्टी बनाने के बाद, अनुमतियाँ टैब पर जाएं और अपना ईमेल जोड़ें और संग्रहण व्यवस्थापक की अनुमति सेट करें ।

स्क्रीनशॉट

  1. एसएसएच >> रन कमांड के जरिए वीएम उदाहरण तक पहुंचें: gcloud auth loginऔर चरणों का पालन करें।

Ref: https://groups.google.com/d/msg/gce-discussion/0L6sLRjX8kg/kP47FklzBgAJ


2

इसलिए मैंने जीसीएस बाल्टी से अपने वीएम पर कॉपी करने की कोशिश की चीजों का एक गुच्छा बनाया। आशा है यह पोस्ट किसी की मदद करे।

SSHed कनेक्शन: यहां छवि विवरण दर्ज करें

और इस स्क्रिप्ट का अनुसरण कर रहे हैं:

sudo gsutil cp gs://[BUCKET_NAME]/[OBJECT_NAME] [OBJECT_DESTINATION_IN_LOCAL]

यह त्रुटि मिली:

AccessDeniedException: 403 Access कॉन्फ़िगर नहीं है। कृपया अपनी परियोजना के लिए Google क्लाउड प्लेटफ़ॉर्म कंसोल ( https://cloud.google.com/console#/project ) पर जाएं , API और प्रामाणिक का चयन करें और Google क्लाउड संग्रहण JSON API को सक्षम करें।

इस लिंक में उल्लिखित "एपीआई को सक्रिय करना" अनुभाग निम्नलिखित था - https://cloud.google.com/storage/docs/json@api/

यहां छवि विवरण दर्ज करें

एक बार जब मैंने एपीआई को सक्रिय कर लिया तो मैंने खुद को SSHed विंडो के माध्यम से प्रमाणित किया

gcloud auth login

प्रमाणीकरण प्रक्रिया के बाद मैं अंततः Google संग्रहण बाल्टी से अपने VM में डाउनलोड करने में सक्षम था।

पुनश्च

मैंने यह सुनिश्चित किया:

  1. सुनिश्चित करें कि मेरे वीएम उदाहरण पर gsutils स्थापित हैं।
  2. मेरी बाल्टी पर जाएं, अनुमति टैब पर जाएं और वांछित सेवा खाते जोड़ें और संग्रहण व्यवस्थापक अनुमति / भूमिका सेट करें। यहां छवि विवरण दर्ज करें

    3. सुनिश्चित करें कि मेरे VM के पास उचित Cloud API एक्सेस स्कोप हैं: यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें


1

डॉक्स से: https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes

आपको पहले उदाहरण को रोकना होगा -> संपादन पृष्ठ पर जाएं -> "क्लाउड एपीआई एक्सेस स्कोप्स" पर जाएं और "स्टोरेज पूर्ण एक्सेस या पढ़ने / लिखने या जो भी आपको इसके लिए आवश्यक हो उसे चुनें"

उदाहरण के लिए सेवा खाता और एक्सेस स्कोप बदलना यदि आप वीएम को एक अलग पहचान के रूप में चलाना चाहते हैं, या आप यह निर्धारित करते हैं कि इंस्टेंस को आवश्यक एपीआई को कॉल करने के लिए स्कोप के एक अलग सेट की आवश्यकता है, तो आप सेवा खाते और एक्सेस स्कोप को बदल सकते हैं एक मौजूदा उदाहरण के। उदाहरण के लिए, आप एक नए API तक पहुँच प्रदान करने के लिए एक्सेस स्कोप को बदल सकते हैं, या एक उदाहरण बदल सकते हैं ताकि यह आपके द्वारा बनाए गए सेवा खाते के रूप में चलता हो, बजाय Compute Engine Default Service Account के।

किसी इंस्टेंस के सेवा खाते और एक्सेस स्कोप को बदलने के लिए, इंस्टेंट को अस्थायी रूप से रोका जाना चाहिए। अपने इंस्टेंस को रोकने के लिए, स्टॉपिंग इंस्टेंस के लिए प्रलेखन पढ़ें। सेवा खाता या एक्सेस स्कोप बदलने के बाद, उदाहरण को पुनः आरंभ करना याद रखें। सेवा खाते को बदलने या रोके गए उदाहरण के एक्सेस स्कोपों ​​में से किसी एक विधि का उपयोग करें।


0

बाल्टी की अनुमति बदलें।

"सभी उपयोगकर्ता" के लिए एक उपयोगकर्ता जोड़ें और "संग्रहण व्यवस्थापक" एक्सेस दें।

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