2014-11-04 2 views
2
내가 사용

endpoint : 나에게 오류를 제공Google 클라우드 스토리지 제공 '권한 부족'

get_media(bucket=*, object=*, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, projection=None) 

:

apiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/storage/v1/b/my-logs/o/clickstream.1413365729497.log?alt=json returned "Insufficient Permission"> 

코드 :

service = build('storage', 'v1') 
contents = service.objects().get(bucket=item['bucket'], object=item['name']).execute(http=http) 

item 이전 (성공한) buckets.list 전화에서 온 것입니다. 그래서 서비스 계정에 대한 권한 오류가 너무 이상합니다.

이 내 로컬 호스트에서 현재, 그리고 내 인증은 다음과 같습니다

with open(FILE_KEY, 'rb') as f: 
    key = f.read() 

credentials = SignedJwtAssertionCredentials(
    SERVICE_EMAIL_ADDRESS, 
    key, 
    scope='https://www.googleapis.com/auth/devstorage.full_control', 
) 

http = httplib2.Http() 
http = credentials.authorize(http) 

객체 (내가 나중에 업로드 새로운 테스트 객체), 기본 ACL 권한으로 작성됩니다. 서비스 계정이 파일 내용을 검색하는 데 어떻게 작동하지 않습니까? 여기 방해 할 수있다

+0

죄송합니다. 혼란 스럽습니다. service.objects.get()에 대한 호출이 보이지만 service.objects(). get_media()에 대한 호출도 있습니다. 어느 쪽이 실패하고 있습니까? –

답변

1

두 가지 :

  1. 양동이에 개체를 나열, 심지어 단지 메타 데이터를 객체를 얻는 반면, 개체에 대한 읽기 권한이 필요합니다, 버킷에 대한 읽기 권한이 필요합니다. 서비스 계정에 첫 번째 권한이 있고 두 번째 권한이없는 것이 가능합니다.
  2. 기본적으로 서비스 계정은 소유자, 편집자 또는 뷰어 그룹의 일부가 아니므로 버킷 기본 ACL 또는 개체 기본 ACL에 나타나지 않습니다.

버킷 ACL에 명시 적으로 서비스 계정이 있습니까? 그 물건 은요? 버킷의 기본 객체 ACL에 서비스 계정이 나열되어 있으므로 서비스 계정에서 읽을 수 있도록 작성된 새 객체가 해당 ACL을 덮어 쓰지 않도록 작성 되었습니까?

Access Control도 참조하십시오.

+1

개체에 서비스 계정의 전자 메일을 추가했지만 여전히 403이 수신되었습니다. 어떤 생각입니까? – Tjorriemorrie

+1

@ Tjorriemorrie가 이것을 알아낼 수 있었습니까? 나는 같은 일을하고 있다고 생각합니다. 객체를 양동이에 업로드 할 수 있지만 서비스 계정으로 ACL을 변경할 수는 없습니다. –

관련 문제