ข้ามไปยังเนื้อหา

อ้างอิง API

CSD มี API เฉพาะที่ /api/shape/csd/ สำหรับการจัดการโดเมน สคริปต์ การบรรเทาภัยคุกคาม และการตรวจสอบ นอกจากนี้ CSD ยังสามารถเปิดใช้งานบน HTTP Load Balancers ผ่าน API การกำหนดค่า load balancer ได้ด้วย

การเรียก API ทั้งหมดต้องใช้ API token สร้าง token ได้ใน XC Console ภายใต้ การบริหาร → Credentials → API Credentials

ตั้งค่าตัวแปรสภาพแวดล้อมของคุณตามที่อธิบายไว้ใน การทำงานอัตโนมัติ API — การตั้งค่าสภาพแวดล้อม:

Terminal window
set -a && source .env && set +a

ตัวอย่าง curl ทั้งหมดใช้รูปแบบ placeholder xTOKENx แทนที่ด้วยตัวแปรสภาพแวดล้อมของคุณหรือใช้ฟอร์มแบบโต้ตอบที่ด้านบนของหน้า ตัวอย่างเช่น xF5XC_API_TOKENx ตรงกับ $F5XC_API_TOKEN

Terminal window
-H "Authorization: APIToken xF5XC_API_TOKENx"
  • POST คืนค่าออบเจ็กต์ที่สร้างขึ้นเป็น JSON
  • PUT และ DELETE คืนค่า \{\} ว่างเปล่าเมื่อ HTTP 200 — นี่เป็นเรื่องปกติ ไม่ใช่ข้อผิดพลาด อย่าถือว่า response body ว่างเปล่าเป็นความล้มเหลว

List endpoints (เช่น /healthchecks, /origin_pools, /protected_domains) และ GET endpoints แต่ละรายการ (เช่น /healthchecks/\{name\}) คืนค่า โครงสร้าง response ที่แตกต่างกัน:

ประเภท Endpointตัวอย่าง pathโครงสร้าง response
List/origin_poolsรายการมี .name, .namespace, .tenant ระดับบนสุด พร้อม metadata: null และ get_spec: null
Individual GET/origin_pools/\{name\}ออบเจ็กต์มี .metadata.name, .spec.* พร้อมการกำหนดค่าเต็มรูปแบบ

ใช้ path jq ที่ถูกต้องสำหรับแต่ละรายการ ตัวอย่างเช่น หากต้องการแยก names จาก list endpoint ให้ใช้ .items[].name ไม่ใช่ .items[].metadata.name

สำหรับการดำเนินการ GET และ DELETE ของ protected domain พารามิเตอร์ path \{name\} คือ ค่าโดเมนนั้นเอง (เช่น bankexample.com) ไม่ใช่ชื่อออบเจ็กต์ตามอำเภอใจ ซึ่งแตกต่างจากออบเจ็กต์ F5 XC อื่น ๆ ที่ชื่อเป็นตัวระบุที่ผู้ใช้เลือกเอง

Base path: /api/shape/csd/namespaces/\{namespace\}/

การดำเนินการMethodPath
เปิดใช้งาน CSDPOST/api/shape/csd/namespaces/system/init
ดูสถานะGET/api/shape/csd/namespaces/\{namespace\}/status
ดูการกำหนดค่า JSGET/api/shape/csd/namespaces/\{namespace\}/js_configuration
ทดสอบ JSPOST/api/shape/csd/namespaces/\{namespace\}/testjs
อัปเดตโดเมนPOST/api/shape/csd/namespaces/\{namespace\}/update_domains
การดำเนินการMethodPath
แสดงรายการGET/api/shape/csd/namespaces/\{namespace\}/protected_domains
ดูGET/api/shape/csd/namespaces/\{namespace\}/protected_domains/\{name\}
สร้างPOST/api/shape/csd/namespaces/\{namespace\}/protected_domains
ลบDELETE/api/shape/csd/namespaces/\{namespace\}/protected_domains/\{name\}
การดำเนินการMethodPath
แสดงรายการที่ตรวจพบGET/api/shape/csd/namespaces/\{namespace\}/detected_domains
ดูรายละเอียดGET/api/shape/csd/namespaces/\{namespace\}/domain_details
การดำเนินการMethodPath
แสดงรายการGET/api/shape/csd/namespaces/\{namespace\}/allowed_domains
ดูGET/api/shape/csd/namespaces/\{namespace\}/allowed_domains/\{name\}
สร้างPOST/api/shape/csd/namespaces/\{namespace\}/allowed_domains
ลบDELETE/api/shape/csd/namespaces/\{namespace\}/allowed_domains/\{name\}
การดำเนินการMethodPath
แสดงรายการGET/api/shape/csd/namespaces/\{namespace\}/mitigated_domains
ดูGET/api/shape/csd/namespaces/\{namespace\}/mitigated_domains/\{name\}
สร้างPOST/api/shape/csd/namespaces/\{namespace\}/mitigated_domains
ลบDELETE/api/shape/csd/namespaces/\{namespace\}/mitigated_domains/\{name\}
การดำเนินการMethodPath
แสดงรายการสคริปต์POST/api/shape/csd/namespaces/\{namespace\}/scripts
แสดงรายการสคริปต์ (legacy)GET/api/shape/csd/namespaces/\{namespace\}/scripts
ดูภาพรวมสคริปต์GET/api/shape/csd/namespaces/\{namespace\}/scripts/\{id\}/dashboard
แสดงรายการ BehaviorsGET/api/shape/csd/namespaces/\{namespace\}/scripts/\{id\}/behaviors
แสดงรายการการโต้ตอบเครือข่ายGET/api/shape/csd/namespaces/\{namespace\}/scripts/\{id\}/networkInteractions
อัปเดต JustificationPOST/api/shape/csd/namespaces/\{namespace\}/scripts/\{script_id\}/justification
ลบ JustificationDELETE/api/shape/csd/namespaces/\{namespace\}/script/justification/\{justification_id\}
อัปเดตสถานะการอ่านPOST/api/shape/csd/namespaces/\{namespace\}/scripts/\{id\}/readStatus
แสดงรายการผู้ใช้ที่ได้รับผลกระทบPOST/api/shape/csd/namespaces/\{namespace\}/scripts/\{script_id\}/affectedUsers
การดำเนินการMethodPath
แสดงรายการ Form FieldsGET/api/shape/csd/namespaces/\{namespace\}/formFields
แสดงรายการ Form Fields (POST)POST/api/shape/csd/namespaces/\{namespace\}/formFields
ดู Form FieldGET/api/shape/csd/namespaces/\{namespace\}/formFields/\{id\}
แสดงรายการตามสคริปต์GET/api/shape/csd/namespaces/\{namespace\}/scripts/\{id\}/formFields
อัปเดตการวิเคราะห์ฟิลด์POST/api/shape/csd/namespaces/\{namespace\}/formFields/analysis

