アクセス制御機構を有するセキュア WebDAV の開発
電子政府等の大規模組織に適したドキュメント共有・協調編集システム
松原克弥1)

端山貴也2)

北川和裕3)

桝田義一4)

1)

株式会社 イーゲル matsu@igel.co.jp

2)

株式会社 イーゲル taki@igel.co.jp

3)

慶應義塾大学 政策メディア研究科 kaz@w3.org

4)株式会社 SRA 先端技術研究所 masuda@sra.co.jp

概要：
インターネットで広く使われている HTTP 通信プロトコルを拡張した WebDAV は、地理的に離れた複数のユーザによるドキュメント等の協調作成および共有のためのプラットフォーム技術として注目されている。WebDAV 基
本プロトコルは、プロトコル仕様にアクセス制御のための機構を定義していない。既存の WebDAV システムの多くは、HTTP ユーザ認証等の外部技術を組み合わせることでアクセス制御の実現を行っているが、設定が細かく管理が煩雑となり、大規模なシステムには適用が難しい。本開発では、企業や政府で使われるような大規模システムのアクセス制御メカニズムとして注目されているロールベース・アクセス制御（RBAC）を用いて、アクセス制御機構を持つセキュア WebDAV システムの設計および実現を行った。

1

背景

クセス制御機能を提供するが、抽象度が低く柔軟

インターネット上で文書共有に HTTP が広く用性を欠くため、ユーザの利用環境に対応させ難い。

いられている。WebDAV は、HTTP を拡張したもの

また、文書のアクセス制御機能のみが提供され、で、地理的に分散したユーザによるドキュメント

ユーザ管理や権限の委譲については別途機能をの共有および協調オーサリングのための機能を必要とする。

提供する。WebDAV は、分散オーサリングシステム

他方、近年、アクセス制御技術の分野では、ユの主要なサービスとしての地位を獲得しつつあーザの役割に応じたアクセス制御（RBAC: Role

り、情報基盤のひとつとしての活用が期待されてBased Access Control）が注目されている。従来いる。

一般的なアクセス制御方式に比べ、RBAC はより高しかしながら、現在の WebDAV は、基本的にセ次元で抽象度の高いアクセス制御が可能であり、キュリティの確保を意識しておらず、ファイルの下位のシステムとは独立したシステムとして構読み込み、更新、消去などの操作に関する許可・成できる。RBAC は既にいくつかの商用システムで不許可の制御も行われていない。従って現状では採用され、今後さらに普及と改良が進むと考えら電子政府等の機密性を要する文書を取扱う環境れる。電子政府のように、役割に応じた権限が与での利用には向かない。

えられている組織や機関で、担当者が頻繁に入れWebDAV のセキュリティ向上策のひとつとして、現在、IETF においてアクセス制御の機能を提供す替わるような利用場面においては RBAC によるアクセス制御が有効である。

るプロトコル（WebDAV ACL）の標準化が進められている。WebDAV ACL は、従来一般的なタイプのア1/8

2開発の目的
本開発では、WebDAV のセキュリティおよびアク• インターネットからの不特定多数のアクセスセス制御機能の課題を解決するために、現在利用にさらされる WebDAV システムから RBAC 管理情されている暗号機能 SSL をセキュアな通信路とし報を分離することで、クラッカによる攻撃からて利用した、WebDAV に対して RBAC を用いたアクRBAC 管理情報をより保護し易い構成が可能とセス制御機能の設計と実装について述べる。このなる。

設計・実装においては、ユーザのアクセスモデルには、RBAC モデルを用いるが、WebDAV に RBAC モ• RBAC システムを独立にすることで、さまざまなデルに基づいた ACL 機能の通信プロトコルとして、WebDAV 実装システムに適用することが容易にWebDAV を拡張した WebDAV ACL を利用した。

なる。

開発においては、RBAC 認証システムを独立したサーバとして実装した。さらに、RBAC インタフェ• 複数の WebDAV システムをひとつの RBAC システースおよびデータは、WebDAV ACL との整合性を高ムで一元的にアクセス制御管理を行うことがめるため XMLSchema で規定している。従って、任できる。

