Downloadable ACLs (dACLs)
Synopsis
netapi ise get-dacls [OPTIONS]
netapi ise get-dacl <NAME>
netapi ise create-dacl <NAME> [OPTIONS]
netapi ise delete-dacl <NAME> [OPTIONS]
netapi ise create-dacls-from-file <FILE>
Description
Manage ISE Downloadable ACLs (dACLs). These are pushed to network devices during authorization.
|
On switches, dACLs appear as |
Output Formats
All commands support multiple output formats via --format:
| Format | Flag | Use Case |
|---|---|---|
Table (default) |
|
Human-readable terminal output |
JSON |
|
Piping to |
YAML |
|
Piping to |
XML |
|
Piping to |
Commands
get-dacls
List all downloadable ACLs.
# Table format (default)
netapi ise get-dacls
# JSON format (pipe to jq)
netapi ise --format json get-dacls | jq '.[].name'
# YAML format
netapi ise --format yaml get-dacls
# Pagination
netapi ise get-dacls --size 50 --page 2
| Option | Description |
|---|---|
|
Results per page (default: 100, max: 100) |
|
Page number (1-indexed, default: 1) |
Downloadable ACLs (Page 1, Size 100)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Name ┃ ID ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ DACL_ADMIN_FULL │ e8050060-f5ab-11f0-b76e-52c54a1d1f56 │
│ DACL_IOT_RESTRICTED │ 8a2c1b3f-0000-11f1-0000-000000000000 │
│ DACL_GUEST_INTERNET │ 9b3d2c4e-0000-11f1-0000-000000000001 │
│ Domus_dACL_Research │ f5c12340-f5ab-11f0-b76e-52c54a1d1f57 │
│ Domus_dACL_Quarantine │ f6d23451-f5ab-11f0-b76e-52c54a1d1f58 │
└───────────────────────────┴──────────────────────────────────────┘
Total: 5 results
[
{
"id": "e8050060-f5ab-11f0-b76e-52c54a1d1f56",
"name": "DACL_ADMIN_FULL",
"description": "Full admin access including management",
"link": {
"rel": "self",
"href": "https://10.50.1.20/ers/config/downloadableacl/e8050060-f5ab-11f0-b76e-52c54a1d1f56",
"type": "application/json"
}
}
]
# List all dACL names
netapi ise --format json get-dacls | jq -r '.[].name'
# Count dACLs
netapi ise --format json get-dacls | jq 'length'
# Find dACLs containing "Admin"
netapi ise --format json get-dacls | jq '.[] | select(.name | contains("Admin"))'
get-dacl
Get specific dACL rules.
# Table format (default)
netapi ise get-dacl "DACL_ADMIN_FULL"
# JSON format
netapi ise --format json get-dacl "DACL_ADMIN_FULL"
# YAML format
netapi ise --format yaml get-dacl "DACL_ADMIN_FULL"
# XML format
netapi ise --format xml get-dacl "DACL_ADMIN_FULL"
Name: DACL_ADMIN_FULL
ID: e8050060-f5ab-11f0-b76e-52c54a1d1f56
Type: IPV4
Description: Full admin access including management
ACL Content:
--------------------------------------------------
remark Full admin access including management
permit ip any any
{
"id": "e8050060-f5ab-11f0-b76e-52c54a1d1f56",
"name": "DACL_ADMIN_FULL",
"description": "Full admin access including management",
"dacl": "remark Full admin access including management\npermit ip any any",
"daclType": "IPV4",
"link": {
"rel": "self",
"href": "https://10.50.1.20/ers/config/downloadableacl/e8050060-f5ab-11f0-b76e-52c54a1d1f56",
"type": "application/json"
}
}
id: e8050060-f5ab-11f0-b76e-52c54a1d1f56
name: DACL_ADMIN_FULL
description: Full admin access including management
dacl: 'remark Full admin access including management
permit ip any any'
daclType: IPV4
link:
rel: self
href: https://10.50.1.20/ers/config/downloadableacl/e8050060-f5ab-11f0-b76e-52c54a1d1f56
type: application/json
# Get ACL content only
netapi ise --format json get-dacl "DACL_ADMIN_FULL" | jq -r '.dacl'
# Output:
# remark Full admin access including management
# permit ip any any
# Get IP type
netapi ise --format json get-dacl "DACL_ADMIN_FULL" | jq -r '.daclType'
# Output: IPV4
# Get description
netapi ise --format json get-dacl "DACL_ADMIN_FULL" | jq -r '.description'
# Output: Full admin access including management
create-dacl
Create a new downloadable ACL.
# Simple inline ACL
netapi ise create-dacl "DACL_PERMIT_ALL" --acl "permit ip any any"
# Multi-line ACL (semicolon-separated)
netapi ise create-dacl "DACL_IOT" \
--acl "permit udp any any eq 53; deny ip any 10.0.0.0 0.255.255.255; permit ip any any"
# From file
netapi ise create-dacl "DACL_SECURE" --file /path/to/dacl.txt
# With description
netapi ise create-dacl "DACL_GUEST" \
--acl "deny ip any 10.0.0.0 0.255.255.255; permit ip any any" \
--descr "Guest internet only"
# IPv6 DACL
netapi ise create-dacl "DACL_IPV6_PERMIT" --acl "permit ipv6 any any" --type IPV6
| Option | Description |
|---|---|
|
ACL content (single line or semicolon-separated) |
|
File containing ACL content (one rule per line) |
|
Description |
|
IP type: |
delete-dacl
Delete a downloadable ACL.
# With confirmation prompt
netapi ise delete-dacl "DACL_TEST"
# Skip confirmation
netapi ise delete-dacl "DACL_TEST" --force
| Option | Description |
|---|---|
|
Skip confirmation prompt |
create-dacls-from-file
Create multiple DACLs from a YAML file.
netapi ise create-dacls-from-file dacls.yaml
netapi ise create-dacls-from-file dacls.yaml --skip-existing
dacls:
DACL_ADMIN_FULL:
description: "Full admin access"
acl: |
permit ip any any
DACL_IOT_RESTRICTED:
description: "IoT devices - internet only"
acl: |
permit udp any any eq 53
deny ip any 10.0.0.0 0.255.255.255
permit ip any any
DACL_GUEST_INTERNET:
description: "Guest - no internal access"
acl: |
deny ip any 10.0.0.0 0.255.255.255
deny ip any 172.16.0.0 0.15.255.255
deny ip any 192.168.0.0 0.0.255.255
permit ip any any
Common Pipelines
Export Full dACL Content
netapi ise --format json get-dacls | jq -r '.[].name' | while read name; do
echo "=== $name ==="
netapi ise --format json get-dacl "$name" | jq -r '.dacl'
echo ""
done > dacls_full_export.txt
dACL Mapping Reference
When viewing ACLs on switch vs ISE:
| Switch Shows | ISE dACL Name |
|---|---|
|
|
|
|
|
|
Common dACL Patterns
IoT Restricted (Allow specific subnets only)
permit ip any 10.238.0.0 0.0.255.255
permit udp any any eq 53
permit udp any any eq 123
deny ip any any
Guest Internet Only
deny ip any 10.0.0.0 0.255.255.255
deny ip any 172.16.0.0 0.15.255.255
deny ip any 192.168.0.0 0.0.255.255
permit ip any any
Research Segmentation
remark Allow DNS and DHCP
permit udp any any eq 53
permit udp any any eq 67
permit udp any any eq 68
remark Allow NTP
permit udp any any eq 123
remark Allow research subnet
permit ip any 10.50.100.0 0.0.0.255
remark Deny internal, allow internet
deny ip any 10.0.0.0 0.255.255.255
permit ip any any
Environment Variables
| Variable | Description |
|---|---|
|
ISE Primary Admin Node IP address |
|
Base64 encoded |
export ISE_PAN_IP="10.50.1.20"
export ISE_API_TOKEN=$(echo -n "admin:password" | base64)
See Also
-
Authorization Profiles - Profiles that reference dACLs
-
Network Devices - NADs that receive dACLs
-
Policy Sets - Policies that apply dACLs