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

อ้างอิง API

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

การเรียก API ทั้งหมดต้องใช้ API token สร้าง token ได้ใน XC Console ภายใต้ การบริหารCredentialsAPI 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]+"