意の XML を支援している任意のアプリケーション• RBAC システムを WebDAV 以外のシステムへ流用およびサーバから利用することができる。
また、WebDAV に RBAC を導入するために、既存することができる。の WebDAV プロトコルの拡張を試みた。WebDAV はセッションレスのシステムであるが、RBAC は逆に本設計で構築するシステム構成を図 1 に示す。

セッションを意識したシステムを想定している。

各モジュールは、以下のような役割を果たす。

従って、二つのシステムのギャップを埋め、整合性をたかめるため RBAC を WebDAV に応用する際にWebDAV RBAC クライアント：
RBAC による認証、資源アクセスの許諾を行

既存の WebDAV プロトコルの拡張を行った。

う WebDAV クライアント。

上記の WebDAV RBAC サーバ、クライアントおよび RBAC サーバそれぞれを実現した。実現した

WebDAV RBAC サーバ：

WebDAV RBAC サーバは、既存の RBAC 機能を保持しない WebDAV クライアントからでも RBAC 機能を用

RBAC を用いた認証セキュリティ機能を有いた利用が可能である。従って、汎用 WebDAV ク

する WebDAV サーバ。WebDAV RBAC クライアン

ライアントからも、RBAC に基づいたアクセス制御トに資源アクセス機能を提供する。RBAC サーを利用可能な実装を実現している。

バを用いてユーザの認証、資源アクセスの許諾を行う。

3 設計
3.1 システムアーキテクチャ

RBAC サーバ：

本開発では、アクセス制御情報を管理する RBAC

ユーザの情報、ロール、パスワードの管理システムと RBAC システムの提供する情報を用いを行う。また、資源のアクセス権の管理も行て WebDAV リソースのアクセス制御を行う WebDAV

う。RBAC データベースのフロントエンドとしRBAC モジュールを組み込んだ WebDAV システムのて実現され、様々なサーバと通信可能。

2 つのシステムに分離する設計を行った。RBAC システムと WebDAV システムを分離することによる利点を以下に示す。
2/8

WebDAV RBAC サーバ

WebDAV RBAC
クライアントHTTP 通信

WebDAV RBAC モジュール

WebDAV RBAC
クライアントモジュール

HTTP 通信

WebDAV RBAC
GUI クライアント

RBAC サーバ

HTTP 通信

HTTP 通信

WebDAV RBAC
クライアントモジュール
SQL 問い合わせ

RBAC 管理クライアント

PostgreSQL
デ タベ

テム

RBAC
データベース

図1システムアーキテクチャ

RBAC データベース：の要求を出す。

RBAC に関するデータの管理、資源のアクセス権に関するデータの管理を行う。RBAC サーバの2. クライアントが RBAC 機能を持つ場合、RBACためのバックエンドデータベース。RBAC サーバ

サーバにユーザ名、ロール名、パスワードをが管理するユーザおよびロールに関するデー送る。

タを管理する。
3. WebDAV RBAC サーバは、クライアントから受クライアントが WebDAV サーバ上の資源にアクけ取った情報を RBAC サーバに送り、ユーザセスする場合、WebDAV サーバはクライアントから認証を行う。ユーザが認証された場合は、送られた、ユーザ名、ロール名、パスワードを基RBAC サーバは、WebDAV RBAC サーバにセッシに認証を行い、資源アクセスの許諾を行い、要求ョン ID を送る。

された資源をクライアントに提供する。
4. WebDAV RBAC サーバは、クライアントにセッ実際の処理の流れは、次のようになる。

ション ID を送る。以後、クライアントは、
セッション ID を基に WebDAV の資源にアクセ

1. クライアントから WebDAV RBAC サーバに資源スする。
3/8る)
5.

