IDENTITY SERVICES ENGINE (ISE)
ISE là một nền tảng thực thi chính sách và kiểm soát truy cập mạng. ISE cho phép chúng ta kiểm soát bảo mật mức cao cho vấn đề kiểm soát truy cập mạng cho các người dùng và các thiết bị. ISE đơn giản hóa việc phân phối quyền kiểm soát truy cập trên mạng có dây và không dây cũng như các kết nối VPN từ xa. Với tính năng profiling và cảm biến thông minh, ISE thâm nhập sâu vào các lưu lượng mạng, các thiết bị đầu cuối để cung cấp khả năng hiển thị về người dùng và những thiết bị đầu cuối đang truy cập mạng và tài nguyên mạng. ISE giúp chúng ta có thêm những thông tin về điều gì đang xảy ra trên mạng, chẳng hạn như ai đang kết nối và ứng dụng nào đang được cài đặt hoặc đang chạy. Nó cũng chia sẽ những thông tin về trạng thái quan trọng, chẳng hạn như tên của người dùng hoặc tên thiết bị, các mối đe dọa, các lỗ hổng bảo mật. Vì vậy bạn có thể nhận dạng, cô lập và loại bỏ các mối đe dọa.
Hình bên dưới minh hoạt năm chức năng chủ chốt của ISE.
Loại API của ISE Embedded Services Router cho phép ISE quản lý các cơ sở dữ liệu. Cisco ISE cung cấp năm chức năng chủ chốt để giúp bảo mật mạng:
ISE cung cấp các lợi ích sau:
Thông tin xác thực là điều cần thiết để người dùng hoặc thiết bị truy cập vào bất kỳ tài nguyên mạng nào. Mọi cá nhân đều được nhận dạng bằng cách sử dụng thông tin xác thực của ISE. Thông tin xác thực có dạng mật khẩu, chứng chỉ số, mã thông báo hoặc ít nhất là địa chỉ MAC của thiết bị đầu cuối. Thông tin xác thực được gửi đến ISE trong một quá trình được gọi là xác thực. Doanh nghiệp có thể sử dụng nhiều giao thức xác thực khác nhau, tùy thuộc vào loại mạng và loại thiết bị đầu cuối. Với xác thực, về cơ bản, bạn cho ISE biết bạn là ai. Xác thực thường đi kèm với ủy quyền hoặc phân quyền (authorization). Sau khi bạn xác nhận danh tính của mình với ISE, ISE sẽ xác định cấp độ truy cập của bạn. Thời điểm một điểm cuối truy cập với quyền truy cập mạng, các thiết bị mạng sẽ tạo một ID của phiên truy cập và chia sẻ thông tin đó cho máy chủ ISE. ISE biết tất cả các điểm cuối trong mạng là những thiết bị gì và chúng được kết nối ở đâu.
Ngày nay, các doanh nghiệp đã có một số loại dịch vụ nhận dạng như Microsoft Active Directory hoặc LDAP; Ngoài ra, có thể có các máy chủ ODBC khác lưu trữ một số tài khoản người dùng và thiết bị. Cơ sở hạ tầng PKI có thể đã tồn tại để quản lý chứng chỉ và có thể có một số công cụ quản lý thiết bị di động và công cụ cung cấp danh tính để đăng nhập chỉ một lần duy nhất cho toàn hệ thống (single sign-on). ISE có thể tích hợp liền mạch với tất cả các kho lưu trữ danh tính bên ngoài và cung cấp khả năng kiểm soát truy cập mạng.
Hình bên dưới cho thấy cách ISE tích hợp với các điểm cuối, thiết bị mạng và các dịch vụ bên ngoài.
Khi một hồ sơ được liên kết, các chính sách khác nhau có thể được thực thi. Các chính sách này có thể như sau:
1. ISE REST APIs
Cisco ISE hỗ trợ External RESTful Services (ISE ERS) API. ERS được thiết kế để cho phép các client thực hiện các tác vụ CRUD (Create, Read, Update, Delete) trên các tài nguyên của ISE. ERS sử dụng giao thức HTTP và phương pháp REST. Phần bên dưới sẽ trình bày cách thức làm thế nào để bật ERS và bắt đầu viết các ứng dụng.
Đầu tiên bạn cần bật ERS để bắt đầu lắng nghe các cuộc gọi API trên cổng SSL 9060. Yêu cầu đầu tiên là bật ERS trước. Hãy đến Administration -> Settings -> ERS Settings. Kiểm tra chức năng 'Enable ERS for Read/Write'.
Hình bên dưới mô tả việc sử dụng REST API để truy cập một tài nguyên của Cisco ISE.
ISE có hai loại API:
Quản trị viên ISE phải chỉ định các quyền đặc biệt cho người dùng để thực hiện các hoạt động bằng API ERS. Quản trị viên ISE có thể chỉ định hai vai trò sau để cung cấp dịch vụ bằng API ERS:
Quản trị viên Dịch vụ RESTful có quyền thay đổi: Có toàn quyền truy cập vào tất cả các phương thức ERS (GET, POST, DELETE, PUT).
Nhà điều hành dịch vụ RESTful, quyền truy cập chỉ đọc (chỉ các yêu cầu GET).
Hình ISE ERS: Bật quyền truy cập API
Nhiều bộ lọc có thể được dùng và đánh giá dùng một toán hạng và kết hợp vào URL dùng ký tự dấu chấm.
GET /ers/config/internaluser?filter=name.STARTW.a&filter=identityG roup.EQ.Finance
2. Xác thực API ERS
API ISE ERS sử dụng xác thực cơ bản HTTP, yêu cầu thông tin xác thực được gửi trong header Authorization. Thông tin xác thực là tên người dùng và mật khẩu, được phân tách bằng dấu hai chấm (:), trong một chuỗi được mã hóa Base64.
Ví dụ: Authorization header sẽ chứa chuỗi sau:
"Basic ZGV2YXNjOnN0cm9uZ3Bhc3N3b3Jk"
Trong trường hợp này, ZGV2YXNjOnN0cm9uZ3Bhc3N3b3Jk là chuỗi được mã hóa Base64 devasc: strongpassword (trong đó devasc là tên người dùng và strongpassword là mật khẩu). Ví dụ cho thấy ba dòng mã thực hiện mã hóa Base64 để gán giá trị vào Authorization header.
>>>import base64
>>>encoded =base64.b64encode('devasc:strongpassword'.encode(' UTF-8')).decode('ASCII')
>>>print(encoded)
Tất cả các lệnh gọi API ERS được thực hiện tới URL https://<IP-of ISE>: 9060/. Bây giờ, hãy xem xét một số ví dụ về API điểm cuối ISE ERS.
3. Tạo nhóm đầu cuối
API gửi dữ liệu để tạo một nhóm điểm cuối mới. Nó sử dụng phương thức POST và yêu cầu các header xác thực cơ bản. Phần sau cho ta thấy gói tin cần thiết để tạo Nhóm điểm cuối được gọi là ‘DevNet Associate Group':
Data - {
"EndPointGroup" : {
"name" : "DevNet Associate Group",
"description" : "DevNet Associate Group"
}
}
Đoạn mã POST Python để tạo một nhóm điểm cuối mới.
""" create a new endpointgroup """
>>>import json
>>>import requests
>>>url ="https://ise.devnetsandbox.com/ers/config/endpointgroup"
>>>payload = {
"EndPointGroup": {
"name": "DevNet Associate Group",
"description": "DevNet Associate Group"
}
}
>>>headers = {
'content-type': "application/json",
'accept': "application/json",
'authorization': "Basic ZGV2YXNjOnN0cm9uZ3Bhc3N3b3JkJw==",
'cache-control': "no-cache",
}
>>>response = requests.request("POST", url, data=json.dumps(payload), headers=headers)
>>>print(response.text)
Header phản hồi chứa ID nhóm mới được tạo:
Location:
https://ise.devnetsandbox.com:9060/ers/config/endpointgroup/00000000-1111-2222-3333-444444444444
4. Tạo một điểm cuối và thêm nó vào một nhóm
API https://ise.devnetsandbox.com:9060/ers/config/endpoint gửi dữ liệu để tạo một điểm cuối mới. Nó sử dụng phương thức POST. Phần sau cho ta thấy gói tin cần thiết để tạo Điểm cuối được gọi là DevNet Endpoint' với một GroupId được chỉ định.
Method: POST
URL:
Data - {
"ERSEndPoint" : {
"name":"DevNet_Endpoint",
"description":"DevNet Endpoint-1",
"mac":"FF:EE:DD:03:04:05",
"groupId":" 00000000-1111-2222-3333-444444444444",
"staticGroupAssignment":true
}
}
API này sử dụng ID nhóm từ header và yêu cầu các header xác thực cơ bản. Ví dụ cho thấy một tập lệnh yêu cầu Python.
""" create a new endpoint """
>>>import json
>>>import requests
>>>url ="https://ise.devnetsandbox.com/ers/config/endpoint"
>>>payload = {
"ERSEndPoint": {
"name": "DevNet_Endpoint",
"description": "DevNet Endpoint-1",
"mac": "FF:EE:DD:03:04:05",
"groupId": " 00000000-1111-2222-3333-444444444444",
"staticGroupAssignment": True
}
}
>>>headers = {
'content-type': "application/json",
'accept': "application/json",
'authorization': "Basic ZGV2YXNjOnN0cm9uZ3Bhc3N3b3JkJw==",
'cache-control': "no-cache",
}
>>>response = requests.request("POST", url, data=json.dumps(payload), headers=headers)
>>>print(response.text)
Header phản hồi chứa ID mới được tạo:
Location:
https://ise.devnetsandbox.com:9060/ers/config/endpoint/deadbeef-1111-2222-3333-444444444444
5. API ISE khác
Để có danh sách đầy đủ tất cả các API ISE của Cisco, hãy xem tại https://developer.cisco.com/docs/identity-services-engine/.
ISE là một nền tảng thực thi chính sách và kiểm soát truy cập mạng. ISE cho phép chúng ta kiểm soát bảo mật mức cao cho vấn đề kiểm soát truy cập mạng cho các người dùng và các thiết bị. ISE đơn giản hóa việc phân phối quyền kiểm soát truy cập trên mạng có dây và không dây cũng như các kết nối VPN từ xa. Với tính năng profiling và cảm biến thông minh, ISE thâm nhập sâu vào các lưu lượng mạng, các thiết bị đầu cuối để cung cấp khả năng hiển thị về người dùng và những thiết bị đầu cuối đang truy cập mạng và tài nguyên mạng. ISE giúp chúng ta có thêm những thông tin về điều gì đang xảy ra trên mạng, chẳng hạn như ai đang kết nối và ứng dụng nào đang được cài đặt hoặc đang chạy. Nó cũng chia sẽ những thông tin về trạng thái quan trọng, chẳng hạn như tên của người dùng hoặc tên thiết bị, các mối đe dọa, các lỗ hổng bảo mật. Vì vậy bạn có thể nhận dạng, cô lập và loại bỏ các mối đe dọa.
Hình bên dưới minh hoạt năm chức năng chủ chốt của ISE.
Loại API của ISE Embedded Services Router cho phép ISE quản lý các cơ sở dữ liệu. Cisco ISE cung cấp năm chức năng chủ chốt để giúp bảo mật mạng:
- ISE Visibility (khả kiến, tính thấy được): bao gồm các tính năng như lấy hồ sơ lưu lượng của từng thiết bị đầu cuối (profiling và posturing). Một thiết bị đầu cuối có thể là một thiết bị di động hay một máy chủ, hoặc nó có thể là một máy in, một cánh tay robot trong một nhà máy sản xuất, hoặc thậm chí một tay nắm cửa có kết nối IP.
- Quản lý truy cập người dùng Guest: bao gồm các dịch vụ Hotspot, Sponsored Guest và Guest Self-Registration.
- Quản trị thiết bị cung cấp các dịch vụ AAA cho các thiết bị như routers, switch, cân bằng tải, các tường lửa và các thiết bị khác có hỗ trợ TACACS và RADIUS.
- Kiểm soát truy cập cung cấp các truy cập cụ thể đến các tài nguyên mạng, dựa trên các tiêu chí có thể hiệu chỉnh được.
- Bảo mật cho BYOD (Bring Your Own Device) và Enterprise Mobility: bao gồm các khả năng cho người dùng cuối tự đăng ký đến các thiết bị BYOD.
ISE cung cấp các lợi ích sau:
- Xác định mọi thiết bị và mọi ID người dùng trên toàn mạng.
- Cấp phép, phân quyền cho các thiết bị.
- Quản lý chính sách đơn giản, tập trung và có thể cấp quyền truy cập cho người dùng.
- Tích hợp linh hoạt với các giải pháp khác để tăng tốc độ phát hiện, ngăn chặn và khắc phục mối đe dọa.
Thông tin xác thực là điều cần thiết để người dùng hoặc thiết bị truy cập vào bất kỳ tài nguyên mạng nào. Mọi cá nhân đều được nhận dạng bằng cách sử dụng thông tin xác thực của ISE. Thông tin xác thực có dạng mật khẩu, chứng chỉ số, mã thông báo hoặc ít nhất là địa chỉ MAC của thiết bị đầu cuối. Thông tin xác thực được gửi đến ISE trong một quá trình được gọi là xác thực. Doanh nghiệp có thể sử dụng nhiều giao thức xác thực khác nhau, tùy thuộc vào loại mạng và loại thiết bị đầu cuối. Với xác thực, về cơ bản, bạn cho ISE biết bạn là ai. Xác thực thường đi kèm với ủy quyền hoặc phân quyền (authorization). Sau khi bạn xác nhận danh tính của mình với ISE, ISE sẽ xác định cấp độ truy cập của bạn. Thời điểm một điểm cuối truy cập với quyền truy cập mạng, các thiết bị mạng sẽ tạo một ID của phiên truy cập và chia sẻ thông tin đó cho máy chủ ISE. ISE biết tất cả các điểm cuối trong mạng là những thiết bị gì và chúng được kết nối ở đâu.
Ngày nay, các doanh nghiệp đã có một số loại dịch vụ nhận dạng như Microsoft Active Directory hoặc LDAP; Ngoài ra, có thể có các máy chủ ODBC khác lưu trữ một số tài khoản người dùng và thiết bị. Cơ sở hạ tầng PKI có thể đã tồn tại để quản lý chứng chỉ và có thể có một số công cụ quản lý thiết bị di động và công cụ cung cấp danh tính để đăng nhập chỉ một lần duy nhất cho toàn hệ thống (single sign-on). ISE có thể tích hợp liền mạch với tất cả các kho lưu trữ danh tính bên ngoài và cung cấp khả năng kiểm soát truy cập mạng.
Hình bên dưới cho thấy cách ISE tích hợp với các điểm cuối, thiết bị mạng và các dịch vụ bên ngoài.
Khi một hồ sơ được liên kết, các chính sách khác nhau có thể được thực thi. Các chính sách này có thể như sau:
- Dựa trên thời gian: Các chính sách chỉ có thể cho phép các thiết bị cụ thể vào những thời điểm cụ thể.
- Dựa trên vị trí: Mỗi phần tử mạng có một phần thông tin vị trí và các thiết bị được kết nối có các chính sách cụ thể đi kèm.
- Dựa trên sự tuân thủ: Các chính sách có thể đảm bảo rằng các thiết bị đầu cuối có tất cả các bản vá phần mềm trước khi chúng được cấp quyền truy cập đầy đủ.
1. ISE REST APIs
Cisco ISE hỗ trợ External RESTful Services (ISE ERS) API. ERS được thiết kế để cho phép các client thực hiện các tác vụ CRUD (Create, Read, Update, Delete) trên các tài nguyên của ISE. ERS sử dụng giao thức HTTP và phương pháp REST. Phần bên dưới sẽ trình bày cách thức làm thế nào để bật ERS và bắt đầu viết các ứng dụng.
Đầu tiên bạn cần bật ERS để bắt đầu lắng nghe các cuộc gọi API trên cổng SSL 9060. Yêu cầu đầu tiên là bật ERS trước. Hãy đến Administration -> Settings -> ERS Settings. Kiểm tra chức năng 'Enable ERS for Read/Write'.
Hình bên dưới mô tả việc sử dụng REST API để truy cập một tài nguyên của Cisco ISE.
ISE có hai loại API:
- API phiên (Session API): API này cho phép các nhà phát triển thu thập thông tin về phiên và từng node cụ thể bằng cách sử dụng Cisco ISE để giám sát các node.
- API Dịch vụ RESTful bổ sung (ERS - External RESTful Services): API này cho phép các nhà phát triển thực hiện các hoạt động trên các loại tài nguyên ISE sau:
- [*=2]Đầu cuối - Endpoints [*=2]Nhóm nhận dạng đầu cuối - Endpoint identity groups [*=2]Người dùng khách và người dùng nội bộ - Guest users and internal users [*=2]Nhóm nhận dạng - Identity groups [*=2]Cổng thông tin - Portals [*=2]Chính sách lọc - Profiler policies [*=2]Thiết bị mạng - Network devices [*=2]Nhóm thiết bị mạng - Network device groups [*=2]Nhóm bảo mật - Security groups
Quản trị viên ISE phải chỉ định các quyền đặc biệt cho người dùng để thực hiện các hoạt động bằng API ERS. Quản trị viên ISE có thể chỉ định hai vai trò sau để cung cấp dịch vụ bằng API ERS:
Quản trị viên Dịch vụ RESTful có quyền thay đổi: Có toàn quyền truy cập vào tất cả các phương thức ERS (GET, POST, DELETE, PUT).
Nhà điều hành dịch vụ RESTful, quyền truy cập chỉ đọc (chỉ các yêu cầu GET).
Hình ISE ERS: Bật quyền truy cập API
Nhiều bộ lọc có thể được dùng và đánh giá dùng một toán hạng và kết hợp vào URL dùng ký tự dấu chấm.
- EQ: Equals
- NEQ: Not Equals
- GT: Greater Than
- LT: Less Then
- STARTW: Starts With
- NSTARTSW: Not Starts With
- ENDSW: Ends With
- NENDSW: Not Ends With
- CONTAINS: Contains
- NCONTAINS: Not Contains
GET /ers/config/internaluser?filter=name.STARTW.a&filter=identityG roup.EQ.Finance
2. Xác thực API ERS
API ISE ERS sử dụng xác thực cơ bản HTTP, yêu cầu thông tin xác thực được gửi trong header Authorization. Thông tin xác thực là tên người dùng và mật khẩu, được phân tách bằng dấu hai chấm (:), trong một chuỗi được mã hóa Base64.
Ví dụ: Authorization header sẽ chứa chuỗi sau:
"Basic ZGV2YXNjOnN0cm9uZ3Bhc3N3b3Jk"
Trong trường hợp này, ZGV2YXNjOnN0cm9uZ3Bhc3N3b3Jk là chuỗi được mã hóa Base64 devasc: strongpassword (trong đó devasc là tên người dùng và strongpassword là mật khẩu). Ví dụ cho thấy ba dòng mã thực hiện mã hóa Base64 để gán giá trị vào Authorization header.
>>>import base64
>>>encoded =base64.b64encode('devasc:strongpassword'.encode(' UTF-8')).decode('ASCII')
>>>print(encoded)
Tất cả các lệnh gọi API ERS được thực hiện tới URL https://<IP-of ISE>: 9060/. Bây giờ, hãy xem xét một số ví dụ về API điểm cuối ISE ERS.
3. Tạo nhóm đầu cuối
API gửi dữ liệu để tạo một nhóm điểm cuối mới. Nó sử dụng phương thức POST và yêu cầu các header xác thực cơ bản. Phần sau cho ta thấy gói tin cần thiết để tạo Nhóm điểm cuối được gọi là ‘DevNet Associate Group':
Data - {
"EndPointGroup" : {
"name" : "DevNet Associate Group",
"description" : "DevNet Associate Group"
}
}
Đoạn mã POST Python để tạo một nhóm điểm cuối mới.
""" create a new endpointgroup """
>>>import json
>>>import requests
>>>url ="https://ise.devnetsandbox.com/ers/config/endpointgroup"
>>>payload = {
"EndPointGroup": {
"name": "DevNet Associate Group",
"description": "DevNet Associate Group"
}
}
>>>headers = {
'content-type': "application/json",
'accept': "application/json",
'authorization': "Basic ZGV2YXNjOnN0cm9uZ3Bhc3N3b3JkJw==",
'cache-control': "no-cache",
}
>>>response = requests.request("POST", url, data=json.dumps(payload), headers=headers)
>>>print(response.text)
Header phản hồi chứa ID nhóm mới được tạo:
Location:
https://ise.devnetsandbox.com:9060/ers/config/endpointgroup/00000000-1111-2222-3333-444444444444
4. Tạo một điểm cuối và thêm nó vào một nhóm
API https://ise.devnetsandbox.com:9060/ers/config/endpoint gửi dữ liệu để tạo một điểm cuối mới. Nó sử dụng phương thức POST. Phần sau cho ta thấy gói tin cần thiết để tạo Điểm cuối được gọi là DevNet Endpoint' với một GroupId được chỉ định.
Method: POST
URL:
Data - {
"ERSEndPoint" : {
"name":"DevNet_Endpoint",
"description":"DevNet Endpoint-1",
"mac":"FF:EE:DD:03:04:05",
"groupId":" 00000000-1111-2222-3333-444444444444",
"staticGroupAssignment":true
}
}
API này sử dụng ID nhóm từ header và yêu cầu các header xác thực cơ bản. Ví dụ cho thấy một tập lệnh yêu cầu Python.
""" create a new endpoint """
>>>import json
>>>import requests
>>>url ="https://ise.devnetsandbox.com/ers/config/endpoint"
>>>payload = {
"ERSEndPoint": {
"name": "DevNet_Endpoint",
"description": "DevNet Endpoint-1",
"mac": "FF:EE:DD:03:04:05",
"groupId": " 00000000-1111-2222-3333-444444444444",
"staticGroupAssignment": True
}
}
>>>headers = {
'content-type': "application/json",
'accept': "application/json",
'authorization': "Basic ZGV2YXNjOnN0cm9uZ3Bhc3N3b3JkJw==",
'cache-control': "no-cache",
}
>>>response = requests.request("POST", url, data=json.dumps(payload), headers=headers)
>>>print(response.text)
Header phản hồi chứa ID mới được tạo:
Location:
https://ise.devnetsandbox.com:9060/ers/config/endpoint/deadbeef-1111-2222-3333-444444444444
5. API ISE khác
Để có danh sách đầy đủ tất cả các API ISE của Cisco, hãy xem tại https://developer.cisco.com/docs/identity-services-engine/.