您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
本主題將說明如何透過 Management API 建立自訂角色,以及將角色指派給使用者。我們也會說明如何透過 API 測試角色指派作業。(如需自訂角色的總覽,請參閱在 UI 中建立自訂角色一文)。
關於權限設定
針對 Management API URI (而非管理 UI URI) 設定角色權限。舉例來說,如果您想為 Edge 機構中的應用程式開發人員實體設定 PUT、GET 和/或 DELETE 權限,您需要設定 /developers
資源的權限,因為開發人員的管理 API 路徑為 https://api.enterprise.apigee.com/v1/organizations/{org_name}/developers
。(定義權限時,您不需要在路徑中加入機構部分,因為權限將範圍限定為特定機構,因為本主題中的管理 API 呼叫將詳細說明)。
您也可以針對特定實體設定權限。例如:
- 如要設定單一開發人員的權限,請在
/developers/steve@example.com
上進行設定 - 如果是特定的 API 產品 (例如 Free-api 產品),請在
/apiproducts/free-api-product
上進行設定 - 至於特定環境中的鍵/值對應,您需要為測試環境中所有鍵/值對應的設定權限,例如
/environments/test/keyvaluemaps/fooMap
或/environments/test/keyvaluemaps/*
。
您使用 API 設定的權限:
- 允許自訂角色的使用者根據自己的權限進行管理 API 呼叫。舉例來說,如果角色允許所有 API Proxy 的唯讀存取權,該角色的使用者就能使用 List API Proxy API,但不能使用 Create a API Proxy API。
- 決定自訂角色的使用者可在管理 UI 中查看和執行的操作。舉例來說,API Proxy 的唯讀存取權停用「API Proxy」頁面上「+API Proxy」和「刪除」按鈕的存取權。
如要查看可以設定權限的資源和路徑,請參閱不同資源網址的 management API 參考資料。
如需角色管理的完整參考資訊,請參閱使用者角色 API。
語法和優先順序
您可以在權限設定中,使用星號萬用字元 (*) 表示「後面的所有內容」。 不過,如果您只針對父項資源 (例如 /developers ) 設定權限,但未設定任何更具體的權限 (例如 /developers/*),權限會套用到 /developers 和之後的所有權限。
PUT 同時也是權限中的 POST。
您可以混合使用一般及更精細的資源權限。當權限重疊時,系統會優先採用更精細的設定。舉例來說,假設下列權限設為「developeradmin」角色:
- PUT /開發人員
- /developers/*
也就是說,開發人員管理員可以:
- 建立開發人員,但不更新任何特定開發人員或任何子實體 (因為該路徑有更具體的 GET 權限)。
- 取得任何開發人員或子實體,但不取得所有開發人員的清單。
如需您可以透過 API 設定的完整權限清單,請參閱權限參考資料。
建立名為「開發」的新自訂角色
建立「開發」角色,允許開發人員查看、建立及更新 API Proxy。
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "development" } ] }'
新增開發角色權限
您可以為整個 Edge 構件群組 (例如所有 /apps、/apis、/apiproducts 等) 以及個別構件 (例如特定應用程式、API Proxy 或 API 產品) 設定的權限,包括 GET、PUT 和 DELETE。
GET 可讓使用者查看任何 API,包括 API Proxy 設定檔、相關聯的政策、JavaScript、XSLT 檔案等。API 的 PUT 權限可讓開發人員建立、修改、匯入、匯出、部署及取消部署 API Proxy。
路徑屬性會指定您設定權限的目標成果。例如 /applications、/apps、/apiproducts、/developers 或 /reports。
curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/development/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "put", "get" ]}'
建立角色:測試
建立「測試」角色,可讓品質工程師查看 API Proxy 及其內容 (包括政策)。
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles -H "Content-type:application/json" -X POST -d'{ "role" : [ { "name" : "testing" } ] }'
將權限新增至測試角色
GET 可讓使用者查看任何 API,包括其設定檔,以及任何相關聯的政策、JavaScript、XSLT 檔案等。將這項權限新增至「測試」角色後,品質工程師就能查看他們測試的 API 內容。不過,這個角色的使用者將無法建立、修改、匯入、匯出、部署及取消部署 API Proxy。
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/userroles/testing/permissions -H "Content-type:application/json" -X POST -d'{"path" : "/applications","permissions" : [ "get" ]}'
針對地端部署的 Edge 安裝作業,必須設為允許使用者登入 Edge UI 的最低權限組合如下:
{"path" : "/","permissions" : [ "get" ]} {"path" : "/*","permissions" : [ ]} {"path" : "/environments","permissions" : [ "get" ]} {"path" : "/userroles","permissions" : [ "get" ]}
請使用以下 cURL 指令設定這些權限:
curl -H "Content-Type:application/json" -u email:password \ -X POST \ http://<ms-IP>:8080/v1/organizations/{org_name}/userroles/testing/resourcepermissions \ -d '{ "resourcePermission" : [ { "path" : "/", "permissions" : [ "get" ] }, { "path" : "/*", "permissions" : [] }, { "path" : "/environments", "permissions" : [ "get" ] }, { "path" : "/userroles", "permissions" : [ "get"] } ] }'
其中 <ms-IP> 是邊緣管理伺服器的 IP 位址或 DNS 名稱。
將使用者新增至測試角色
如何佈建具備使用者角色的使用者:
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "testing"} ] }'
以使用者身分查看 API
模擬使用者並向 API 服務發出要求,即可查看 API Proxy。使用者應能查看 API 和當中的內容。$ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis
$ curl -u justauser@apigee.com:secret https://api.enterprise.apigee.com/v1/o/{org_name}/apis/{api_name}/policies
以測試角色的身分建立 API
模擬使用者並向 API 服務發出要求,以建立 API Proxy。API 服務會拒絕要求,因為「測試」角色不允許使用者建立 API。
$ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'
將使用者新增至開發角色
現在提供「開發」角色的使用者。
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/users/justauser@apigee.com/userroles -H "Content-type:application/json" -X POST -d'{"role" : [ {"name" : "development"} ] }'
以開發角色的使用者身分建立 API
模擬使用者並重複要求 API 平台,以建立 API Proxy。要求會成功,因為「development」角色允許使用者建立 API。
$ curl -u justauser@apigee.com:secret -H "Content-Type: application/json" https://api.enterprise.apigee.com/v1/o/{org_name}/apis -X POST -d'{"name" : "rbacTestApi"}'
取得使用者的使用者角色
機構管理員可以隨時查看使用者的使用者角色清單 (適用於所有機構):
$ curl -u email:password -X GET https://api.enterprise.apigee.com/v1/users/justauser@apigee.com/userroles