WebDAV RBAC サーバは、RBAC サーバと共同しDeassignUser(ロールへのアサインを解除て資源アクセスの許諾を行う。

する)
GrantPermission(ロールにパーミッショ6.

資源アクセスが許可された場合、クライアンンを割り当てる)

トから要求された操作を資源に対して行う。

RevokePermisiion(ロールへのパーミッシ
ョン割り当てを解除する)

3.2 プロトコル
複数のサーバから構成される本システムでは、System Functions

WebDAV クライアントと WebDAV RBAC サーバ間およCreateSession（セッションの作成）

び WebDAV RBAC サーバと RBAC サーバ間の通信プ

DeleteSession（セッションの削除）

ロトコルを設計する必要がある。

AddActiveRole（アクティブロールの追加）
DropActiveRole（アクティブロールの削3.2.1 RBAC プロトコル

除）RBAC プロトコルは、RBAC 仕様に規定されプリ

CheckAccess（アクセス権限のチェック）

ミティブ呼び出しとそのレスポンスを記述可能としなければならない。本プロトコル設計では、Review Functions

XML を用い、リクエストとその属性を記述可能とAssignedUsers(ロールにアサインされたした。また、ヘッダには、ユーザの認証方式およユーザの一覧を得る)

び認証情報を示すタグを定義した。プロトコルのAssignedRoles(ユーザにアサインされた例を以下に示す。

ロール一覧を得る)<?xml version="1.0" encoding="utf-8" ?><Rbac><RbacHdr><Version>1.0</Version><Auth><HTTPBasicAuth><Realm>davserv.org</Realm><Algorithm>b64</Algorithm><PassPhrase>hhifsdifhds==</PassPhrase></HTTPBasicAuth></Auth></RbacHdr><RbacBody><Method>CreateSession</Method></RbacBody></Rbac>Advanced Reviwe Functions
RolePermissions(ロールに割り当てられたパーミッション一覧を得る)
UserPermissions(ユーザにアサインされたパーミッション一覧を得る)
SessionRoles(セッションにアサインされているアクティブロール一覧を得る)
SessionPermissions(セッションにアサインされているパーミッション一覧を得る)
RoleOperationsOnObject(あるロールが指上記プロトコルで記述可能な CoreRBAC 基本 API

定されたオブジェクトに対して許可されは、以下の 21 個である。ているオペレーション一覧を得る)
UserOperationsOnObject(あるユーザが指Administrative Commands
AddUser(ユーザの追加)

定されたオブジェクトに対して許可されDeleteUser(ユーザの削除)ているオペレーション一覧を得る)

AddRole(ロールの追加)
RBAC 仕様においては、オブジェクトの更新は考DeleteRole(ロールの削除)

慮されていない。そこで本設計では、上記の API

