REST API trong IIQ 5.0.0

REST API đã được giới thiệu trong IIQ 5.0.0, cung cấp lệnh tương đương với lệnh CLI trong phiên bản IIQ trước đó. CLI sẽ không khả dụng trong IIQ 5.0.0. Để hiểu cách REST API hoạt động trong IIQ, chúng tôi sẽ đề cập đến:

  • Xác thực REST API
  • Tạo phiên REST API
  • Nhận phiên REST API
  • Quản lý cụm PowerScale bằng REST API
  • Xuất báo cáo hiệu suất
  • Xóa phiên REST API

Chúng ta hãy bắt đầu nhé!

Xác thực REST API

IIQ 5.0.0 tận dụng JSON Web Tokens (JWT) cùng với x-csrf-token để xác thực dựa trên phiên. Sau đây là một số lợi ích khi sử dụng JWT:

  • JWT chứa thông tin chi tiết của người dùng
  • JWT kết hợp chữ ký số để đảm bảo tính toàn vẹn của chúng và bảo vệ chống lại các sửa đổi trái phép của những kẻ tấn công tiềm năng
  • JWT cung cấp quy trình xác minh hiệu quả và nhanh chóng

Tạo phiên REST API

Yêu cầu POST đến /insightiq/rest/security-iam/v1/auth/login/  sẽ tạo một phiên với cookie JWT và x-csrf-token. Mã trạng thái 201 (Đã tạo) được trả về khi xác thực người dùng thành công. Nếu quá trình xác thực không thành công, API sẽ phản hồi với mã trạng thái 401 (Không được phép).

Sau đây là ví dụ về cách lấy mã thông báo JWT bằng phương thức POST.

Yêu cầu POST là:

curl -vk -X POST https://172.16.202.71:8000/insightiq/rest/security-iam/v1/auth/login -d '{"username": "administrator", "password": "a"}' -H 'accept: application/json' -H 'Content-Type: application/json'

Câu trả lời của POST là:

