2016-12-01 37 views
3

我試圖使用Google雲資源管理器API來測試經過身份驗證的用戶是否對給定項目擁有權限。我已閱讀Google Cloud Resource Manager API documentation,並試圖發送請求,所有的失敗,出現以下錯誤:Google雲資源管理器API:測試IAM權限

{「錯誤」:{「代碼」:400,「消息」:「請求包含無效參數」,「狀態「: 「INVALID_ARGUMENT」}}

POST請求是:

https://cloudresourcemanager.googleapis.com/v1/projects/ {專案編號}:testIamPermissions

其中{}專案編號是從谷歌雲開發者控制檯限定專案編號。我知道我可以使用project.list方法並確定給定的projectId是否存在於用戶的項目列表中。我想了解如何使用project.testIamPermissions請求並確定用戶對項目擁有哪個權限。

+0

您是否在相關的API Explorer頁面(https://developers.google.com/apis-explorer/#p/cloudresourcemanager/v1/cloudresourcemanager.projects.testIamPermissions)上測試過它? – jarmod

+1

是的,那是我運行所有測試的地方。在我理解如何通過API瀏覽器調用API之前,我還沒有寫出一行代碼。 – Ken

+0

你轉儲了整個響應/異常嗎?我猜測它會包含有用的文本,如「至少需要指定一個權限」。你提供了被測試的權限嗎? – jarmod

回答

0

爲了使用雲資源管理 API方法organizations.testIamPermissionsprojects.testIamPermissions,您需要提供資源,你想在URL檢查,然後權限你會喜歡檢查身體。

因此,舉例來說,如果我想測試,如果我的身份驗證的用戶,必須在一個特定的項目獲得了特定的權限(例如compute.instances.create。)(前my-project。)然後,我會POST這樣的:

{ 
"permissions": [ 
    "compute.instances.create" 
] 
} 

URL

https://cloudresourcemanager.googleapis.com/v1/projects/my-project:testIamPermissions 

這會給我以下響應:

{ 
"permissions": [ 
    "compute.instances.create" 
] 
} 

因爲我確實有權限在my-project中創建新實例。 但是,如果我沒有權限創建新實例,他們的迴應是這樣的:

{ 
} 

通過API瀏覽器試試吧here

如果您的目標是找到用戶對項目擁有的所有權限的測試,那麼您必須在請求正文中提供所有項目級權限的完整列表,並且響應將包括這些子項的子集用戶擁有的權限。

希望這會有所幫助!

相關問題