เริ่มต้น CSD สำหรับ tenant:

Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
"xF5XC_API_URLx/api/shape/csd/namespaces/system/init"
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/status" \
| jq .
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains" \
| jq .
Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"name": "my-app",
"namespace": "xF5XC_NAMESPACEx"
},
"spec": {}
}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains" \
| jq .
Terminal window
curl -s -X DELETE \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/protected_domains/my-app"

Query parameters: locations (กรองตามตำแหน่ง), risk (กรองตามระดับความเสี่ยง)

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \
| jq .

กรองตามความเสี่ยงสูง:

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains?risk=high" \
| jq .
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/domain_details?name=suspicious.example.com" \
| jq .
Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts" \
| jq .
Terminal window
SCRIPT_ID="your-script-id"
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/dashboard" \
| jq .
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/behaviors" \
| jq .
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts/${SCRIPT_ID}/networkInteractions" \
| jq .
Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"name": "blocked-domain",
"namespace": "xF5XC_NAMESPACEx"
},
"spec": {}
}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq .
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \
| jq .
Terminal window
curl -s -X DELETE \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains/blocked-domain"
Terminal window
curl -s -X POST \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"name": "trusted-cdn",
"namespace": "xF5XC_NAMESPACEx"
},
"spec": {}
}' \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/allowed_domains" \
| jq .
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/allowed_domains" \
| jq .
Terminal window
curl -s -X DELETE \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/allowed_domains/trusted-cdn"
Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/js_configuration" \
| jq .

การ inject JavaScript ของ CSD สามารถเปิดใช้งานได้โดยตรงบน HTTP Load Balancer ผ่าน API การกำหนดค่าที่ /api/config/namespaces/\{namespace\}/http_loadbalancers/\{name\}

ฟิลด์ client_side_defense ภายใน spec ของ load balancer ควบคุมการ inject:

{
"client_side_defense": {
"policy": {
"js_insert_all_pages": {}
}
}
}

policy รับค่าหนึ่งในรายการต่อไปนี้:

ฟิลด์คำอธิบาย
js_insert_all_pagesInject ในทุกหน้า
js_insert_all_pages_exceptInject ในทุกหน้ายกเว้นกฎการยกเว้น
js_insertion_rulesInject เฉพาะในหน้าที่ตรงกับกฎ
disable_js_insertไม่ต้อง inject

หากต้องการปิดใช้งาน CSD บน load balancer ให้แทนที่ client_side_defense ด้วย disable_client_side_defense: \{\}

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx" \
| jq '.spec.client_side_defense'

ดึงข้อมูล แก้ไข และนำไปใช้:

Terminal window
curl -s \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx" \
> lb-config.json
jq '.spec |= (
del(.disable_client_side_defense) |
.client_side_defense = {
"policy": {
"js_insert_all_pages": {}
}
}
)' lb-config.json > lb-config-updated.json
curl -s -X PUT \
-H "Authorization: APIToken xF5XC_API_TOKENx" \
-H "Content-Type: application/json" \
-d @lb-config-updated.json \
"xF5XC_API_URLx/api/config/namespaces/xF5XC_NAMESPACEx/http_loadbalancers/xF5XC_LB_NAMEx" \
| jq '.spec.client_side_defense'

เมื่อใช้ js_insert_all_pages_except หรือ js_insertion_rules แต่ละกฎจะจับคู่กับโดเมนและ path

โดเมน (เลือกหนึ่งรายการ):

ฟิลด์ตัวอย่าง
any_domain: \{\}ทุกโดเมน
domain.exact_value"app.example.com"
domain.suffix_value".example.com"
domain.regex_value".*\\.example\\.com"

Path (เลือกหนึ่งรายการ):

ฟิลด์ตัวอย่าง
path.path"/login"
path.prefix"/checkout"
path.regex"/user/[0-9]+"