本頁內容適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
本頁說明如何在 Apigee 機構中建立 Apigee Space,以便大規模管理 Apigee API 資源的身分與存取權管理 (IAM) 政策。
本指南將說明下列步驟:
如要進一步瞭解使用 Apigee Spaces 管理 API 資源的好處,請參閱「Apigee Spaces」。
事前準備
開始使用 Spaces 前,請注意下列事項:
- 佈建 Apigee。確認要使用的 Apigee 訂閱或即付即用機構已佈建完成。如要進一步瞭解佈建 Apigee 的必要步驟,請參閱佈建簡介。
- 取得驗證憑證。如要在指令列中執行指令來建立及管理 Spaces,請先使用下列指令取得
gcloud
驗證憑證:export TOKEN=$(gcloud auth print-access-token)
必要角色和權限
Make sure that you have the following role or roles on the project: Apigee > Apigee Organization Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
前往「IAM」頁面 - 選取專案。
- 按一下「授予存取權」 。
-
在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。 這通常是 Google 帳戶的電子郵件地址。
- 在「Select a role」(選取角色) 清單中,選取角色。
- 如要授予其他角色,請按一下 「新增其他角色」,然後新增每個其他角色。
- 按一下 [Save]。
- ORG_NAME 是指 Apigee 機構的名稱。
- SPACE_NAME 是聊天室的名稱和 ID。
- DISPLAY_NAME 是應顯示在 Cloud Console 的 Apigee UI 中的 Space 名稱。如未提供顯示名稱,系統會使用 Space 名稱做為顯示名稱。
- 聊天室成員清單
- 授予成員的角色或角色清單
- ORG_NAME 是 Apigee 機構的名稱。
- SPACE_NAME 是聊天室名稱。
- USER_EMAIL 是要新增至聊天室的使用者電子郵件地址。
- IAM_ROLE 是您指派給使用者做為聊天室成員的 IAM 角色名稱。
- ORG_NAME 是 Apigee 機構的名稱。
- SPACE_NAME 是聊天室名稱。
- GROUP_EMAIL 是您要新增至聊天室的群組電子郵件地址。
- IAM_ROLE 是您要指派給團隊的 IAM 角色名稱,做為聊天室成員。
- ORG_NAME 是 Apigee 機構的名稱。
- SPACE_NAME 是聊天室名稱。
- ORG_NAME 是 Apigee 機構的名稱。
- SPACE_NAME 是聊天室名稱。
- ORG_NAME 是 Apigee 機構的名稱。
- SPACE_NAME 是聊天室的名稱和 ID。
- DISPLAY_NAME 是 Space 的新顯示名稱。
- 進一步瞭解 Apigee Spaces。
- 瞭解如何使用 Apigee Spaces 管理 API 資源。
- 查看身分與存取權管理 (IAM) 說明文件。
建立聊天室
如要執行這項工作,您需要 apigee.spaces.create
權限。
此權限包含在 Apigee Organization Admin
角色中。
如要在 Apigee 機構中建立 Space,請使用下列指令:
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces" \ --data-raw '{ "name":"SPACE_NAME", "displayName":"DISPLAY_NAME", }'
其中:
舉例來說,下列指令會在 acme 機構中建立名為「red」的 Space:
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \ https://apigee.googleapis.com/v1/organizations/acme/spaces \ --data-raw '{ "name":"red", "displayName":"Red", }'
在機構中建立空間後,使用雲端控制台 Apigee 使用者介面的機構成員,在使用者介面中建立 API 資源時,會看到空間做為可用參數。此外,在 UI 中查看 API Proxy、API 產品和共用流程清單時,空間會顯示為指派給該空間的 API 資源屬性。
Spaces。管理聊天室中的成員和角色
建立聊天室後,您可以將團隊成員新增至聊天室,並指派在聊天室中建立及管理 API 資源所需的 IAM 角色。Apigee 使用者只能在所屬團隊的空間中建立及管理資源,且必須具備適當的權限。由於 IAM 存取控管是在「空間」層級授予,因此除非組織成員已明確新增至空間,否則無法存取或管理空間所屬的 Apigee API 資源。如要瞭解管理 Space 資源所需的 IAM 角色和權限,請參閱「 建立及管理 Space 資源」。
將機構成員新增至聊天室
將機構成員新增至聊天室時,系統會為該聊天室建立 IAM 政策繫結,並採用下列兩個引數:
如要執行這項工作,您需要 apigee.spaces.setIamPolicy
權限。
此權限包含在 Apigee Organization Admin
角色中。
如要將機構成員新增至 Space 並指派 IAM 角色,請使用下列指令:
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME:setIamPolicy" -d \ '{ "policy":{ "bindings":[ { "members": ["user:USER_EMAIL"], "role": "roles/IAM_ROLE" } ] } }'
其中:
舉例來說,這項指令會將 my-email@acme.com 使用者新增至 acme 機構的 red 聊天室,並授予 IAM 角色 apigee.spaceContentEditor
:
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \ "https://apigee.googleapis.com/v1/organizations/acme/spaces/red:setIamPolicy" -d \ '{ "policy":{ "bindings":[ { "members": ["user:my-email@acme.com"], "role": "roles/apigee.spaceContentEditor" } ] } }'
如要為聊天室成員新增其他角色和權限,請更新聊天室的 IAM 政策。如要更新 Space 的 IAM 政策,請使用本節所述的 setIamPolicy
方法,並提供修訂後的所需角色和權限清單。系統會為空間建立新的 IAM 政策,並相應調整角色和權限。
將一組成員新增至聊天室
或者,您也可以將一組成員新增至聊天室,並指派一或多個 IAM 角色。如要將一組成員新增至 Space 並指派 IAM 角色,請使用下列指令:
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME:setIamPolicy" -d \ '{ "policy":{ "bindings":[ { "members": ["group:GROUP_EMAIL"], "role": "roles/IAM_ROLE" } ] } }'
其中:
舉例來說,這項指令會將 acme-team@acme.com 群組新增至 acme 機構的 red 空間,並將 apigee.spaceContentEditor
角色授予該群組:
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \ "https://apigee.googleapis.com/v1/organizations/acme/spaces/red:setIamPolicy" -d \ '{ "policy":{ "bindings":[ { "members": ["group:red-team@acme.com"], "role": "roles/apigee.spaceContentEditor" } ] } }'
如「將機構成員新增至 Space」一文所述,IAM 角色 apigee.spaceContentEditor
包含管理 Space 資源所需的許多權限。不過,您可能需要授予使用者其他角色,才能執行特定工作。
確認 Spaces IAM 政策指派
如要執行這項工作,您需要 apigee.spaces.getIamPolicy
權限。
此權限包含在 Apigee Organization Admin
角色中。
如要確認空間的 IAM 政策是否設定正確,請使用下列指令:
curl -X GET -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME:getIamPolicy"
其中:
舉例來說,下列指令用於確認 acme 機構中 red Space 的 IAM 政策是否設定正確:
curl -X GET -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/acme/spaces/red:getIamPolicy"
指令輸出內容會傳回工作區目前的 IAM 政策,應如下所示:
{ "version": "0", "bindings": [ { "role": "roles/apigee.spaceContentEditor", "members": [ "group:red-team@acme.com" ] } ] }
在這個範例中,聊天室的 IAM 政策會將 apigee.spaceContentEditor
角色授予聊天室成員,也就是群組 red-team@acme.com 的成員。
請注意,只有「紅色」團隊的成員,才能存取「紅色」空間。 也就是說,只有紅隊成員可以在紅隊空間中建立及管理 API 資源。如果其他機構團隊的成員 (例如 team-blue@acme.com) 嘗試存取在 red Space 下建立的 API Proxy,會看到下列錯誤訊息:
{ "error": { "code": 403, "message": "Permission denied on resource \"organizations\/acme\/apis\/proxy-1\" (or it may not exist).", "status": "PERMISSION_DENIED" } }
從聊天室中移除成員
如要從聊天室移除成員或成員群組,您必須為聊天室設定新的 IAM 政策,並提供修訂後的成員或群組清單。使用 setIamPolicy
方法會為空間建立新的 IAM 政策,並相應調整角色和成員。
舉例來說,如要更新 blue 團隊的 Space 成員,可以先使用下列指令檢查目前的 IAM 政策:
curl -X GET -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/acme/spaces/blue:getIamPolicy"
指令輸出內容會傳回工作區目前的 IAM 政策,應如下所示:
{ "version": "0", "bindings": [ { "role": "roles/apigee.spaceContentEditor", "members": [ "group: blue-team@acme.com", "users: user-a@acme.com, user-b@acme.com, user-c@acme.com" ] } ] }
如要從 Space 移除 user-b@acme.com,請使用下列指令:
curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-type: application/json" \ "https://apigee.googleapis.com/v1/organizations/acme/spaces/blue:setIamPolicy" -d \ '{ "policy":{ "bindings":[ { "members": [ "group:blue-team@acme.com", "users: user-a@acme.com, user-c@acme.com" ] "role": "roles/apigee.spaceContentEditor" } ] } }'
現在,該空間的新 IAM 政策不再包含 user-b@acme.com。
如要從聊天室中移除群組成員,請先從群組中移除該成員,然後重新執行 setIamPolicy 指令,使用群組電子郵件別名的正確成員資格更新聊天室的 IAM 政策。
列出機構中的所有聊天室
如要執行這項工作,您需要 apigee.spaces.list
權限。
此權限包含在 Apigee Organization Admin
角色中。
如要列出 Apigee 機構中的所有 Space,請使用下列指令:
curl -X GET -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces"
其中 ORG_NAME 是 Apigee 機構的名稱。
舉例來說,下列指令會列出 acme 機構中的所有空間:
curl -X GET -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/acme/spaces"
這個指令會傳回類似下列內容的結果:
{ "spaces": [ { "name": "red", "createTime": "2024-08-02T23:26:03.001512Z", "updateTime": "2024-08-02T23:26:03.001512Z" }, { "name": "blue", "createTime": "2024-08-02T00:34:54.159331Z", "updateTime": "2024-08-02T00:34:54.159331Z" } ] }
取得聊天室詳細資料
如要執行這項工作,您必須具備 apigee.spaces.get
權限。此權限包含在 Apigee Organization Admin
角色中。
使用下列指令取得 Space 詳細資料:
curl -X GET -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME"
其中:
舉例來說,下列指令會取得 acme 機構中「red」空間的詳細資料:
curl -X GET -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/acme/spaces/red"
這個指令會傳回類似下列內容的結果:
{ "name": "red", "createTime": "2024-08-02T23:26:03.001512Z", "updateTime": "2024-08-02T23:26:03.001512Z" }
更新聊天室
如要執行這項工作,您需要 apigee.spaces.update
權限。此權限包含在 Apigee Organization Admin
角色中。
如要更新 Apigee 機構中的 Space,請使用下列指令:
curl -X PATCH -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME" \ --data-raw '{ "displayName":"DISPLAY_NAME" }'
其中:
舉例來說,下列指令會更新 acme 機構中「red」空間的顯示名稱:
curl -X PATCH -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \ "https://apigee.googleapis.com/v1/organizations/acme/spaces/red" -d \ '{ "displayName": "Red team space" }'
刪除 YouTube Spaces
如要執行這項工作,您需要 apigee.spaces.delete
權限。此權限包含在 Apigee Organization Admin
角色中。刪除空間前,請務必先刪除空間中的所有資源。
如要刪除 Apigee 機構中的 Space,請使用下列指令:
curl -X DELETE -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME/spaces/SPACE_NAME"
舉例來說,下列指令會刪除 acme 機構中的 red Space:
curl -X DELETE -H "Authorization: Bearer $TOKEN" \ "https://apigee.googleapis.com/v1/organizations/acme/spaces/red"
如果您嘗試刪除仍有相關聯的有效資源的空間,系統會顯示下列錯誤:
{ "error": { "code": 400, "message": "Space \"red\" has resources associated with it. Please delete the resources before deleting the space.", "status": "FAILED_PRECONDITION" } }
如要解決錯誤,請先刪除或移動空間中的資源,再嘗試刪除空間。