2017-05-15 1 views
0

Java 클라우드 스토리지 버킷에 대한 ACL을 Java 클라이언트를 사용하여 나열하려고합니다. 나는이 같은 클라이언트를 만드는 오전 : GCP 클라우드 저장소 : 403- Storage.BucketAccessControls.List` 요청을 실행하는 동안 금지됨

// create client 
    GoogleCredential credential = GoogleCredential.fromStream(jsonCredentialsString)); 

    if(credential.createScopedRequired()) { 
    credential = credential.createScoped(StorageScopes.all()); 
    } 

    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); 
    JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 

    return new Storage.Builder(httpTransport, jsonFactory, credential) 
     .setApplicationName("app") 
     .build(); 

지금이 클라이언트를 사용하여 내가 200 OKBuckets.List 요청을 실행하지만 Storage.BucketAccessControls.List 요청을 실행하는 동안 403 오류가 얻을입니다.

서비스 계정 자격 증명을 사용하고 있습니다. 이것은 내가 얻은 오류입니다

com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden 
{ 
    "code" : 403, 
    "errors" : [ { 
    "domain" : "global", 
    "message" : "Forbidden", 
    "reason" : "forbidden" 
    } ], 
    "message" : "Forbidden" 
} 

이 경우 요청을 인증하는 올바른 방법은 무엇입니까?

답변

1

코드가 정상입니다. 403의 원인은 서비스 계정의 사용 권한입니다. authenticate for Storage에서 IAM을 사용하는 방법을 살펴보십시오. 리소스 수준 (버킷 단위)을 사용하여보다 세부적인 액세스를 허용 할 수도 있습니다.

기본적으로 Storage에 API 호출을 허용하려면 Storage Admin 역할을 부여 할 수 있습니다. 가장 쉬운 방법은 Console-IAM & Admin으로 이동하는 것입니다.

+0

예, 내 서비스 계정에 저장소 관리 권한을 제공해야했습니다. 이미 'project.viewer' 권한을 가지고 있기는하지만 스토리지 버킷에도 적용 할 것으로 예상됩니다. 스토리지 권한이 독립적으로 작동하는 것 같습니다. – Jatin