Skip to content

Cisco ASAv に REST API でアクセスするには

前回 は Cisco CSR 1000V へ REST API でアクセスしてみました。今回は ASAv へ REST API でアクセスしてみます。必要最低限しか設定していませんので、商用環境で利用する際はセキュリティへの配慮が必要です。

検証環境

VIRL 上で以下の構成を作成しました。

file

  • Cisco ASAv 9.3(2)200
  • Micro Core Linux 6.3

ASAv への REST API Agent インストール

ASAv で REST API を受け付けられるようにするには ASA の OS とは別に追加で Agent が必要です。しかし、VIRL 0.9.242 に同梱されている ASAv(9.3(2)200)には Agent がインストールされていませんでした。Cisco の公式サイトからダウンロードしておいた Agent を FTP サーバなり、HTTP サーバなりにアップロードし、ASAv にコピーしておきます。

1
ciscoasa# copy http://XX.XX.XX.XX/asa-restapi-101-lfbff-k8.SPA disk0:
ASAv への設定例は以下の通りです。rest-api で Agent のイメージファイルを指定しつつ、Agent を有効化します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
interface GigabitEthernet0/0
 nameif outside
 security-level 0
 ip address [外部にアクセス出来るアドレス設定]
 no shutdown
!
interface GigabitEthernet0/1
 nameif inside
 security-level 100
 ip address 192.168.1.1 255.255.255.0
 no shutdown
!
route outside 0.0.0.0 0.0.0.0 [外部にアクセス出来る NEXT-HOP アドレス]
!
aaa authentication http console LOCAL
http server enable
http 0.0.0.0 0.0.0.0 inside
!
username USER password PASSWORD privilege 15
!
rest-api image disk0:asa-restapi-101-lfbff-k8.SPA
rest-api agent

通信確認

Micro Core Linux から curl を使って REST API にアクセスしてみます。以下では ASAv のバージョン情報を取得しています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
tc@box:~$ curl -k -X GET https://192.168.1.1:443/api/monitoring/device/component
s/version -H "Accept:application/json" -u "USER:PASSWORD" | python -mjson.tool
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   185  100   185    0     0    112      0  0:00:01  0:00:01 --:--:--   113
{
    "asaVersion": "9.3(2)200",
    "deviceType": "ASAv",
    "firewallMode": "Router",
    "kind": "object#Version",
    "selfLink": "/api/monitoring/device/version",
    "totalFlashinMB": 129024,
    "upTimeinSeconds": 4098
}

参考