日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

访问权限冲突定义_一文读懂F5 REST API的细粒度角色访问控制

發布時間:2023/12/1 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 访问权限冲突定义_一文读懂F5 REST API的细粒度角色访问控制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
↑ 點擊上方“小咩社長”關注我

閱讀提示|本文大概4718字? ?閱讀需要12分鐘

寫在前面

前兩天一個保險的客戶聯系我說有個需求,問通過調用F5 REST API可否實現?:

  • 需要把F5負載均衡上面的配置相關的信息,包含每個VirtualServer(業務)相關聯的Pool、會話保持、iRules、SSL Profile中的SSL證書過期時間等配置信息輸出給CMDB部門做統一的配置維護、SSL證書過期時間管理

  • F5只給CMDB服務端調用F5 REST API查看指定資源對象的配置的權限,不允許創建、修改、刪除資源對象等高風險操作

在聊F5? RESTful? API的細粒度角色訪問控制之前,先搬運一下簡書上AWeiLoveAndroid寫的一篇關于RESTful API的介紹,內容好,簡單羅列下關鍵的幾個資源對象的介紹?

什么是REST API:

要理解RESTful架構,最好的方法就是去理解Representational State Transfer這個詞組到底是什么意思,它的每一個詞代表了什么涵義。如果你把這個名稱搞懂了,也就不難體會REST是一種什么樣的設計。

  • 資源(Resources)ier,統一資源標識符所謂"資源",就是網絡上的一個實體,或者說是網絡上的一個具體信息。它可以是一段文本、一張圖片、一首歌曲、一種服務,總之就是一個具體的實在。你可以用一個URI(統一資源標識符)指向它,每種資源對應一個特定的URI。要獲取這個資源,訪問它的URI就可以,因此URI就成了每一個資源的地址或獨一無二的識別符。

    URI:Uniform Resource Identifier,統一資源標識符

    URL:Uniform Resource Location統一資源定位符

  • 表現層(Representation)

    "資源"是一種信息實體,它可以有多種外在表現形式。我們把"資源"具體呈現出來的形式,叫做它的"表現層"(Representation)。比如,文本可以用txt格式表現,也可以用HTML格式、XML格式、JSON格式表現,甚至可以采用二進制格式;圖片可以用JPG格式表現,也可以用PNG格式表現。

    URI只代表資源的實體,不代表它的形式。嚴格地說,有些網址最后的".html"后綴名是不必要的,因為這個后綴名表示格式,屬于"表現層"范疇,而URI應該只代表"資源"的位置。它的具體表現形式,應該在HTTP請求的頭信息中用Accept和Content-Type字段指定,這兩個字段才是對"表現層"的描述。

  • 狀態轉化(State Transfer):

    訪問一個網站,就代表了客戶端和服務器的一個互動過程。在這個過程中,勢必涉及到數據和狀態的變化。互聯網通信協議HTTP協議,是一個無狀態協議。這意味著,所有的狀態都保存在服務器端。因此,如果客戶端想要操作服務器,必須通過某種手段,讓服務器端發生"狀態轉化"(State Transfer)。而這種轉化是建立在表現層之上的,所以就是"表現層狀態轉化"。

    客戶端用到的手段,只能是HTTP協議。具體來說,就是HTTP協議里面,四個表示操作方式的動詞:GET、POST、PUT、DELETE。它們分別對應四種基本操作:GET用來獲取資源,POST用來新建資源(也可以用于更新資源),PUT用來更新資源,DELETE用來刪除資源。

綜合上面的解釋,我們總結一下什么是RESTful架構:
(1)每一個URI代表一種資源;
(2)客戶端和服務器之間,傳遞這種資源的某種表現層;
(3)客戶端通過四個HTTP動詞,對服務器端資源進行操作,實現"表現層狀態轉化"。

由于篇幅有限,本篇文章將著重介紹通過F5 RESTful API訪問資源對象的資源劃分和的用戶訪問權限控制部分。為了更直觀的演示,通過使用瀏覽器訪問F5 RESTful API 接口獲取VirtualServer相關的配置信息及SSL證書信息。生產上建議使用F5 SDK的方式。

需求一:

通過F5 RESTful API去查詢每個VirtualServer(業務)相關聯的Pool、會話保持、iRules、SSL Profile中的SSL證書過期時間等配置信息

上下滑動查看F5 RESTful API?獲取信息,如圖所示,串聯起了一個VirtualServer相關的配置信息:對外發布的業務IP地址、關聯的各種profile信息及SSL證書信息(Common Name、ExpirationDate)。? ??

上下滾動查看更多

需求二:

CMDB服務端調用F5 REST API查看指定資源對象的配置的權限,不允許創建、修改、刪除資源對象等高風險操作

F5的基于角色的訪問控制(RBAC)機制允許 BIG-IP 管理員為用戶分配適當的訪問權限。例如,對于operator角色,只允許用戶啟用或禁用node和池Pool member,對于guest角色,只允許用戶查看配置信息,不允許客戶增刪查改設備配置信息。

