[google-cloud-storage] GCE에서 ‘AccessDeniedException : 403 Insufficient Permission’을 반환하는 gsutil 사본

SSH를 통해 GCE 인스턴스에 로그인했습니다. 거기에서 서비스 계정의 도움으로 스토리지에 액세스하고 싶습니다.

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

먼저 작업중인 프로젝트의 권한에서이 서비스 계정에 “수정 가능”플래그가 지정되었는지 확인했습니다. 또한 파일을 복사 할 버킷에 대한 쓰기 ACL을 그에게 제공했습니다.

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

그러나 다음 명령이 실패합니다.

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

(또한 “mybucket”아래에 “logs”가 생성되었는지 확인했습니다.)

내가 얻는 오류 메시지는 다음과 같습니다.

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

내가 무엇을 놓치고 있습니까?



답변

찾아야 할 또 다른 사항은 GCE VM을 만들 때 적절한 범위를 설정했는지 확인하는 것입니다. VM에 서비스 계정이 연결되어 있어도 GCS에 액세스하려면 devstorage 범위를 할당해야합니다.

예를 들어 devstorage.read_only범위가있는 VM을 만든 경우 서비스 계정에 버킷에 대한 쓰기 권한이 있어도 버킷에 대한 쓰기 시도가 실패합니다. 당신은 필요 devstorage.full_controldevstorage.read_write.

자세한 내용은 서비스 계정을 사용할 인스턴스 준비 섹션을 참조 하세요.

참고 : 기본 컴퓨팅 서비스 계정의 범위는 매우 제한적입니다 (GCS에 대한 읽기 전용 포함). 이는 기본 서비스 계정에 프로젝트 편집자 IAM 권한이 있기 때문에 수행됩니다. 사용자 서비스 계정을 사용하는 경우 사용자가 만든 서비스 계정은 기본적으로 모든 범위 액세스 권한을 갖기 때문에 일반적으로 문제가되지 않습니다.

VM에 필요한 범위를 추가 한 후에도 gsutil새 범위가없는 캐시 된 자격 증명을 계속 사용할 수 있습니다. ~/.gsutilgsutil 명령어를 다시 시도하기 전에 삭제 하세요. (댓글에서 이것을 지적한 @mndrix에게 감사드립니다.)


답변

해당 프로젝트에 필요한 권한이있는 계정으로 로그인해야합니다.

gcloud auth login


답변

gsutil config -b

그런 다음 제공하는 URL로 이동합니다.
[클릭 허용]

그런 다음 인증 코드를 복사하여 터미널에 붙여 넣습니다.


답변

댓글을 올릴 수 없기 때문에이 질문에 대한 답변을 작성했습니다.

이 오류는 경우 gsutil에 따라 sudo접두사가 있는 명령을 실행하는 경우에도 발생할 수 있습니다 .


답변

  1. VM 중지
  2. got-> VM 인스턴스 세부 정보.
  3. “Cloud API 액세스 범위”에서 “모든 클라우드 API에 대한 전체 액세스 허용”을 선택한 다음 “저장”을 클릭합니다.
  4. VM을 다시 시작하고 ~ / .gsutil을 삭제합니다.


답변

  1. 버킷을 생성 한 후 권한 탭으로 이동하여 이메일을 추가하고 스토리지 관리자 권한을 설정 합니다.

스크린 샷

  1. SSH >> 실행 명령을 통해 VM 인스턴스에 액세스 gcloud auth login하고 단계를 따릅니다.

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


답변

그래서 GCS 버킷에서 VM으로 복사하려고 시도했습니다. 이 게시물이 누군가에게 도움이되기를 바랍니다.

SSH 연결을 통해 :
여기에 이미지 설명 입력

이 스크립트를 따르십시오.

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

이 오류가 발생했습니다.

AccessDeniedException : 403 액세스가 구성되지 않았습니다. 프로젝트 의 Google Cloud Platform 콘솔 ( https://cloud.google.com/console#/project )로 이동하여 API 및 인증을 선택하고 Google Cloud Storage JSON API를 사용 설정하세요.

이 문제를 해결 한 것은이 링크 ( https://cloud.google.com/storage/docs/json_api/)에 언급 된 “API 활성화”섹션을 따르는 것이 었습니다.

여기에 이미지 설명 입력

API를 활성화하면 SSHed 창에서

gcloud auth login

인증 절차에 따라 마침내 Google Storage Bucket에서 VM으로 다운로드 할 수있었습니다.

추신

나는 확인했다 :

  1. 내 VM 인스턴스에 gsutils가 설치되어 있는지 확인합니다.
  2. 내 버킷으로 이동하여 권한 탭으로 이동하여 원하는 서비스 계정을 추가하고 스토리지 관리자 권한 / 역할을 설정합니다.
    여기에 이미지 설명 입력

    3. VM에 적절한 Cloud API 액세스 범위가 있는지 확인합니다.
    여기에 이미지 설명 입력

여기에 이미지 설명 입력