Lưu ý: Việc sử dụng -X hoặc --request không cần thiết, POST đã được suy ra.
* Đang thử 172.16.202.71:8000...
* Đã kết nối tới cổng 8000 (#0) 172.16.202.71 (172.16.202.71)
* ALPN: cung cấp h2,http/1.1
* TLSv1.3 (OUT), Bắt tay TLS, Xin chào máy khách (1):
* TLSv1.3 (IN), Bắt tay TLS, Xin chào máy chủ (2):
* TLSv1.3 (OUT), Thay đổi mã hóa TLS, Thay đổi thông số mã hóa (1):
* TLSv1.3 (OUT), Bắt tay TLS, Xin chào máy khách (1):
* TLSv1.3 (IN), Bắt tay TLS, Xin chào máy chủ (2):
* TLSv1.3 (IN), bắt tay TLS, Phần mở rộng được mã hóa (8):
* TLSv1.3 (IN), bắt tay TLS, Chứng chỉ (11):
* TLSv1.3 (IN), bắt tay TLS, xác minh CERT (15):
* TLSv1.3 (IN), Bắt tay TLS, Hoàn tất (20):
* TLSv1.3 (OUT), Bắt tay TLS, Hoàn tất (20):
* Kết nối SSL sử dụng TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN: máy chủ chấp nhận h2
* Chứng chỉ máy chủ:
* chủ đề: O=Test; CN=cmo.ingress.dell
* ngày bắt đầu: 04/12 05:59:14 2023 GMT
* ngày hết hạn: 4 tháng 12 07:59:44 2023 GMT
* đơn vị phát hành: C=US; ST=TX; L=Round Rock; O=DELL EMC; OU=Storage; CN=Platform Root CA; emailAddress=a@dell.com
* Kết quả xác minh chứng chỉ SSL: không thể lấy được chứng chỉ của đơn vị phát hành cục bộ (20), vẫn tiếp tục.
* sử dụng HTTP/2
* h2h3 [:phương pháp: POST]
* h2h3 [:đường dẫn: /insightiq/rest/security-iam/v1/auth/đăng nhập]
* h2h3 [:scheme: https]
* h2h3 [:quyền hạn: 172.16.202.71:8000]
* h2h3 [tác nhân người dùng: curl/8.0.1]
* h2h3 [chấp nhận: ứng dụng/json]
* h2h3 [kiểu nội dung: ứng dụng/json]
* h2h3 [chiều dài nội dung: 46]
* Sử dụng Stream ID: 1 (xử lý dễ dàng 0x5618836b5eb0)
> POST /insightiq/rest/security-iam/v1/auth/đăng nhập HTTP/2
> Máy chủ: 172.16.202.71:8000
> tác nhân người dùng: curl/8.0.1
> chấp nhận: ứng dụng/json
> loại nội dung: ứng dụng/json
> chiều dài nội dung: 46
* TLSv1.3 (IN), bắt tay TLS, Phiếu Newsession (4):
* TLSv1.3 (IN), bắt tay TLS, Phiếu Newsession (4):
* ID phiên SSL cũ đã cũ, đang xóa
* Chúng tôi đã tải lên hoàn toàn và ổn
< HTTP/2 201
< máy chủ: istio-envoy
< ngày: Thứ Hai, ngày 04 tháng 12 năm 2023 07:19:19 GMT
< loại nội dung: ứng dụng/json
< chiều dài nội dung: 54
< thiết lập cookie: insightiq_auth=eyJ0eXAiOiJKV1QiLCJhbGciOiJQUzUxMiJ9.eyJjc3JmIjoiN3Z0eG5sMWRxbHIzaGtubGp3MjdwYXl3eW54bzQzdGs0Zmx4IiwiZXhwIjoxNzAxNzg5MTM5LCJpYXQiOjE3MDE3NDU5MzksIml zcyI6IkRlbGwgVGVjaG5vbG9naWVzIiwicm9sZSI6ImFkbWluIiwic2Vzc2lvbiI6InJ6ZnA3ZTRpMXdzd2xuYjBuNGo3YmQwNmF5dWs3emNkeXp1ZSIsInN1YiI6ImFkbWluaXN0cmF0b3IifQ.yKyfXbezscqn6UP a9fXxxjh71MCgeRAXPZhXkG-v92siwXAEP40ASb5bQUFHnAmWwwtlB4Jt8lX9kY8LmRkqi1V7B3v0LgxUp68heAc0HZAh6XO92ac9AfZ9dAuE9H3U4RNELm4vVx8mGrGmuzQymWUG5yRCNk03SpeW8esHnTPRVoGGsE 4Cf6ta3BrUXBfic-D_TL01YgyY3Dy_T8Z1oqhkD508GPEYnEeNMU1QtZAwkmj6MJHtGmp69T0ljtQdIW2oi5xYdPs-ZHGSFRGG4j2o8xAEFV8A4igzP-5XOkE9NCcx2mkj67OdvVgNBxCcY-X7cnYyfLgagkanyQSgdA ; Bảo mật; Chỉ Http; Đường dẫn=/
< set-cookie: csrf_token=7vtxnl1dqlr3hknljw27paywynxo43tk4flx; Bảo mật; Chỉ Http; Đường dẫn=/
< x-csrf-mã thông báo: 7vtxnl1dqlr3hknljw27paywynxo43tk4flx
< x-envoy-upstream-service-time: 3179
< chính sách-bảo-mật-nội-dung: nguồn-mặc-định 'tự' 'không-an-toàn-dòng' 'không-an-toàn-dòng' dữ liệu:; nguồn-kiểu 'không-an-toàn-dòng' 'tự';
< x-frame-options: cùng nguồn gốc
< x-xss-protection: 1; chế độ=chặn
< x-content-type-options: nosniff
< chính sách giới thiệu: strict-origin-when-cross-origin
{"timeout_absolute": 43200 ,"tên người dùng":"quản trị viên"}
* Kết nối #0 tới máy chủ 172.16.202.71 vẫn còn nguyên vẹn

Cookie JWT và x-csrf-token đã được tạo và đánh dấu trong phần phản hồi POST. Thời gian chờ cho phiên là 43.200 giây (12 giờ). Bạn có thể lưu chúng để sử dụng trong tương lai:

xuất khẩu TOK="insightiq_auth=eyJ0eXAiOiJKV1QiLCJhbGciOiJQUzUxMiJ9.eyJjc3JmIjoiN3Z0eG5sMWRxb HIzaGtubGp3MjdwYXl3eW54bzQzdGs0Zmx4IiwiZXhwIjoxNzAxNzg5MTM5LCJpYXQiOjE3MDE3NDU5Mzk sImlzcyI6IkRlbGwgVGVjaG5vbG9naWVzIiwicm9sZSI6ImFkbWluIiwic2Vzc2lvbiI6InJ6ZnA3ZTRpMXdzd2xuYjBuNGo3YmQwNmF5dWs3emNkeXp1ZSIsInN1YiI6ImFkbWluaXN0cmF0b3IifQ.yKyfXbezscqn6 UPa9fXxxjh71MCgeRAXPZhXkG-v92siwXAEP40ASb5bQUFHnAmWwwtlB4Jt8lX9kY8LmRkqi1V7B3v0LgxUp68heAc0HZAh6XO92ac9AfZ9dAuE9H3U4RNELm4vVx8mGrGmuzQymWUG5yRCNk03SpeW8esHnTPRVoGGsE 4Cf6ta3BrUXBfic-D_TL01YgyY3Dy_T8Z1oqhkD508GPEYnEeNMU1QtZAwkmj6MJHtGmp69T0ljtQdIW2oi5xYdPs-ZHGSFRGG4j2o8xAEFV8A4igzP-5XOkE9NCcx2mkj67OdvVgNBxCcY-X7cnYyfLgagkanyQSgdA"

Nhận phiên REST API

Sử dụng phương thức GET đối với /insightiq/rest/security-iam/v1/auth/session/  để lấy thông tin phiên. Trong tiêu đề yêu cầu, hãy bao gồm cookie và trường x-csrf-token để xác thực.

curl -k -v -X GET https://172.16.202.71:8000/insightiq/rest/security-iam/v1/auth/session --cookie $TOK -H 'chấp nhận: ứng dụng/json' -H 'Loại nội dung: ứng dụng/json' -H 'mã thông báo x-csrf: 7vtxnl1dqlr3hknljw27paywynxo43tk4flx '

Câu trả lời là:

Lưu ý: Việc sử dụng -X hoặc --request không cần thiết, GET đã được suy ra.
* Đang thử 172.16.202.71:8000...
* Đã kết nối tới cổng 8000 (#0) 172.16.202.71 (172.16.202.71)
* ALPN: cung cấp h2,http/1.1
* TLSv1.3 (OUT), Bắt tay TLS, Xin chào máy khách (1):
* TLSv1.3 (IN), Bắt tay TLS, Xin chào máy chủ (2):
* TLSv1.3 (OUT), Thay đổi mã hóa TLS, Thay đổi thông số mã hóa (1):
* TLSv1.3 (OUT), Bắt tay TLS, Xin chào máy khách (1):
* TLSv1.3 (IN), Bắt tay TLS, Xin chào máy chủ (2):
* TLSv1.3 (IN), bắt tay TLS, Phần mở rộng được mã hóa (8):
* TLSv1.3 (IN), bắt tay TLS, Chứng chỉ (11):
* TLSv1.3 (IN), bắt tay TLS, xác minh CERT (15):
* TLSv1.3 (IN), Bắt tay TLS, Hoàn tất (20):
* TLSv1.3 (OUT), Bắt tay TLS, Hoàn tất (20):
* Kết nối SSL sử dụng TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN: máy chủ chấp nhận h2
* Chứng chỉ máy chủ:
* chủ đề: O=Test; CN=cmo.ingress.dell
* ngày bắt đầu: 05/12 03:16:34 2023 GMT
* ngày hết hạn: 05/12 05:17:04 2023 GMT
* đơn vị phát hành: C=US; ST=TX; L=Round Rock; O=DELL EMC; OU=Storage; CN=Platform Root CA; emailAddress=a@dell.com
* Kết quả xác minh chứng chỉ SSL: không thể lấy được chứng chỉ của đơn vị phát hành cục bộ (20), vẫn tiếp tục.
* sử dụng HTTP/2
* h2h3 [:phương thức: GET]
* h2h3 [:đường dẫn: /insightiq/rest/security-iam/v1/auth/session]
* h2h3 [:scheme: https]
* h2h3 [:quyền hạn: 172.16.202.71:8000]
* h2h3 [tác nhân người dùng: curl/8.0.1]
* h2h3 [cookie: insightiq_auth=eyJ0eXAiOiJKV1QiLCJhbGciOiJQUzUxMiJ9.eyJjc3JmIjoiN3Z0eG5sMWRxbHIzaGtubGp3MjdwYXl3eW54bzQzdGs0Zmx4IiwiZXhwIjoxNzAxNzg5MTM5LCJpYXQiOjE3MDE3NDU5MzksIml zcyI6IkRlbGwgVGVjaG5vbG9naWVzIiwicm9sZSI6ImFkbWluIiwic2Vzc2lvbiI6InJ6ZnA3ZTRpMXdzd2xuYjBuNGo3YmQwNmF5dWs3emNkeXp1ZSIsInN1YiI6ImFkbWluaXN0cmF0b3IifQ.yKyfXbezscqn6UPa 9fXxxjh71MCgeRAXPZhXkG-v92siwXAEP40ASb5bQUFHnAmWwwtlB4Jt8lX9kY8LmRkqi1V7B3v0LgxUp68heAc0HZAh6XO92ac9AfZ9dAuE9H3U4RNELm4vVx8mGrGmuzQymWUG5yRCNk03SpeW8esHnTPRVoGGsE4 Cf6ta3BrUXBfic-D_TL01YgyY3Dy_T8Z1oqhkD508GPEYnEeNMU1QtZAwkmj6MJHtGmp69T0ljtQdIW2oi5xYdPs-ZHGSFRGG4j2o8xAEFV8A4igzP-5XOkE9NCcx2mkj67OdvVgNBxCcY-X7cnYyfLgagkanyQSgdA]
* h2h3 [chấp nhận: ứng dụng/json]
* h2h3 [kiểu nội dung: ứng dụng/json]
* h2h3 [mã thông báo x-csrf: 7vtxnl1dqlr3hknljw27paywynxo43tk4flx]
* Sử dụng Stream ID: 1 (xử lý dễ dàng 0x561f902392c0)
> NHẬN /insightiq/rest/security-iam/v1/auth/session HTTP/2
> Máy chủ: 172.16.202.71:8000
> tác nhân người dùng: curl/8.0.1
> cookie: insightiq_auth=eyJ0eXAiOiJKV1QiLCJhbGciOiJQUzUxMiJ9.eyJjc3JmIjoiN3Z0eG5sMWRxbHIzaGtubGp3MjdwYXl3eW54bzQzdGs0Zmx4IiwiZXhwIjoxNzAxNzg5MTM5LCJpYXQiOjE3MDE3NDU5MzksIml zcyI6IkRlbGwgVGVjaG5vbG9naWVzIiwicm9sZSI6ImFkbWluIiwic2Vzc2lvbiI6InJ6ZnA3ZTRpMXdzd2xuYjBuNGo3YmQwNmF5dWs3emNkeXp1ZSIsInN1YiI6ImFkbWluaXN0cmF0b3IifQ.yKyfXbezscqn6UP a9fXxxjh71MCgeRAXPZhXkG-v92siwXAEP40ASb5bQUFHnAmWwwtlB4Jt8lX9kY8LmRkqi1V7B3v0LgxUp68heAc0HZAh6XO92ac9AfZ9dAuE9H3U4RNELm4vVx8mGrGmuzQymWUG5yRCNk03SpeW8esHnTPRVoGGsE 4Cf6ta3BrUXBfic-D_TL01YgyY3Dy_T8Z1oqhkD508GPEYnEeNMU1QtZAwkmj6MJHtGmp69T0ljtQdIW2oi5xYdPs-ZHGSFRGG4j2o8xAEFV8A4igzP-5XOkE9NCcx2mkj67OdvVgNBxCcY-X7cnYyfLgagkanyQSgdA
> chấp nhận: ứng dụng/json
> loại nội dung: ứng dụng/json
> x-csrf-mã thông báo: 7vtxnl1dqlr3hknljw27paywynxo43tk4flx
* TLSv1.3 (IN), bắt tay TLS, Phiếu Newsession (4):
* TLSv1.3 (IN), bắt tay TLS, Phiếu Newsession (4):
* ID phiên SSL cũ đã cũ, đang xóa
< HTTP/2 200
< máy chủ: istio-envoy
< ngày: Thứ ba, 05 tháng 12 năm 2023 03:19:41 GMT
< loại nội dung: ứng dụng/json
< chiều dài nội dung: 57
< x-envoy-upstream-service-time: 5
< chính sách-bảo-mật-nội-dung: nguồn-mặc-định 'tự' 'không-an-toàn-dòng' 'không-an-toàn-dòng' dữ liệu:; nguồn-kiểu 'không-an-toàn-dòng' 'tự';
< x-frame-options: cùng nguồn gốc
< x-xss-protection: 1; chế độ=chặn
< x-content-type-options: nosniff
< chính sách giới thiệu: strict-origin-when-cross-origin
{ "tên người dùng": "quản trị viên", "thời gian chờ tuyệt đối": 42758 }
* Kết nối #0 tới máy chủ 172.16.202.71 vẫn còn nguyên vẹn

Nội dung phản hồi sẽ trả về tên người dùng của phiên và giá trị thời gian chờ còn lại tính bằng giây.

Quản lý cụm PowerScale bằng REST API

Bạn cũng có thể sử dụng IIQ REST API để quản lý cụm PowerScale của mình. Giống như những gì chúng ta đã thấy cho đến nay, tất cả các yêu cầu phải bao gồm tham số cookie và x-csrf-token để xác thực. Khi thêm cụm vào IIQ, bạn cũng sẽ cần cung cấp IP cụm với tên người dùng và mật khẩu. Để biết chi tiết, hãy tham khảo bảng sau:

Bảng 1. Sử dụng REST API để quản lý PowerScale Clusters

Chức năng Điểm cuối API REST Chi tiết về REST API
Thêm cụm vào IIQ
ĐĂNG /insightiq/rest/clustermanager/v1/clusters
curl -k -v -X 'ĐĂNG' \
'https://<IP_BÊN NGOÀI>:8000/insightiq/rest/clustermanager/v1/clusters' \
  --cookie <BÁNH QUY> \
  -H 'chấp nhận: ứng dụng/json' \
  -H 'Loại nội dung: ứng dụng/json' \
  -H 'x-csrf-mã thông báo: <Mã thông báo X-CSRF>'
  -d '{
    "máy chủ": "<Máy chủ>",
    "tên người dùng": "<TÊN NGƯỜI DÙNG>",
    "mật khẩu": "<MẬT KHẨU>"
}'
Xóa cụm từ IIQ
XÓA /insightiq/rest/clustermanager/v1/clusters/<GUID>
curl -k -v -X 'XÓA' \
'https://<IP_BÊN NGOÀI>:8000/insightiq/rest/clustermanager/v1/clusters/<GUID>' \
--cookie <BÁNH QUY> \
-H 'chấp nhận: ứng dụng/json' \
-H 'x-csrf-mã thông báo: <Mã thông báo X-CSRF>'

Xuất báo cáo hiệu suất

Để xuất báo cáo hiệu suất từ ​​IIQ 5.0.0, bạn có thể sử dụng phương thức GET đối với /iiq/reporting/api/v1/timeseries/download_data  với các tham số truy vấn sau:

  • cụm – ID cụm PowerScale 
  • start_time – Dấu thời gian kỷ nguyên UNIX của thời điểm bắt đầu phạm vi dữ liệu. Mặc định là dữ liệu báo cáo và thời gian được lưu gần đây nhất.
  • end_time – Dấu thời gian epoch UNIX của thời điểm kết thúc phạm vi dữ liệu. Mặc định là gần đây nhấtlưu dữ liệu báo cáo và thời gian.
  • key – khóa hiệu suất. Để có danh sách tất cả các khóa được hỗ trợ, hãy sử dụng phương thức GET đối với http://<lP>:8000/iiq/reporting/api/v1/reports/data-element-types

Lưu ý : Để lấy khóa hiệu suất, hãy sử dụng các giá trị từ danh sách phản hồi cho data-element-types trong definition.timeseries_keys từ các phần tử dữ liệu trong đó report_group bằng performance  và definition.layout bằng chart . Xem ảnh chụp màn hình sau để biết ví dụ. Trong ví dụ này, khóa hiệu suất là ext_net .


Hình 1. Nhận khóa hiệu suất trong đó khóa là ext_net

Sau đây là ví dụ về việc sử dụng IIQ REST API để xuất hiệu suất cụm của thông lượng mạng bên ngoài sang tệp CSV:

curl -vk -X NHẬN "https://10.246.159.113:8000/iiq/reporting/api/v1/timeseries/download_data?cluster=0007433384d03e80b4582103b56e1cac33a2&start_time=1694143511&end_time=1694366711&key=ext_net" -H 'x-csrf-token: vny27rem4l6ww29hvkhuaka0ix7x172wufbv' --cookie $TOK >>perf.csv

Xóa phiên REST API

Để xóa phiên IIQ REST API, hãy sử dụng API sau:

curl -k -v -X GET https://<IP_BÊN NGOÀI>:8000/insightiq/rest/security-iam/v1/auth/logout --cookie <COOKIE> -H 'chấp nhận: ứng dụng/json' -H 'Loại nội dung: ứng dụng/json' -H 'mã thông báo x-csrf: <MÃ THÔNG BÁO X-CSRF>'

Phần kết luận