您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
本主題說明如何透過管理 API 建立自訂角色,並將角色指派給使用者。我們也會說明如何透過 API 測試角色指派。(如要瞭解自訂角色,請參閱「在使用者介面中建立自訂角色」。)
關於權限設定
角色權限是在管理 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-product),在
/apiproducts/free-api-product上設定這些項目 - 如要為特定環境中的鍵/值對應設定權限,請在類似
/environments/test/keyvaluemaps/fooMap的項目上設定權限,或為測試環境中的所有鍵/值對應設定/environments/test/keyvaluemaps/*。
您使用 API 設定的權限:
- 允許自訂角色的使用者根據權限發出管理 API 呼叫。舉例來說,如果某個角色允許對所有 API Proxy 進行唯讀存取,該角色的使用者就能使用「列出 API Proxy」API,但無法使用「建立 API Proxy」API。
- 決定自訂角色中的使用者可在管理 UI 中查看及執行的作業。舉例來說,API Proxy 的唯讀存取權會停用「API Proxy」頁面上的「+API Proxy」和「Delete」按鈕。
如要查看可設定權限的資源和路徑,請瀏覽不同資源網址的管理 API 參考資料。
如需角色管理的完整參考資訊,請參閱 User roles API。
語法和優先順序
您可以在權限設定中使用星號萬用字元 (*),表示「之後的所有內容」。 不過,如果只在父項資源 (例如 /developers) 上設定權限,而未設定任何更具體的權限 (例如 /developers/*),則權限會套用至 /developers 和之後的所有內容。
在權限中,PUT 也會做為 POST。
您可以混合使用資源的一般權限和更精細的權限。如果權限重疊,系統會優先採用更精細的設定。舉例來說,假設「developeradmin」角色設定了下列權限:
- PUT on /developers
- GET on /developers/*
也就是說,開發人員管理員可以:
- 建立開發人員,但不更新任何特定開發人員或任何子實體 (因為該路徑上更具體的 GET 權限)。
- 取得任何開發人員或子實體,但無法取得所有開發人員的清單。
如要查看可透過 API 設定的完整權限清單,請參閱權限參考資料。
建立名為「development」的新自訂角色
建立「開發」角色,讓開發人員可以查看、建立及更新 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" ]}'
建立角色:testing
建立「測試」角色,讓品質工程師查看 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 代理。
$ 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> 是 Edge 管理伺服器的 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 服務會拒絕要求,因為「testing」角色不允許使用者建立 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