AssignUser(ロールにユーザをアサインす4/8

OPTIONS /dav/ HTTP/1.1
Host: localhost
Authentication: Basic xxxxxxxxxxxxxxxxxxx
RBAC-Session: xxxxxxxxxxxxxxxxxxxxxxxxxx
Content-Length: 0に加えて、オブジェクトの更新を伴う WebDAV のために以下の API を追加した。
AddObject（オブジェクト登録の追加）

アクティブロール変更要求

DeleteObject（オブジェクト登録の抹消）

有効なセッションへのアクティブロールの追加および削除は、RBAC 専用メソッドを用いて、ヘ3.2.2 WebDAV プロトコルの拡張

ッダに追加削除したいロールを指定する。

WebDAV クライアントと WebDAV サーバ間のプロ
トコルでは、RBAC 導入に伴い、セッションの概念

RBAC /dav/ HTTP/1.1
Host: localhost
Authentication: Basic xxxxxxxxxxxxxxxxxxx
RBAC-Session: xxxxxxxxxxxxxxxxxxxxxxxxx
RBAC-Roles: +staff, +manager, -president
Content-Length: 0を導入する必要がある。セッションに関連して追加が必要となるプロトコル拡張を示す。
以下に、各リクエストにおけるメッセージ作成方法およびレスポンスからの情報取得方法につセッション破棄要求

いて述べる。

セッション破棄を要求する場合は、RBAC 専用メソッドを使用して、破棄するセッションの ID をセッション作成

リクエストヘッダに指定する。

セッション作成要求は、セッション要求専用コ
マンド RBAC を用いたリクエストを WebDAV サーバ

RBAC /dav/ HTTP/1.1
Host: localhost
Authentication: Basic xxxxxxxxxxxxxxxxx
RBAC-Session-Close: xxxxxxxxxxxxxxxxxxxxx
Content-Length: 0に送ることで行う。このとき、ユーザ情報を HTTP
Basic ユーザ認証方式に従って指定する。
RBAC /dav/ HTTP/1.1
Host: localhost
Authentication: Basic xxxxxxxxxxxxxxxxxxContent-Length: 0

3.3 アクセス権
アクセスチェックが必要な対象および権利は、リクエストの種類および対象リソースの状態にユーザが WebDAV サーバおよび RBAC サーバによよって異なる。

り正しく認証されると、セッションが作成され、セッション ID がレスポンスに含まれて返送され

表 1 に、各メソッドと必要なアクセス権をまとめる。

る。また、セッションが有効な間の全てのレスポ

本モジュールは、各 DAV 操作に応じて必要なアンスのヘッダには、セッション ID とセッションクセス権を判断し、RBAC 通信機能モジュールを介のアクティブロールが示される。

して RBAC サーバにアクセスチェックを要求する。

HTTP/1.1 201 Created
RBAC-Session: xxxxxxxxxxxxxxxxxxxxxxxxx
RBAC-Roles:
Content-Length: 0

DAV リクエスト時のセッション指定
レスポンスで得られたセッション ID を記録し、次回以降のリクエストの送信時にヘッダに指定する。

5/8

表 1 WebDAV メソッドとアクセス権の対応WebDAV メソッド
GET
HEAD
OPTIONS
PUT（対象が存在する）
PUT（対象が存在しない）
PROPPATCH
PROPFIND
COPY（コピー先対象が存在する）
COPY（コピー先対象が存在しない）
MOVE（移動先対象が存在しない）
MOVE（移動先対象が存在する）
DELETELOCK（対象が存在する）
LOCK（対象が存在しない）
MKCOL
UNLOCK

4

確認するアクセス権
対象に関する read 権
対象に関する read 権
対象に関する read 権
対象に関する write‑content 権
親コレクションに関する bind 権
対象に関する write‑propaties 権
対象に関する read 権
コピー元対象に関する read 権，コピー先対象に関する
write‑conten と write‑propaties 権
コピー元対象に関する read 権，親コレクションに関する bind権
移動元親コレクションに関する unbind 権，移動先親コレクシ
ョンに関する bind 権
前述の権利に加えて移動先親コレクションに関する unbind 権
親コレクションに関する unbind 権
対象に関する write‑content 権
親コレクションに関する bind 権
親コレクションに関する bind 権
対象に関する unlock 権

ソフトウェア開発ッション作成およびアクセス権チェックを行い、前章で述べた設計に基づいてソフトウェア開レスポンスのフックでは、オブジェクトの更新情発を行った。
対象プラットフォームを表 2 に示す。

報を取得し、RBAC サーバに通知する機能を持つ。

以下にそれぞれの機能モジュールの実装方法

4.3 WebDAV RBAC クライアントの概要について述べる。

既存の WebDAV クライアント cadaver を改造し4.1 RBAC サーバて、3.2.2節で述べたプロトコル拡張処理を実装

PostgreSQL の埋め込み SQL 機能を用いて RBACした。また、Java を用いて GUI クライアントを実データベースへのアクセスを実装した。また、ク装した。

ライアントからのリクエストメッセージを処理

4.4 RBAC 管理クライアントするための HTTP 通信処理、XML 解析処理を実装しRBAC サーバと直接 HTTP 通信を行い、RBAC 管理た。

コマンドのリクエストおよびレスポンスを処理

4.2 WebDAV RBAC モジュールする CUI クライアントを実装した。

Apache バージョン 2 の DSO モジュール機能およびフィルタ機能を用いて、WebDAV モジュールの前後でリクエストおよびレスポンスをフックする形の実装を行った。リクエストのフックでは、セ6/8

表 2 動作環境
WebDAV サーバ環境
マシンアーキテクチャ
OS
WebDAV サーバ
RBAC サーバ環境
マシンアーキテクチャ
OS
Javaクライアント環境
マシンアーキテクチャ
OS
Java

5

Intel Pentium プロセッサ
Linux 2.4 (TurboLinux 8 Server)
Apache 2.0.27 以降
Intel Pentium プロセッサ または Motrola PowerPC プロセッサ
Windows 2000 以降 または MacOS 10.2 以降
J2SE 1.4.2 以降
Intel Pentium プロセッサ または Motrola PowerPC プロセッサ
Windows 2000 以降 または MacOS 10.2 以降
J2SE 1.4.2 以降

まとめとが可能となる。

本稿では、RBAC 仕様に基づくアクセス制御を実第 2 の用途として、オープンソフトウェア開発

現するための RBAC システム、および、RBAC シスに見られるような、地理的に離れた複数の開発者テムを用いたセキュア WebDAV システムの設計・によるソフトウェアの共有ストレージ構築が考開発について述べた。RBAC は、組織構造と親和性えられる。WebDAV システムによるバージョン管理が高いアクセス制御モデル、必要最小限のアクセにより、ソフトウェア開発工程を適切に管理し、ス権行使、管理の容易性等の特徴により、大企業各モジュールのプログラマやベータテスタ等のや政府等の大規模組織におけるアクセス制御に役割に応じた適切なアクセス制御を RBAC で実現適している。WebDAV は、シンプルなプロトコル仕できる。

様、HTTP の自然な拡張による多種プラットフォー

第 3 に、テレビ会議のような分散したユーザがムのサポート、ロックやバージョン管理等の分散インターネットを介して打ち合わせや議論を行

協調オーサリングのための機能等、電子ドキュメう際の共有ホワイトボード構築の基盤として用ントをはじめとするあらゆるリソースの分散協いることを考える。HTML オーサリングツールや調アクセスの基盤プラットフォームとしててきWiki 等と組み合わせることで、インターネット上し て い る 。こ れ ら の 特徴 を 統 合 した セ キ ュ ア

で会議出席メンバ専用の分散協調作業スペース

WebDAV システムは、以下のようなシステム構築にを安全にかつ容易に構築できる。

用いられることが想定される。
第 1 に、電子政府やコンソーシアム等の広範囲に分散する特定多数組織のユーザによる安全な情報共有およびオーサリングのシステムが考えられる。インターネットのようなオープンネットワーク環境を使ったシステム構築が行われる場
合にも、WebDAV が持つ HTTP の特徴と RBAC の安全性を兼ね備える本システムにより、従来システムとの親和性、安全性、運営の容易性を両立するこ
7/8

6

参考文献

[1] RFC2518 "HTTP Extensions forDistributed Authoring -- WEBDAV"
http://www.ietf.org/rfc/rfc2518.txt[2] RFC3253 "Versioning Extensions to
WebDAV (Web Distributed Authoring andVersioning)"
http://www.ietf.org/rfc/rfc3253.txt[3] RFC2617 "HTTP Authentication: Basicand Digest Access Authentication"
http://www.ietf.org/rfc/rfc2617.txt[4] RFC2616 “Hypertext Transfer Protocol -HTTP/1.1”
http://www.ietf.org/rfc/rfc2616.txt[5] 情報処理推進機構, “WebDAV システムのセキュアな設定・運用に関する調査”,
http://www.ipa.go.jp/security/fy14/reports/
webdav/,[6] Internet Draft “WebDAV Access ControlProtocol”
http://www.ietf.org/internet-drafts/draft-i
etf-webdav-acl-13.txt

8/8