為了滿足用戶需求這里我們新建一個foo用戶,用戶角色為testRole,訪問方式和資源在testResourceGroup中定義,然后從testRole中引用,不允許執行其他操作,如PATCH、DELETE等操作,只允許“GET”,并且只給foo用戶訪問/mgmt/tm/ltm/virtual/和/mgmt/tm/sys/的權限

使用curl命令創建用戶foo,密碼是Foo,描述是Foo Bar?角色是所有分區的guest

PS*需要注意的是當角色與細粒度 RBAC 之間存在訪問權限沖突時,選擇更嚴格的授權

curl -sku admin: https:///mgmt/tm/auth/user -X POST -H "Content-Type: application/json" \
-d '{"name":"foo", "password":"foo", "description":"Foo Bar", "partitionAccess":[ { "name":"all-partitions", "role":"guest"} ] }'

在 v13.1.0中,一個新創建的本地用戶被自動添加到 iControl _ REST _ api _ user 中,它不需要任何設置就可以訪問 iControl REST。為了避免分配多個權限,需要從/mgmt/shared/authz/roles/iControl_REST _ api_user中刪除用戶引用。

從/mgmt/shared/authz/roles/iControl_REST_api_user 獲取數據并將其重定向到一個文件

curl -sku admin: https:///mgmt/shared/authz/roles/iControl_REST_API_User \ | python -m json.tool > file

編輯該文件。該文件包含一行用戶“ foo” ,如下所示,刪除包括開頭和結尾大括號加逗號的行,保存文件

"name": "iControl_REST_API_User", "userReferences": [ { "link": "https://localhost/mgmt/shared/authz/users/foo" }, ....

通過將文件放置到端點來覆蓋當前數據

curl -sku admin: https:///mgmt/shared/authz/roles/iControl_REST_API_User -X PUT -d@file

創建一個自定義資源組

資源組由一組資源和方法組成。在本例中,資源組名為“ testResourceGroup” ,它允許角色對資源/mgmt/tm/ltm/?和/mgmt/tm/sys/執行 GET 請求。“ testResourceGroup”稍后將在定制角色中使用。

curl -sku admin: https:///mgmt/shared/authz/resource-groups -X POST -H "Content-Type: application/json" \ -d '{"name":"testResourceGroup", "resources":[ {"restMethod":"GET", "resourceMask":"/mgmt/tm/ltm/**" }, {"restMethod":"GET", "resourceMask":"esourceMask":"/mgmt/tm/sys/**" } ]}'

返回的JSON對象如下所示:

{ "id": "fe7a1ebc-3e61-30aa-8a5d-c7721f7c6ce2", "name": "testResourceGroup", "resources": [ { "resourceMask": "/mgmt/tm/ltm/**", "restMethod": "GET"??},??{???"resourceMask":?"/mgmt/tm/sys/**", "restMethod": "GET"? } ], "generation": 1, "lastUpdateMicros": 1521682571723849, "kind": "shared:authz:resource-groups:roleresourcegroupstate", "selfLink": "https://localhost/mgmt/shared/authz/resource-groups/fe7a1ebc-3e61-30aa-8a5d-c7721f7c6ce2"}

請注意,資源組條目是由“ id”而不是“ name”鍵控的。

用用戶“ foo”和資源組“ testResourceGroup”創建角色“ testRole”。這使用戶成為角色“ testRole”的成員

curl -sku admin:https:///mgmt/shared/authz/roles -X POST -H "Content-Type: application/json" \ -d '{"name":"testRole", "userReferences":[ {"link":"https://localhost/mgmt/shared/authz/users/foo"} ], "resourceGroupReferences":[{"link":"https://localhost/mgmt/shared/authz/resource-groups/fe7a1ebc-3e61-30aa-8a5d-c7721f7c6ce2"}]}'

下面的 F5 RESTful 調用演示了結果

curl?-D?-sku?foo:Foo?https:///mgmt/tm/ltm/virtual/virtual?|?grep?HTTPHTTP/1.1 200 OKcurl?-D?-sku?foo:Foo?https:///mgmt/tm/sys?|?grep?HTTPHTTP/1.1 200 OKcurl?-D?-sku?foo:Foo?https:///mgmt/tm/ltm/virtual?-X?PATCH?-d?'{"test":"test"}'?|?grep?HTTPHTTP/1.1?401?F5?Authorization?Required

原文連接
https://devcentral.f5.com/s/articles/icontrol-rest-fine-grained-role-based-access-control-30773

- EOF -

推薦閱讀??點擊標題可跳轉

1、【更新】F5 接入安全策略限制

2、【玩轉k8s系列之入門篇】搭建k8s基礎環境

3、淺談AppleCare+ 延保政策發布!裸奔黨的福音

覺得本文對你有幫助,請分享給更多人

掃碼關注「小咩社長」

總結

以上是生活随笔為你收集整理的访问权限冲突定义_一文读懂F5 REST API的细粒度角色访问控制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。