权限云资源管理器API

时间:2016-10-06 05:59:07

标签: api google-cloud-platform google-cloud-iam

我正在开发一个应用程序,我需要从开发人员控制台创建,编辑和删除项目。

我正在使用Cloud Resource Manager API来实现此目的。

OAuth 2.0需要向API发出请求,因此我使用OAuth2.0 server to server(两条腿OAuth或2LO)

获得授权令牌后,我向API发出创建新项目的请求,并且我被告知我没有许可证:The caller has no permissions

但是,如果我要求所有项目的列表,我会得到正确的回复。

我如何获得许可?

我按照所有步骤使用OAuth 2.0服务器到服务器并拥有Google工作帐户,服务帐户具有所有者角色和域名委派。

谢谢!

1 个答案:

答案 0 :(得分:0)

我懒得手动运行OAuth身份验证路径,所以我总是使用旧的gcloud auth print-access-token技巧。

我做什么:

  1. 创建服务帐户密钥文件:gcloud iam service-accounts keys create <PATH/TO/YOUR_KEY_FILE>.json --iam-account=<YOUR_SERVICE_ACCOUNT>

  2. 激活该帐户:gcloud auth activate-service-account <YOUR_SERVICE_ACCOUNT> --key-file=<PATH/TO/YOUR_KEY_FILE>.json

  3. 使用新项目调用API:curl -H"Authorization: Bearer $(gcloud auth print-access-token)" -H'content-type:application/json' https://cloudresourcemanager.googleapis.com/v1/projects -d'{"projectId": "<YOUR_PROJECT_ID>", "parent":{"type":"organization","id":"<YOUR_ORG_ID>"}}'

  4. 这将返回一个您可以查询直到完成的操作ID:curl -H"Authorization: Bearer $(gcloud auth print-access-token)" https://cloudresourcemanager.googleapis.com/v1/operations/<OPERATION_ID>

这是我通过常规shell所做的。您可以通过使用Google的身份验证库之一并将环境变量GOOGLE_APPLICATION_CREDENTIALS设置为在步骤1中选择的路径来将其推断到任何脚本,如the GCP auth docs中所述。 Google的身份验证库将直接为您提供访问令牌。

要获得更简单的解决方案,您只需使用the Cloud Resource Manager client library作为您的语言即可。您只需下载密钥文件,设置GOOGLE_APPLICATION_CREDENTIALS env变量,客户端将为您做所有事情。如果您是在GCP(GAE,GCF,GCE,GKE等)中运行此脚本,则该库很可能可以直接从平台获取凭据,从而无需创建密钥或设置任何env变量