Jestem zalogowany do instancji GCE przez SSH. Stamtąd chciałbym uzyskać dostęp do Magazynu za pomocą Konta Serwisowego:
GCE> gcloud auth list
Credentialed accounts:
- [email protected] (active)
Najpierw upewniłem się, że to konto usługi jest oznaczone jako „Może edytować” w uprawnieniach projektu, w którym pracuję. Upewniłem się również, że dałem mu listę ACL zapisu w zasobniku, który chciałbym, aby skopiował plik:
local> gsutil acl ch -u [email protected]:W gs://mybucket
Ale wtedy następujące polecenie kończy się niepowodzeniem:
GCE> gsutil cp test.txt gs://mybucket/logs
(Upewniłem się również, że „logi” są tworzone w „mybucket”).
Otrzymuję komunikat o błędzie:
Copying file://test.txt [Content-Type=text/plain]...
AccessDeniedException: 403 Insufficient Permission 0 B
czego mi brakuje?
google-cloud-storage
Christophe
źródło
źródło
Odpowiedzi:
Inną rzeczą, na którą należy zwrócić uwagę, jest skonfigurowanie odpowiednich zakresów podczas tworzenia maszyny wirtualnej GCE. Nawet jeśli maszyna wirtualna ma dołączone konto usługi, należy przypisać jej zakresy devstorage, aby uzyskać dostęp do GCS.
Na przykład, jeśli utworzyłeś maszynę wirtualną z
devstorage.read_only
zakresem, próba zapisu do zasobnika zakończy się niepowodzeniem, nawet jeśli Twoje konto usługi ma uprawnienia do zapisu w zasobniku. Potrzebowałbyśdevstorage.full_control
lubdevstorage.read_write
.Szczegółowe informacje można znaleźć w sekcji Przygotowanie instancji do korzystania z kont usług .
Uwaga: domyślne konto usługi obliczeniowej ma bardzo ograniczone zakresy (w tym tylko do odczytu do GCS). Dzieje się tak, ponieważ domyślne konto usługi ma uprawnienia edytora projektów. Jeśli używasz dowolnego konta usługi użytkownika, zwykle nie stanowi to problemu, ponieważ konta usługi utworzone przez użytkowników domyślnie uzyskują dostęp do całego zakresu.
Po dodaniu niezbędnych zakresów do maszyny wirtualnej
gsutil
może nadal używać buforowanych poświadczeń, które nie mają nowych zakresów. Usuń~/.gsutil
przed ponowną próbą wykonania poleceń gsutil. (Dzięki @mndrix za wskazanie tego w komentarzach).źródło
gsutil
może nadal używać buforowanych poświadczeń, które nie mają nowych zakresów. Usuń ~ / .gsutil przed ponownym wykonaniemgsutil
poleceń.Musisz zalogować się na konto, które ma uprawnienia potrzebne do tego projektu:
źródło
gcloud auth revoke <email-account>
po zakończeniu.gsutil config -b
Następnie przejdź do podanego adresu URL, [KLIKNIJ Zezwalaj]
Następnie skopiuj kod weryfikacyjny i wklej do terminala.
źródło
gsutil
zssh
.-b
. To nie otworzy przeglądarki, ale po prostu wypluje adres URL, który można otworzyć poza powłoką.źródło
Napisałem odpowiedź na to pytanie, ponieważ nie mogę komentować:
Ten błąd może również wystąpić, jeśli w niektórych przypadkach uruchamiasz
gsutil
polecenie zsudo
prefiksem.źródło
gcloud auth login
i postępuj zgodnie z instrukcjami.Odniesienie: https://groups.google.com/d/msg/gce-discussion/0L6sLRjX8kg/kP47FklzBgAJ
źródło
Próbowałem więc wielu rzeczy, próbując skopiować z zasobnika GCS na moją maszynę wirtualną. Mam nadzieję, że ten post komuś pomoże.
Przez połączenie SSHed:
i postępując zgodnie z tym skryptem:
Mam ten błąd:
Naprawiono ten problem po sekcji „Aktywacja interfejsu API” wymienionej w tym linku - https://cloud.google.com/storage/docs/json_api/
Po aktywowaniu API uwierzytelniłem się w oknie SSHed za pośrednictwem
Po procedurze uwierzytelniania w końcu udało mi się pobrać z zasobnika pamięci masowej Google na moją maszynę wirtualną.
PS
Upewniłem się, że:
Przejdź do mojego zasobnika, przejdź do karty uprawnień i dodaj żądane konta usług oraz ustaw uprawnienia / rolę administratora magazynu.
3.Upewnij się, że moja maszyna wirtualna ma odpowiednie zakresy dostępu Cloud API:
źródło
Z dokumentów: https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances#changeserviceaccountandscopes
Najpierw musisz zatrzymać instancję -> przejdź do strony edycji -> przejdź do „Zakresów dostępu do Cloud API” i wybierz „pełny dostęp do pamięci masowej lub odczyt / zapis lub cokolwiek potrzebujesz”
źródło
Zmień uprawnienia zasobnika.
Dodaj użytkownika dla „Wszystkich użytkowników” i przyznaj uprawnienia „Administrator pamięci”.
źródło