บทบาท Certificate Admin - API
คู่มือนี้จะแนะนำขั้นตอนการสร้างบทบาท RBAC แบบกำหนดเองใน F5 Distributed Cloud ที่ให้สิทธิ์ในการจัดการใบรับรอง SSL/TLS และ certificate chain ที่ใช้โดย HTTP Load Balancer สำหรับวิธีการผ่าน UI โปรดดู คู่มือคอนโซลแบบย่อ
วิธีการทำงานของ F5 XC RBAC
หัวข้อที่มีชื่อว่า “วิธีการทำงานของ F5 XC RBAC”F5 XC ใช้โมเดลสิทธิ์แบบสามระดับ:
api_group_element (อ่านอย่างเดียว, กำหนดโดยระบบ) │ ▼ api_group (อ่านอย่างเดียว, กำหนดโดยระบบ) │ ▼ role (CRUD เต็มรูปแบบ — นี่คือสิ่งที่คุณสร้าง)-
api_group_element— กำหนดพาธ regex และเมธอด HTTP (เช่นPOST /api/config/.*/certificates) จัดการโดยระบบ; คุณไม่สามารถ สร้าง แก้ไข หรือลบสิ่งเหล่านี้ได้ -
api_group— คอลเลกชันที่มีชื่อของการอ้างอิงapi_group_elementจัดระเบียบตามพื้นที่ฟังก์ชัน จัดการโดยระบบ; คุณไม่สามารถสร้าง แก้ไข หรือ ลบสิ่งเหล่านี้ได้ กลุ่มใช้หลักการตั้งชื่อเช่นves-io-proxy-readหรือf5xc-waap-standard-admin -
role— อ้างอิงชื่อapi_groupในอาร์เรย์ นี่เป็นระดับเดียว ที่คุณสร้างได้ ใช้ endpoint ของบทบาทแบบกำหนดเองเพื่อแนบapi_groupsเฉพาะเจาะจงเข้ากับบทบาท
การดำเนินการใบรับรองสำหรับ HTTP Load Balancer ถูกรวมอยู่ใน
api_groups ves-io-proxy-* ร่วมกับทรัพยากรที่เกี่ยวข้องกับ proxy อื่นๆ (HTTP Load
Balancer, route, origin เป็นต้น) ไม่มี api_groups เฉพาะสำหรับใบรับรองเพียงอย่างเดียว — แพลตฟอร์มจัดระเบียบสิทธิ์ตามพื้นที่ฟังก์ชัน ไม่ใช่ตามประเภททรัพยากรแต่ละรายการ
ขอบเขตและข้อจำกัด
หัวข้อที่มีชื่อว่า “ขอบเขตและข้อจำกัด”api_groups ves-io-proxy-read และ ves-io-proxy-write ให้สิทธิ์เข้าถึง
ทรัพยากรที่เกี่ยวข้องกับ proxy ทั้งหมด ไม่ใช่เฉพาะใบรับรองเท่านั้น ผู้ใช้ที่ได้รับมอบหมายบทบาทนี้
ยังสามารถจัดการ HTTP Load Balancer, origin, route และอ็อบเจกต์
ระดับ proxy อื่นๆ ได้ด้วย
RBAC เฉพาะใบรับรองเท่านั้นไม่สามารถทำได้บน F5 XC ทั้ง api_group และ
api_group_element เป็นอ็อบเจกต์ที่กำหนดโดยระบบและอ่านอย่างเดียว — API เปิดเผยเฉพาะ endpoint GET สำหรับสิ่งเหล่านี้เท่านั้น บทบาทสามารถอ้างอิงชื่อ api_group
ที่มีอยู่ได้เท่านั้น และไม่มี api_group ที่จำกัดขอบเขตเฉพาะใบรับรอง
การบรรเทา — การแยก namespace: สร้าง namespace เฉพาะสำหรับ
ทรัพยากรใบรับรองและมอบหมายบทบาท example-cert-admin ที่จำกัดขอบเขตเฉพาะ
namespace นั้นเท่านั้น ผู้ใช้ยังคงมีสิทธิ์ระดับ proxy แต่ไม่สามารถเข้าถึง
ทรัพยากรใน namespace อื่นๆ ซึ่งจำกัดผลกระทบจากขอบเขต
api_group ที่กว้างกว่า
ข้อกำหนดเบื้องต้น
หัวข้อที่มีชื่อว่า “ข้อกำหนดเบื้องต้น”- โทเค็น API ของ F5 XC ที่มีสิทธิ์ admin
- ติดตั้ง
curlและjqแล้ว
ตั้งค่าตัวแปรสภาพแวดล้อมของคุณ:
export F5XC_TENANT="your-tenant"export F5XC_API_URL="https://${F5XC_TENANT}.console.ves.volterra.io"export F5XC_API_TOKEN="your-api-token"ขั้นตอนที่ 1: ค้นหา Proxy API Groups
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 1: ค้นหา Proxy API Groups”แสดงรายการอ็อบเจกต์ api_group ที่กำหนดโดยระบบทั้งหมดและกรองเฉพาะ
รายการที่เกี่ยวข้องกับ proxy (ซึ่งรวมถึงสิทธิ์ใบรับรอง):
curl -s \ -H "Authorization: APIToken ${F5XC_API_TOKEN}" \ "${F5XC_API_URL}/api/web/namespaces/shared/api_groups" \ | jq '[.items[] | select(.name | test("ves-io-proxy")) | .name] | sort'ผลลัพธ์ที่คาดหวัง:
[ "ves-io-proxy-app-firewall-read", "ves-io-proxy-app-firewall-write", "ves-io-proxy-monitor-read", "ves-io-proxy-monitor-write", "ves-io-proxy-read", "ves-io-proxy-security-read", "ves-io-proxy-security-write", "ves-io-proxy-waf-read", "ves-io-proxy-waf-write", "ves-io-proxy-write"]สำหรับการจัดการใบรับรอง กลุ่มที่เกี่ยวข้องคือ:
| API Group | สิทธิ์ที่ให้ |
|---|---|
ves-io-proxy-read | สิทธิ์อ่านทรัพยากร proxy รวมถึงใบรับรอง |
ves-io-proxy-write | สิทธิ์เขียนทรัพยากร proxy รวมถึงใบรับรอง |
ขั้นตอนที่ 2: สร้างบทบาทแบบกำหนดเอง
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 2: สร้างบทบาทแบบกำหนดเอง”ใช้ endpoint สร้างบทบาทแบบกำหนดเอง อาร์เรย์ api_groups อ้างอิงชื่อ
api_group ที่กำหนดโดยระบบซึ่งค้นพบในขั้นตอนที่ 1
สร้างบทบาทแบบกำหนดเองที่มีสิทธิ์อ่านและเขียนทรัพยากร proxy (รวมถึง ใบรับรองและ certificate chain):
curl -s -X POST \ -H "Authorization: APIToken ${F5XC_API_TOKEN}" \ -H "Content-Type: application/json" \ "${F5XC_API_URL}/api/web/custom/namespaces/system/roles" \ -d '{ "metadata": { "name": "example-cert-admin", "namespace": "system" }, "spec": {}, "api_groups": [ "ves-io-proxy-read", "ves-io-proxy-write" ] }'ขั้นตอนที่ 3: ตรวจสอบบทบาท
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 3: ตรวจสอบบทบาท”ดึงข้อมูลบทบาทโดยใช้ endpoint GET แบบกำหนดเองเพื่อยืนยันว่า api_groups
ถูกแนบแล้ว:
curl -s \ -H "Authorization: APIToken ${F5XC_API_TOKEN}" \ "${F5XC_API_URL}/api/web/custom/namespaces/system/roles/example-cert-admin" \ | jq '{name: .object.metadata.name, api_groups: .api_groups}'ผลลัพธ์ที่คาดหวัง:
{ "name": "example-cert-admin", "api_groups": [ "ves-io-proxy-read", "ves-io-proxy-write" ]}ขั้นตอนที่ 4: อัปเดตบทบาท (ไม่บังคับ)
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 4: อัปเดตบทบาท (ไม่บังคับ)”หากต้องการเพิ่มหรือลบ api_groups จากบทบาทที่มีอยู่ ให้ใช้ endpoint PUT
แบบกำหนดเอง:
curl -s -X PUT \ -H "Authorization: APIToken ${F5XC_API_TOKEN}" \ -H "Content-Type: application/json" \ "${F5XC_API_URL}/api/web/custom/namespaces/system/roles/example-cert-admin" \ -d '{ "name": "example-cert-admin", "namespace": "system", "spec": {}, "api_groups": [ "ves-io-proxy-read" ] }'ตัวอย่างนี้ลดระดับบทบาทให้เป็นสิทธิ์อ่านอย่างเดียวโดยการลบ
ves-io-proxy-write
ขั้นตอนที่ 5: ลบบทบาท (ไม่บังคับ)
หัวข้อที่มีชื่อว่า “ขั้นตอนที่ 5: ลบบทบาท (ไม่บังคับ)”การลบใช้ endpoint บทบาทมาตรฐาน:
curl -s -X DELETE \ -H "Authorization: APIToken ${F5XC_API_TOKEN}" \ "${F5XC_API_URL}/api/web/namespaces/system/roles/example-cert-admin"อ้างอิง API
หัวข้อที่มีชื่อว่า “อ้างอิง API”Endpoint ของบทบาท (แบบกำหนดเอง — รวม api_groups)
หัวข้อที่มีชื่อว่า “Endpoint ของบทบาท (แบบกำหนดเอง — รวม api_groups)”บทบาททั้งหมดอยู่ใน namespace system
| เมธอด | พาธ | คำอธิบาย |
|---|---|---|
| POST | /api/web/custom/namespaces/system/roles | สร้างบทบาทแบบกำหนดเอง |
| GET | /api/web/custom/namespaces/system/roles | แสดงรายการบทบาทแบบกำหนดเอง |
| GET | /api/web/custom/namespaces/system/roles/{name} | ดูบทบาทแบบกำหนดเอง |
| PUT | /api/web/custom/namespaces/system/roles/{name} | แทนที่บทบาทแบบกำหนดเอง |
Endpoint ของบทบาท (มาตรฐาน)
หัวข้อที่มีชื่อว่า “Endpoint ของบทบาท (มาตรฐาน)”| เมธอด | พาธ | คำอธิบาย |
|---|---|---|
| DELETE | /api/web/namespaces/system/roles/{name} | ลบบทบาท |
| GET | /api/web/namespaces/system/roles/{name} | ดูบทบาท |
| GET | /api/web/namespaces/system/roles | แสดงรายการบทบาท |
Endpoint สำหรับค้นหา (อ่านอย่างเดียว)
หัวข้อที่มีชื่อว่า “Endpoint สำหรับค้นหา (อ่านอย่างเดียว)”การค้นหาใช้ namespace shared
| เมธอด | พาธ | คำอธิบาย |
|---|---|---|
| GET | /api/web/namespaces/shared/api_groups | แสดงรายการ api_groups ทั้งหมด |
| GET | /api/web/namespaces/shared/api_group_elements | แสดงรายการ api_group_elements ทั้งหมด |
Endpoint ของใบรับรอง (สิ่งที่บทบาทให้สิทธิ์เข้าถึง)
หัวข้อที่มีชื่อว่า “Endpoint ของใบรับรอง (สิ่งที่บทบาทให้สิทธิ์เข้าถึง)”แทนที่ {namespace} ด้วย namespace ที่ใบรับรองของคุณถูกจัดการ
| เมธอด | พาธ | คำอธิบาย |
|---|---|---|
| POST | /api/config/namespaces/{namespace}/certificates | สร้างใบรับรอง |
| GET | /api/config/namespaces/{namespace}/certificates | แสดงรายการใบรับรอง |
| GET | /api/config/namespaces/{namespace}/certificates/{name} | ดูใบรับรอง |
| PUT | /api/config/namespaces/{namespace}/certificates/{name} | แทนที่ใบรับรอง |
| DELETE | /api/config/namespaces/{namespace}/certificates/{name} | ลบใบรับรอง |
| POST | /api/config/namespaces/{namespace}/certificate_chains | สร้าง certificate chain |
| GET | /api/config/namespaces/{namespace}/certificate_chains | แสดงรายการ certificate chain |
| GET | /api/config/namespaces/{namespace}/certificate_chains/{name} | ดู certificate chain |
| PUT | /api/config/namespaces/{namespace}/certificate_chains/{name} | แทนที่ certificate chain |
| DELETE | /api/config/namespaces/{namespace}/certificate_chains/{name} | ลบ certificate chain |
ทำไม api_group และ api_group_element จึงเป็นแบบอ่านอย่างเดียว
หัวข้อที่มีชื่อว่า “ทำไม api_group และ api_group_element จึงเป็นแบบอ่านอย่างเดียว”อ็อบเจกต์เหล่านี้กำหนดโดยระบบของ F5 XC แพลตฟอร์มสร้าง
รายการ api_group_element ล่วงหน้าสำหรับทุกพาธ API และจัดกลุ่มเป็น
อ็อบเจกต์ api_group ที่จัดระเบียบตามพื้นที่ฟังก์ชัน
คุณไม่จำเป็นต้องสร้างสิ่งเหล่านี้ — มันมีอยู่แล้วสำหรับทุกทรัพยากรใน ระบบ งานของคุณคือค้นหาชื่อกลุ่มที่เกี่ยวข้อง (ขั้นตอนที่ 1) และ อ้างอิงในบทบาทแบบกำหนดเองของคุณ (ขั้นตอนที่ 2)
หากต้องการดูว่า api_group ครอบคลุมพาธ API แต่ละรายการใดบ้าง ให้แสดงรายการ
endpoint api_group_elements และค้นหา element ที่เกี่ยวข้องกับทรัพยากรของคุณ:
curl -s \ -H "Authorization: APIToken ${F5XC_API_TOKEN}" \ "${F5XC_API_URL}/api/web/namespaces/shared/api_group_elements" \ | jq '[.items[] | select(.name | test("ves-io-schema-certificate")) | .name]'