การสร้างบทบาทด้วย API

คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่ เอกสารประกอบของ Apigee X
info

หัวข้อนี้จะอธิบายวิธีสร้างบทบาทที่กำหนดเองและกำหนดบทบาทให้กับผู้ใช้ผ่าน Management API นอกจากนี้ เรายังแสดงวิธีทดสอบการกำหนดบทบาทผ่าน API ด้วย (หากต้องการดูภาพรวมของ บทบาทที่กำหนดเอง โปรดดูการสร้างบทบาทที่กำหนดเองใน UI)

เกี่ยวกับการตั้งค่าสิทธิ์

สิทธิ์ของบทบาทจะตั้งค่าใน URI ของ Management API (ไม่ใช่ URI ของ UI การจัดการ) ตัวอย่างเช่น หากคุณ ต้องการตั้งค่าสิทธิ์ PUT, GET และ/หรือ DELETE ในเอนทิตีนักพัฒนาแอปในองค์กร Edge คุณจะต้องตั้งค่าสิทธิ์ในทรัพยากร /developers เนื่องจากเส้นทาง Management API สำหรับ นักพัฒนาแอป คือ https://api.enterprise.apigee.com/v1/organizations/{org_name}/developers (คุณไม่จำเป็นต้องใส่ส่วนองค์กรของเส้นทางเมื่อกำหนดสิทธิ์ เนื่องจาก สิทธิ์มีขอบเขตเป็นองค์กรที่เฉพาะเจาะจง ดังที่แสดงให้เห็นในคำขอ Management API ในหัวข้อนี้ แสดงให้เห็น)

