キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

CDS-IS: Service Rule File を使用した Service Rule の基本設定

Service Rule とは

Service Rule とは、リクエストの内容に応じて Action を適用する機能です。Action としては、以下の機能を適用できます。

  • 許可(リクエストを permit します)
  • 拒否(リクエストを deny します)
  • 検証(リクエストの有効性を確認します)
  • リダイレクト(リダイレクトします)
  • 書き換え(リクエスト内のURLやヘッダの内容を書き換えます)
  • キャッシュ無効(レスポンスをキャッシュしないようにします)

Service Rule を設定する方法としては、Service Rule File  を使用する方法と、デバイスごとに1行ずつ設定する方法の2通りがありますこのうち Service Rule File を使用する方法は、バージョン  2.5.7 以降でサポートされています。2.5.7 以降、2.6.1 以前のバージョンでは WebEngine でのみ Service Rule  File がサポートされており、2.6.1 以降では Flash Media Streaming でも Service Rule Fule  を使用した Service Rule の設定ができるようになっています。

なお、Service Rule を使用するためには、別途ライセンスの購入が必要となりますのでご注意ください。

Authorization Service の有効化

Service Rule を使用するにあたっては、 Authorization Service を有効にしておく必要があります。デフォルトで有効となっていますが、もし明示的に無効にしてある場合には、以下のように有効にしておきます。

 (config)# authsrv enable

Service Rule File の例

Service Rule File の例を以下に示します。

<CDSRules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema\CDSRules.xsd">

     <Revision>1.0</Revision>

     <CustomerName>cisco</CustomerName>

     <Rule_Patterns>

         <PatternListGrp id = "grp1">

                 <UrlRegex>rule[Tt]est</UrlRegex>

                 <Domain>web.cdn.japan-tac.local</Domain>

         </PatternListGrp>

     </Rule_Patterns>

     <Rule_Actions>

         <Rule_Block matchGroup = "grp1" protocol = "http"  />

     </Rule_Actions>

</CDSRules>

この XML file では、以下ような動作を定義しています。

  1. URL に "rule[Tt]est" という正規表現が match するか (グループID は grp1)
  2. match する場合は、grp1 に該当する rule である Rule Block が動作し、deny される

    Service Rule File の Vaildation 方法

    バージョン 2.5 では、configuration guide 内に XML Schema file が記載されています。

    この Schema File と適当な XML Validation ツールを使用して、妥当性検証を行うことができます。

    以下に Perl の XML::Validator::Schema を使用したサンプルスクリプトを示します。

    schema file は "rule.xsd"、Service Rule File は、"text.xml" として保存しておきます。

    #!/usr/bin/perl

    use XML::SAX::ParserFactory;
    use XML::Validator::Schema;

    my $validator = XML::Validator::Schema->new(file => 'rule.xsd');
    my $parser = XML::SAX::ParserFactory->parser(Handler => $validator);

    eval { $parser->parse_uri('test.xml') };

    if ($@){
        die "File failed validation: $@" ;
    }else {
        print "Correct XML file\n";
    }

    Service Rule File のアップロード

    CDSM 上の以下の画面からアップロードすることができます。

    ServiceRuleFileアップロード.png

    動作確認

    URL に ruleTest 又は ruletest を含めると、Rule Block により、403 Forbidden が返されます。

    $ curl -v "http://se0.se.web.cdn.japan-tac.local/videos.html?ruletest"
    * About to connect() to se0.se.web.cdn.japan-tac.local port 80
    *   Trying 192.168.20.7... connected
    * Connected to se0.se.web.cdn.japan-tac.local (192.168.20.7) port 80
    > GET /videos.html?ruletest HTTP/1.1
    > User-Agent: curl/7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3
    libidn/0.6.5
    > Host: se0.se.web.cdn.japan-tac.local
    > Accept: */*

    >< HTTP/1.1 403 Forbidden
    < Connection: Keep-Alive
    < Keep-Alive: timeout=15
    < Accept-Ranges: bytes
    < Content-Length: 25
    < Date: Sat, 10 Dec 2011 17:10:37 GMT
    < Server:  Cisco-CDS
    Auth Server Query Denied
    * Connection #0 to host se0.se.web.cdn.japan-tac.local left intact
    * Closing connection #0

    このとき、transaction-log を enable にしておくと、以下のログにdeny メッセージが出力されます。

    se0# type-tail logs/authsvr/working.log

    192.168.20.201 2011-12-10 17:10:37 http://se0.se.web.cdn.japan-tac.local/videos.html?ruletest http deny [Pattern match error] Rules

    リクエストが rule にマッチするかどうかの処理はAuthSvr が行っているため、AuthSvr の統計情報を見ることで、

    Rule  が動作しているか確認することができます。 (deny した場合、Blocked カウンタが増加します)

    se0# show statistics authsvr

    Authserver Statistics

    ---------------------
    Allowed                :                     154
    Blocked                :                      48
    Unknown Server Allowed :                       0
    Unknown Server Blocked :                       0
    Errors                 :                       0
    バージョン履歴
    改訂番号
    1/1
    最終更新:
    ‎01-25-2012 05:04 AM
    更新者: