

アプリケーションにおけるユーザ権限によるアクセス制御のテスト  早川 さやか
指導教員

はじめにアクセス制御機能を持つアプリケーションの増加に伴い，アクセス制御に関わるセキュリティの問題が顕在化してきた．
アプリケーションの各ページは全 を指定することによってあて独立しているので，らゆるページに遷移することが可能となる．そのため，アプリケーションにおけるアクセス制御のテスト
では，すべてのページに対する網羅的なテストが必要となり，テストに多くのコストがかかってしまう．
本研究の目的は，アクセス制御に関するテストのコストを削減することである．これを実現するために，アクセス制御のテストのためのテスト基準を提案する．また，この基準に従ってテストケースを生成することにより，テストケースの数を削減することができることを示す．
本研究は，以下のように進める．
アプリケーションの例として卒業論文題目登録システムの設計
 アクセス制御に関するテストについての考察 アクセス制御のテスト基準の提案
なお，早川さやかは主にアプリケーションのテスト手法を，蒔田沙織は主にテストシーケンス生成を担当した．

 関連研究ページ生成プログラムに対する従来のテスト手法には，アプリケーションのページ間の遷移にもとづく，ページ網羅，遷移網羅，パス網羅のためのテスト自動化
アプリケーションの各手法がある ．この手法はページに対して仕様を記述し，その仕様中のリンクおよびフォームによる，ページ間遷移をもとにテストシーケテストをもちいて自動実行ンスを生成し，する．ページの仕様からテスト自動実行がおこなえる点
で他の手法に比べて容易にテストがおこなえるが，ページ間の直接的な遷移しか考慮していないのでアクセス制
御のテストが十分におこなえない．

  アプリケーションにおけるアクセス制
御のテスト基準
本章では，テスト対象のアプリケーションの前提およびアクセス制御のテストに関する基準について述べる．
  アプリケーションに関する前提
アプリケーションは以下本研究で対象としているの条件を満たしているものとする．

 蒔田 沙織

蜂巣 吉成
  モデルに従って設計されている
 遷移要素は動的に生成されない
 権限情報はセッションで管理されている  度に つ以上の権限を持たない
アプリケーションはこ
近年開発されている多くのれらの条件を満たしており，テスト支援の対象として一般的なものである．
 アクセス制御のテスト
アプリケーションは各ページでアクションを実行することにより，次のページへ遷移する．権限はそのアクションが実行されたときにセッション変数として保持される．アクセス制御はそのセッション変数に保持された権限の情報をもとに，各ページまたはアクションで行なわれる．
アプリケーションのアクセス制御が正しくおこなわれているかテストするには，権限操作アクションが正しく動作しているか，閲覧不可能なページが閲覧不可能であるかを確認すべきである．
これらのテストをおこなうためには，遷移関係だけではなく，閲覧不可能なページへの遷移も考えてテストシーケンスを生成する必要がある．

アクセス制御に関するテスト基準
我々は，アクセス制御のテストを網羅的におこなうための，テストシーケンスを生成する基準を定めた．テスト
すべき遷移を通る経路を求めるための基準と，その経路によって到達したページからアクセス制御の確認をするためのページとアクションを求めるための基準に従ってテストシーケンスを生成する．
＜経路に関する基準＞

アプリケーションのいずれかの初期ページからの最短経路 権限操作アクション網羅
アプリケーションの全ての初期ページから到
達する全ての経路 権限操作アクションに対するパス網羅

権限情報を操作するアクションの動作がそれまでの経路に依存しない場合，そのアクションに行き着くまでの経路によって付加される権限情報に変化がない．この場合，権限を操作するアクションを網羅することによって十分なアクセス制御のテストが可能である．したがって，権限操作アクションまでの経路は初期ページからの最短経路で十分である．
権限情報を操作するアクションの動作がそれまでの経路に依存する場合，そのアクションに行き着くまでの経路によって付加される権限情報が異なる可能性がある．そこで，権限操作アクションに対するパス網羅による全ての経路に関するテストが必要である．
＜テスト対象に関する基準＞

 他のグループのページ，他のグループへ遷移するアクション  つずつ グループ網羅 他のグループのページ，他のグループへ遷移するアクション全て ページ・アクション網羅
それぞれのグループのアクセス制御がグループ内のページやアクションに対してアクセス制御が同じ方法でおこなわれている場合，テスト対象となるグループ内の全てのページとアクションでアクセス制御が正しくおこなわれていることは容易に確認できる．他のグループの任意のページとアクションが閲覧できないことを確かめることによってそのグループのアクセス制御を確認することができる．
逆にグループ内のページやアクションに対してアクセス制御の方法が異なる場合，ページ・アクション網羅にしたがって全てのページとアクションをテストしなければそれぞれのアクセス制御が正しくおこなわれていることを確認できない．

 テストシーケンス生成
テストシーケンスを生成する手順は，以下の流れで行う．
ページ遷移モデルとグループ仕様からテストシーケンス生成

アプリケーションの初期ページから，権限操作アクションによって権限情報が変更されて遷移したページ アクセス制御テストページ
までの経路を求める．
 アクセス制御テストページから，そのグループが閲覧不可能なページへの遷移を  の経路に加える．

ページ遷移モデル
ページ遷移モデルとは，テストシーケンス生成のためにページ間の遷移関係を明確にし，アクションとそれによって変化する権限情報を遷移のラベルとして表現したモデルである．
ページ遷移モデルの例を図  に示す．この例では，ページ  からページ  に遷移する際，アクション が実行され，  の権限が付加されることを示している．
login

A1/group1

AB

ページ遷移関係

図 ½ ページ遷移モデルの例

グループ仕様
グループ仕様とは，アクセス制御されているグループの種類とそのグループに属するページ名とアクション名が記されたものである．アクセス制御されるグループごとに分けることで，グループごとに遷移可能なページやアクション，遷移不可能なページやアクションがわかり，アクセス制御のテストが可能になる．
テストシーケンス生成アルゴリズム
テストシーケンスは，ページ遷移モデルとグループ仕様で生成することができる．また，権限操作アクションによって，権限の情報が変更された後のページから他のグループへの遷移をテストする必要があり，そのページに到達するための経路を求める必要がある．そのための手順を以下に示す．
  アクセス制御テストページまでの到達経路＜権限操作アクション網羅の場合＞

アプリケーションの初期ページのうち一つをテストシーケンスのスタートページとして定める．
 スタートページから権限アクションを実行して次のページに遷移するまでの最短経路を求める．
 求められた最短経路が，到達経路になる．
＜権限操作アクションに対するパス網羅の場合＞

アプリケーションの全ての初期ページをテストシーケンスのスタートページとする．
 スタートページから，権限アクションを実行して次のページまでのすべての到達経路を求める．
 求められた全ての経路が，到達経路になる．

  アクセス制御の確認方法
 アクセス制御テストページまでの到達経路の基準によって，アクセス制御テストページまでの到達経路を決める．
グループ網羅の場合
アクセス制御テストページから，そのページを閲覧できるグループが閲覧不可能な他のグループのどれか  つのページとアクションへの遷移をテストする．テスト対象となる各グループの  つのページとアクションは，そのグループの先頭のページとアクションとする．
ページ・アクション網羅の場合
アクセス制御テストページから，そのページを閲覧できるグループが閲覧不可能な他のグループの全てのページとアクションへの遷移をテストする．
 求められた到達経路とテスト対象のページとアクションからテストシーケンスを生成する．

 

アクセス制御テストページのアクションによるテストの種類
 節で述べた生成アルゴリズムによって生成されるテストシーケンスを形式化する．テストシーケンスは以下の  種類を考察する必要がある．
権限が付加されたときに，他のグループのページとアクションは閲覧不可能であるか権限が破棄されたときに，アクセス制御されている全てのページとアクションが閲覧不可能であるか権限が変更されたときに，変更後のページから他のグループのページとアクションは閲覧不可能であるか  テストシーケンス
以上のことにより生成されるテストシーケンスは以下のようになる．また，それぞれの基準によって，テストシーケンスは異なる．
!：ページの集合
：アクションの集合   "：グループの集合#：スタートページの集合    
：遷移要素の集合      ：グループ  が閲覧不可能なページの集合  ，    ，      ：グループ  に遷移しないアクションの集合  ，  ，      ：グループ  の権限付加する遷移，グループ の権限破棄する遷移，グループ  の権限変更する
遷移の集合から  に到達する最短経路  ，： 

：からに到達する経路  ，    から  によって：   に遷移  ， ，＜権限操作アクション網羅とグループ網羅＞  ，    に対して次の式で表現される経路がテストシーケンスとなる．

  





→→



＜権限操作アクション網羅とページ・アクション網羅＞  ，    ，     ，    に対して次の式で表現される経路がテストシーケンスとなる．









  



→

→



権限操作アクションに対するパス網羅では，初期ページからアクセス制御テストページまでの任意の経路を求める必要があるが，遷移がループしている場合，その経路は無限となってしまう．そこでループに関しては，以下のルールに従って経路を求める．
 エラーによる元のページへの遷移を辿らない．
  遷移先が一つしかないページへの戻る遷移を辿らない．
$ ログアウトなどにより，セッションを破棄する遷移を辿らない．

 適用例
 卒業論文題目登録システム
提案したテスト方法を実際におこなうために，アプリケーション開発の一例として，卒業論文題目登録システムの設計をおこなった．
本システムにおける権限の種類とそれぞれの権限で閲覧可能なページおよび利用可能なアクションを表 ½ に示す．また，ページ遷移モデルを図 ¾ に示す．
 テストシーケンスの適用例
 章で述べたテストシーケンス生成方法に従ってテストシーケンスを生成した．以下に，  のそれぞれの基準の場合のテストシーケンスの数を示す．
＜権限操作アクション網羅とグループ網羅＞









→













→
＝ % 通り→

 ＋ 





→→





＜パス網羅とページ・アクション網羅＞








→

 ＋ →＝ && 通りloginA0/group3
P15P17P16A0/group2

A0/group1

A20/group3→×A19/group2→group3

A14/group2→group3

P2

P1

P13

P12A20/group1→×loginへ

P8P3P9P4


P10

→

→



A13/group2→group1

P14loginへ

P5＜パス網羅とページ・アクション網羅＞  ，   ，    ，     ，   
に対して次の式で表現される経路がテストシーケンスとなる．
 ＋ 

→＝ % 通り＜パス網羅とグループ網羅＞A20/group1→×→＝  通り＜権限操作アクション網羅とページ・アクション網羅＞
P0＜パス網羅とグループ網羅＞  ，   ，    に対して次の式で表現される経路がテストシーケンスとなる．

 ＋ →A20/group1→×P11

P6A10/group1→group2

P7

A20/group1→×loginへ

図 ¾ ページ遷移モデル

A15/group2→group3





表½

グループ仕様

権限の種類

ページ名

アクション名 
 ' ' ' ' ' ' ' ' '
  '  '  

  '  '  ' ' ' ' ' ' ' '
 '  '  '  '  '
  '  ' 考察


基準の確認
アクセス制御のテストは，経路に関する基準およびテス
ト対象ページに関する基準によって削減することができた．最も少ないテストシーケンスでアクセス制御が正しくおこなわれていることを確認するためには以下のことを確認する必要がある．
経路に依存するかどうかは一般には確認できないが，単体テストによって経路に依存していないことが確認されているアプリケーションにはテスト基準として使用できる．
グループのアクセス制御がグループ内のページやアクションに対して同様におこなわれていることは，ページやアクションのプログラムの中の権限情報の制御方法を確認すればよい．フレームワーク設定
ファイルやアクションの中で制御している場合は，グループ内のアクセス制御が異なる可能性がある．
エラー処理によるループのあとに権限情報が操作されないことは，エラー処理のアクションのプログラ
ムの中で権限情報を保持しているセッション変数が変更されていないことを確認すればよい．

テストシーケンス削減
本研究で提案するアクセス制御に関するテストについて考察する．アクセス制御が正しくおこなわれているかテストするには' 権限操作アクションが正しく動作しているか，閲覧不可能なページが閲覧不可能であるかを確認しなくてはならない．グループ  に対するテストにおける，アクセス制御を考慮したテストシーケンスの最大数は，以下の式で求められる．
グループ  のページ全てに対して，全ての初期ページからの経路の総数 ×     ＋  
しかし，この計算では小規模なシステムのテストでも組合せ爆発を起こしてしまう可能が高い．
本研究で提案した基準に基づいたテストシーケンスでは，その数は以下の式で表される．
＜権限操作アクション網羅とグループ網羅＞
 の権限情報が付加，変更する遷移ラベルの数 ×  −  × ＋  の権限情報が破棄する遷移ラベルの数 ×   ×＜権限操作アクション網羅とページ・アクション網羅＞
 の権限情報が付加，変更する遷移ラベルの数 ×   ＋   ＋  の権限情報が破棄する遷移ラベルの数 ×   ＋ ＜パス網羅とグループ網羅＞
 の権限情報が付加する遷移全てに対して全ての初期ページからの経路の総数 ＋  の権限情報が変更する
遷移全てに対して全ての初期ページからの経路の総数
×   −  ＋  の権限情報が破棄する遷移全てに対して全ての初期ページからの経路の総数 ×   ×
＜パス網羅とページ・アクション網羅＞
 の権限情報が付加する遷移全てに対して全ての初期ページからの経路の総数 ＋  の権限情報が変更する遷移全てに対して全ての初期ページからの経路の総数 ×    ＋   ＋  の権限情報が破棄する遷
移全てに対して全ての初期ページからの経路の総数 ×  ＋ 網羅的にテストシーケンスを考えると，任意のページから他のグループのページおよびアクションに対してテストすることが必要となるが，我々の提案手法では，権限情報の変更が起こった後のページから他のグループへのテストを行う．権限情報の変更を行うアクションはアプリケーションの総ページ数に比べて非常に少ないため，提案手法により大幅にテストケースを削減することができる．
ま た ，適 用 例 で あ る 卒 業 論 文 題 目 登 録 シ ス テ ム は ，()) ) などを利用した単体テストによって各アクションに対するテストを十分に行うことができ，またアプリケーションでは統一された方法で一般的なアクセス制御を行っているため，一般的な多くのアプリケーションでは，権限操作アクション網羅とグループ網羅によるテストシーケンスで十分だと考えられる．

まとめ
本研究では，アプリケーション開発の一例として，卒業論文題目登録システムの開発を行った．この卒業論
文題目登録システムを例に従来のテスト手法におけるアクセス制御に関してのテストの問題点を考察し' アクセス制御に関するテストのコスト削減をおこなうためのテストシーケンス生成手法を提案した．提案した基準は
 節で述べたことを確認することによって全てを網羅するテストと同等の事を確認することができる。今後の課題として，テストシーケンス自動生成ツールを作成が挙げられる．

謝辞
本研究を進めるにあたり熱心な御指導をいただいた蜂巣吉成先生，野呂昌満先生，沢田篤史先生，渥美紀寿先生，大学院生のみなさまに深く感謝致します．

参考文献
 渥美紀寿，桑原寛明，金子伸幸，山本晋一郎，阿草アプリケーションのためのページ
清滋：高信頼生成プログラムのテスト手法，コンピュータソフト
ウェア' '* %' +