>source

클라이언트를위한 자동 GCP 배포를 만들고 싶습니다.

이를 위해 Google에 로그인 할 수있는 페이지를 연 다음 IAM API 및 서비스 사용 API를 활성화했습니다.

그런 다음, 필요할 때 다른 필수 API를 사용하기 위해이 시점부터 사용할 서비스 계정을 만들었습니다.

cloudkms API를 사용하려고하면

googleapiclient.errors.HttpError: <HttpError 403 when requesting https://serviceusage.googleapis.com/v1/projects/x-y-z/services/cloudkms.googleapis.com?alt=json returned "The caller does not have permission"

서비스 계정 생성에 대한 응답으로 생성 한 서비스 계정 자격 증명 (google.auth.jwt.Credentials)을 사용해 보았으며 필요한 모든 권한을 추가했습니다. 계정에 가능한 한 적은 권한을 갖기를 원하기 때문에 역할 소유자를 서비스 계정에 부여하고 싶지 않습니다.

사용자의 권한을 사용하여 cloudkms API의 상태를 얻으려고하면 작동합니다.

여기에서 서비스 계정의 자격 증명을 만들어야하는 몇 가지 솔루션을 확인했습니다. https : //console.developers.google.com/apis/credentials 하지만 프로그래밍 방식으로도이 작업을 수행해야합니다.

내 코드 :

credentials = jwt.Credentials.from_service_account_file(service_account_info['email'] + '.json', audience="https://www.googleapis.com/auth/cloud-platform")
# credentials = GoogleCredentials.get_application_default() - it works with this
service_usage = googleapiclient.discovery.build('serviceusage', 'v1', credentials=credentials)
service_usage.services().get(name="projects/<project_id>/services/cloudkms.googleapis.com").execute()

위 오류가 언급되었습니다.

  • 답변 # 1

    클라우드 IAM 권한이 필요합니다 serviceusage.services.enable  서비스를 가능하게합니다. 리스팅 서비스와 같이 필요한 기능에 따라 serviceusage.services.list 가 필요합니다. .

    일반적으로 roles/serviceusage.serviceUsageAdmin 역할을 추가합니다  여기에는 다음 권한이 포함됩니다.

    serviceusage.services.get

    serviceusage.services.list

    serviceusage.services.enable

    serviceusage.services.disable

  • 이전 amazon web services - 관리 콘솔없이 모바일 앱에서 S3 버킷으로 파일을 업로드하는 방법
  • 다음 ruby - 내 시나트라 앱에서 다른 MIME 유형을 사용하는 방법이 있습니까