นอกจากนี้ คุณยังตั้งค่าสิทธิ์ในเอนทิตีที่เฉพาะเจาะจงได้ด้วย เช่น

  • หากต้องการตั้งค่าสิทธิ์ในนักพัฒนาแอปรายเดียว ให้ตั้งค่าใน /developers/steve@example.com
  • สำหรับผลิตภัณฑ์ API ที่เฉพาะเจาะจง เช่น free-api-product ให้ตั้งค่าใน บน /apiproducts/free-api-product
  • สำหรับแมปค่าคีย์ในสภาพแวดล้อมที่เฉพาะเจาะจง คุณจะต้องตั้งค่าสิทธิ์ในรายการต่างๆ เช่น /environments/test/keyvaluemaps/fooMap, หรือ /environments/test/keyvaluemaps/* สำหรับแมปค่าคีย์ทั้งหมดในสภาพแวดล้อมการทดสอบ

สิทธิ์ที่คุณตั้งค่าโดยใช้ API

  • อนุญาตให้ผู้ใช้ในบทบาทที่กำหนดเองส่งคำขอ Management API ตามสิทธิ์ของตน ตัวอย่างเช่น หากบทบาทอนุญาตสิทธิ์การอ่านอย่างเดียว สำหรับพร็อกซี API ทั้งหมด ผู้ใช้ในบทบาทดังกล่าวจะใช้ List API Proxies API ได้ แต่จะใช้ Create an API Proxy API ไม่ได้
  • กำหนดสิ่งที่ผู้ใช้ในบทบาทที่กำหนดเองจะดูและทำได้ใน UI การจัดการ ตัวอย่างเช่น สิทธิ์การอ่านอย่างเดียวสำหรับพร็อกซี API จะปิดใช้การเข้าถึงปุ่ม +API Proxy และปุ่ม Delete ในหน้า API Proxies

หากต้องการดูทรัพยากรและเส้นทางที่คุณตั้งค่าสิทธิ์ได้ ให้ดูข้อมูลอ้างอิงของ Management API ที่ URL ของทรัพยากรต่างๆ

ดูข้อมูลอ้างอิงที่สมบูรณ์เกี่ยวกับการจัดการบทบาทได้ที่ User roles API สำหรับข้อมูลอ้างอิงที่สมบูรณ์เกี่ยวกับ การจัดการบทบาท

ไวยากรณ์และลำดับความสำคัญ

คุณสามารถใช้ไวลด์การ์ดดอกจัน (*) เพื่อระบุ "ทุกอย่างหลังจากนี้" ในการตั้งค่าสิทธิ์ อย่างไรก็ตาม หากคุณตั้งค่าสิทธิ์ในทรัพยากรระดับบนเท่านั้น (เช่น ใน /developers) โดยไม่ได้ ตั้งค่าสิทธิ์ที่เฉพาะเจาะจงมากขึ้น (เช่น /developers/*) สิทธิ์จะใช้กับ ทุกอย่างตั้งแต่ /developers เป็นต้นไป

นอกจากนี้ PUT ยังทำหน้าที่เป็น POST ในสิทธิ์ด้วย

คุณสามารถผสมสิทธิ์ทั่วไปกับสิทธิ์ที่ละเอียดยิ่งขึ้นในทรัพยากรได้ การตั้งค่าที่ละเอียดยิ่งขึ้น จะมีลำดับความสำคัญสูงกว่าในกรณีที่มีการทับซ้อนกันของสิทธิ์ ตัวอย่างเช่น สมมติว่ามีการตั้งค่าสิทธิ์ต่อไปนี้ในบทบาท "developeradmin"

  • PUT ใน /developers
  • GET ใน /developers/*

ซึ่งหมายความว่า developeradmin จะทำสิ่งต่อไปนี้ได้

  • สร้างนักพัฒนาแอป แต่จะอัปเดตนักพัฒนาแอปที่เฉพาะเจาะจงหรือเอนทิตีย่อยไม่ได้ (เนื่องจาก สิทธิ์ GET ที่เฉพาะเจาะจงมากขึ้นในเส้นทางนั้น)
  • รับนักพัฒนาแอปหรือเอนทิตีย่อย แต่จะรับรายชื่อนักพัฒนาแอปทั้งหมดไม่ได้

ดูรายการสิทธิ์ทั้งหมดที่คุณตั้งค่าได้ด้วย API ได้ที่ข้อมูลอ้างอิงสิทธิ์

สร้างบทบาทที่กำหนดเองใหม่ชื่อ "development"

สร้างบทบาท "development" เพื่อให้นักพัฒนาแอปดู สร้าง และอัปเดตพร็อกซี API ได้

$ 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" } ] }'

เพิ่มสิทธิ์ให้กับบทบาท development

สิทธิ์ที่ตั้งค่าได้ในกลุ่มอาร์ติแฟกต์ Edge ทั้งหมด (เช่น /apps, /apis, /apiproducts และอื่นๆ) รวมถึงในอาร์ติแฟกต์แต่ละรายการ (เช่น แอป พร็อกซี API หรือผลิตภัณฑ์ API ที่เฉพาะเจาะจง) ได้แก่ GET, PUT และ DELETE

GET ช่วยให้ผู้ใช้ดู API ใดก็ได้ รวมถึงไฟล์การกำหนดค่าพร็อกซี API, นโยบายที่เชื่อมโยง JavaScript, ไฟล์ XSLT และอื่นๆ สิทธิ์ PUT ใน API ช่วยให้นักพัฒนาแอป สร้าง แก้ไข นำเข้า ส่งออก ทำให้ใช้งานได้ และยกเลิกการทำให้ใช้งานได้ของพร็อกซี API

แอตทริบิวต์ path จะระบุอาร์ติแฟกต์ที่คุณตั้งค่าสิทธิ์ เช่น /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

สร้างบทบาท "testing" เพื่อให้วิศวกรด้านคุณภาพดูพร็อกซี API และเนื้อหาของพร็อกซี (รวมถึงนโยบาย เป็นต้น)

$ 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" } ] }'

เพิ่มสิทธิ์ให้กับบทบาท testing

GET ช่วยให้ผู้ใช้ดู API ใดก็ได้ รวมถึงไฟล์การกำหนดค่าของ API ตลอดจน นโยบายที่เชื่อมโยง, JavaScript, ไฟล์ XSLT และอื่นๆ การเพิ่มสิทธิ์นี้ให้กับบทบาท "testing" จะช่วยให้วิศวกรด้านคุณภาพดูเนื้อหาของ 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> คือที่อยู่ IP หรือชื่อ DNS ของ Edge Management Server

เพิ่มผู้ใช้ให้กับบทบาท testing

วิธีจัดสรรผู้ใช้ที่มีบทบาทของผู้ใช้

$ 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 Services เพื่อดูพร็อกซี API ผู้ใช้ควรจะดู API พร้อมกับเนื้อหาของ 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 ในฐานะผู้ใช้ในบทบาท testing

แอบอ้างเป็นผู้ใช้และส่งคำขอไปยัง API Services เพื่อสร้างพร็อกซี API API Services จะปฏิเสธคำขอ เนื่องจากบทบาท "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"}'

เพิ่มผู้ใช้ให้กับบทบาท development

ตอนนี้ให้จัดสรรบทบาท "development" ให้กับผู้ใช้

$ 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 ในฐานะผู้ใช้ในบทบาท development

แอบอ้างเป็นผู้ใช้และส่งคำขอไปยัง API Platform อีกครั้งเพื่อสร้างพร็อกซี API คำขอจะสำเร็จเนื่องจากบทบาท "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