3

2016 년부터 널리 논의 된 문제임을 알고 있지만 문제를 해결할 수 없었습니다. Google 클라우드 프로젝트의 경우 개인 계정과 서비스 계정 (gcloud auth 목록으로받는 계정)은 모두 소유자입니다.Google Cloud Storage, Compute Engine 및 사용 권한 부족 오류

google-cloud 패키지 (저장 모듈)를 사용하는 python3 코드는 내 개인 계정을 사용하여 노트북에서 올바르게 작동합니다. 즉, 파일 업로드가 올바르게 작동합니다.

File "/home/user/git/project/GoogleUtils/StorageUtils.py", line 109, in upload_blob 
    blob.upload_from_filename(source_file_name) 
    File "/home/analysis/.local/lib/python3.5/site-packages/google/cloud/storage/blob.py", line 992, in upload_from_filename 
    size=total_bytes) 
    File "/home/analysis/.local/lib/python3.5/site-packages/google/cloud/storage/blob.py", line 949, in upload_from_file 
    _raise_from_invalid_response(exc) 
    File "/home/analysis/.local/lib/python3.5/site-packages/google/cloud/storage/blob.py", line 1735, in _raise_from_invalid_response 
    raise exceptions.from_http_response(error.response) 
google.api_core.exceptions.Forbidden: 403 POST https://www.googleapis.com/upload/storage/v1/b/bucket_name/o?uploadType=multipart: Insufficient Permission 

이 내 개인 계정 및 서비스 계정 모두 발생합니다

대신, 계산 엔진에, 나는 다음과 같은 오류가 발생합니다. 나는 그것이 허가 문제가 아니라고 생각합니다 ... 그래서 내가 어디를 찾아야합니까? 이상한 부분은 파일 다운로드가 완벽하게 작동한다는 것입니다.

답변

1

유일한 해결책은 설정 화면의 하단에서 '기본 액세스'에서 '전체 액세스'로 전환하여 VM 설정을 수정하는 것입니다.

+0

감사합니다. 당신은 내 목숨을 구했습니다. 너는 천재 야. – user1403546

1

이미 답변되었지만 조금 명확히하는 것이 가치 있다고 생각합니다.

예, 당신은 서비스 계정의 권한 오류없는 권리이며,이 때문에 기본 설정으로 예상 된 동작입니다,하지만 나를 조금 설명하자 : 가상을 만들 때

  • 을 컴퓨터에 default service 계정을 사용하는 Google Cloud Engine을 사용하려면 해당 VM에 허용되는 API가 무엇인지 다시 확인해야합니다. 인스턴스를 확인한 후 수정할 수 있으며 인스턴스의 세부 정보를 확인하는 Google Cloud Console에서 인스턴스를 시각화 할 수 있습니다. 까다로운 것처럼 보일 수있는이 동작은 여러 다른 인스턴스에 전파 될 수있는 서비스 계정의 권한을 제한하기 위해 의도 된 것입니다 (인스턴스에 로그인하기에 충분하면 사용자가 그 전체 권한, 즉 프로젝트 소유자.

  • 반면에 기본 서비스 계정을 사용하지 않으면 서비스 계정과 함께 IAM 역할을 사용하여 VM 액세스를 제어하여 액세스 범위를 수정해야합니다. 따라서 귀하의 경우 전체 액세스 권한이있는 서비스 계정으로 모든 API를 사용할 수 있습니다.

는 새 서비스 계정을 만들어이 두 개의 서로 다른 행동을 확인하고 인스턴스의 창조의 순간에 먼저 기본 계정을 사용하고 새로운, 당신은 두 개의 서로 다른 탭이 표시됩니다 것을 알 수 있습니다.