Cisco Japan Blog
Share

onePK を使ってアプリケーションを作る – ACL制御編


2014年4月14日


前回のブログ投稿時では onePK を使って IP 経路を制御するアプリケーションを作成してみた、という話を書きました。この時点ではまだだったのですが、4 月の初め、ついにシスコから onePK が正式にリリースされました。Cisco.com ID を持っていれば(Cisco.com にログインすれば)、以下のサイトから SDK のダウンロードや API のドキュメント、さらには開発環境の All-in-one VM がダウンロードできます。

https://developer.cisco.com/web/onepk-developer

今回は、アクセス コントロール(ACL)を onePK を使って制御する方法について書きたいと思います。

onePK を使ったアクセス コントロール

ACL を制御できる API は、onePK のポリシー サービス セットの中に含まれています。この API を利用することで、アプリケーションからルータやスイッチの ACL を制御することができます。

一般的に ACL は、config のなかに permit や deny コマンドを記述していきます。このとき、設定の順番が重要になるため、行数が増えてくると手動で管理するのは面倒なことになり、それを柔軟に運用するというのは不可能に近いと言えます。onePK API を利用して ACL の制御プログラムを開発すれば、ACL の制御や管理をアプリケーションから動的に行えるようになります。ACL をバリバリ利用しているユーザにとっては、非常に便利なツールが開発できることになるでしょう。

Transient モードと Persistent モード

onePK の ACL の制御モードには「Transient(一時的)」と「Persistent(恒久的)」の 2つがあります。

  • Transient モードでは、config の内容を変更することなく、onePK のプログラムから ACL ポリシーを追加投入できます。onePK から投入された ACL ポリシーは、Config で設定されている ACL よりも優先して評価されますので、例えば config では、Deny any any で設定してあるインターフェイスでも、onePK のプログラムによって必要なトラフィックを通すための permit ポリシーを投入することができます。もちろん反対に、Permit any anyをconfig に設定しておいて、フィルタしたいトラフィックだけを onePK のプログラムから Deny ポリシーを投入するといったことも可能になります。
  • Persistent モードでは、Config の ACL 設定が onePK プログラムによって上書きされます。したがって、このモードの場合、show config で実際に適応されている ACL を確認することができます。
developing-applications-with-onepk-acl-control-fig1

Transient モードと Persistent モードの違い

Transient モードと Persistent モードには、それぞれ長所と短所があります。Transient モードでは、Config に記載されている ACL と onePK で指示した Dynamic Access-List が併用できるので、非常に柔軟なアクセス コントロールがリアルタイムで実現できます。ベースとなる ACL が変更されないので、Config 管理上は気にしなくていいのが特長です。ただし、これは短所にもなります。ネットワーク機器をリブートすると、onePK から投入した ACL の設定は消えてしまうからです。

運用中に一時的に ACL の変更や追加が必要な場合は Transient モードで、同じ設定がずっと必要であれば Persistent モードで Config に適応、といった使い分けが必要になります。なお、これらのモードを選択についても API が用意されいるので、onePK アプリケーションから切り替えるようにすることができます。

onePK のセキュリティ機能への応用

今まで固定的で運用負担が大きかった ACL を、このようにアプリケーションから動的に変更することができるようになれば、今まで運用上の困難が伴っていたセキュリティ対策や動的なサービスに活用することもできるようになります。

例えばお客様環境に導入されているセキュリティ製品が吐き出すログ情報を自動的に収集して、リアルタイムでフィルタしたいトラフィックを判断し、それを onePK アプリケーションからシスコのルータやスイッチでフィルタ制御するということが可能になります。ここに Transition モードを利用すれば、動的な設定が可能になります。

実は、Transient モードの実装は、従来から Cisco IOS で実装されている Dynamic Access-List の仕組みを利用しています。Dynamic Access-List とは、シスコの IDS で検知した不正トラフィックだけをルータやスイッチなどで動的にフィルタしたり、Web 認証や IEEE802.1x などのユーザ認証時の動的アクセス制御するために利用されているものです。onePK の API を利用すれば、この Dynamic Access-List の仕組みを自由にプログラムできるというわけです。

onePK から投入された ACL 情報は、従来の Dynamic Access-list の確認コマンドの show ip acess-list dynamic というコマンドや、show ip interface コマンドで、interface に適応されている Access-listの情報が確認できます。このあたりも IOS のオペレーションになれている方であれば、違和感は少ないかなと思います。

 実際の出力画面は次のようになります。これは、Config には Ethernet0/0.1 インターフェイスに「default-acl」という ACL が設定されている状態で、onePK を利用して別の ACL を適応したときの CLI での確認イメージです。

Transient モードで ACL を適用した時の CLI での確認方法

Transient モードで ACL を適用した時の CLI での確認方法

onep-acl-1 という Dynamic ACL が生成されており、それが Ethernet0/1.1 インターフェイスに適応されていることが確認できます。

このようにアプリケーションから簡単に ACL 制御ができるようになると、ACL に多くのエントリーを追加したくなる方もいらっしゃるかと思います。しかし、設定できる ACL の数には上限があります。その数は従来と同様に各プラットフォームに依存していていますので、その点に留意したうえでご利用ください。

Tags:
コメントを書く