about
products
contact
6grid project
Designing
セキュアグリッドファイルシステムは、 SFS (Self-certifying File System)GSI (Grid Security Infrastructure)の 2つの基盤技術の上に開発されています。 前者はマサチューセッツ工科大学 David Mazières助教授の率いるグループによって開発されており、非常に興味深い機能を多く提供しています。そのうち、最も注目すべき機能はデータの機密性で、ネットワークを流れるデータは暗号化されます。後者は Globus Projectによって開発されたデファクトスタンダードとなっているグリッドのセキュリティ基盤です。その最も重要な機能はシングルサインオンで、ユーザは自分の秘密鍵のパスフレーズを一度入力したあとは、グリッド上のプロセッサやデータストレージといったリソースを自由に利用できるようになります。
これら5つのバイオ関連研究者たちの要求に応えるために、我々は2つの技術を、それらの重要な機能を失うことなく組み合わせました。具体的には、シングルサインオンの認証後、リモートの複数のファイルシステムを動的にマウントできる、利便性とセキュリティに優れたグリッドファイルシステムを開発しました。
Implementation
我々はプロトタイプとしてGSIのライブラリを利用し、 SFSとは独立したサーバ (GSI-SFS Key Server) とクライアント (GSI-SFS Key Client) を作成しました。 GSI、SFS、GSI-SFS Key ServerとClientからなるシステム全体を GSI-SFSと呼んでいます。
図: GSI-SFSの構成
GSI-SFSは、最下層のNFS、SFSが拡張した層、GSI-SFSが拡張した層の 3つの層から成り立っています。 NFSはUNIXで最も一般的に利用されているネットワークファイルシステムです。最下層にNFSを利用しているため、GSI-SFSはNFSをサポートする多くのシステムで利用することができます。 SFSはNFSを拡張した、セキュリティに優れたネットワークファイルシステムで、 NFSをグローバルファイルシステムへと拡張します。 SFSは公開鍵認証でユーザとホスト間の相互認証を行い、認証に成功するとローカルのNFSアクセスを暗号化してリモートへ転送します。
SFSの公開鍵認証手法は小規模なストレージ共有では有効ですが、グリッド環境では非常に多くのユーザが多くのホストを利用するという問題があります。SFSをそのまま利用した場合、グリッドのユーザは自分の公開鍵を利用する全てのホストに登録しなければなりません。公開鍵は改竄されてはいけないので、ユーザは何らかの方法で安全に公開鍵をサーバに登録し、また、ホストのIDも安全に取得しなければなりません。このため、グリッドでSFSを利用することは非常に困難です。

この問題を解決するために、GSI-SFS Key Server (gsisfskeyd) とClient (gsisfskey)を開発しました。gsisfskeydとgsisfskeyはSFSの鍵の登録を、GSIを利用して安全に自動化します。認証の流れは以下のようになっています。

  1. 認証が必要になると、SFS Agent (sfsagent)がgsisfskeyを実行
  2. gsisfskeyはgsisfskeydに接続し、GSIで相互認証
  3. 認証に成功するとgsisfskeydはユーザのSFS鍵ペア(公開鍵と秘密鍵)を生成
  4. gsisfskeydは生成した公開鍵をSFSサーバに登録
  5. gsisfskeydは生成した秘密鍵、ホストID、ユーザのホームディレクトリの 位置を、GSIを利用し暗号化してgsisfskeyに転送
  6. gsisfskeyは受信した秘密鍵をsfsagentに登録
  7. gsisfskeyはホストIDとホームディレクトリの位置をsfsagentに通知
GSI-SFSを利用するには、以下のソフトウェアがインストールされ、設定されている必要があります。現在のGSI-SFSでは/etc/passwdを使用してユーザのホームディレクトリを取得するので、SFSは/etc/passwdに記述されている通りのパスでホームディレクトリをエクスポートしている必要もあります (将来のバージョンで改善予定です)。
  • NFSをサポートしたオペレーティングシステム
  • Globus Toolkit >= 2.0 のGSI
  • SFS 0.7.2
  • Cコンパイラ (バイナリ形式での配布はしません)
GSI-SFSは以下のシステム上で開発、テストされています。
これ以外のシステムで試された場合は動作の可否を教えていただければ幸いです。
本ソフトウェアは登録ユーザーのみダウンロード可能です。ダウンロードを希望する方は先ずご登録ください。登録2,3日以内にダウンロードに必要なパスワードが送られます。
ダウンロードしたファイルを解凍し、できたディレクトリに移ります。
・例:
$ tar xvfj gsisfskey-x.x.x.tar.bz2
$ cd gsisfskey-x.x.x
GSI-SFS Key Server/ClientはAutotoolsに対応しているので、一般的な"./configure"、"make"、"make install"の手順でインストールできます。
インストールオプションを指定してMakefileを生成するには "configure"スクリプトを使用します。ここで、Globus Toolkitのインストールされているディレクトリと "flavor"を指定する必要があります。重要なオプションを以下に示します。
オプション 意味 デフォルト
--prefix GSI-SFS Key のインストール先 /usr/local
--enable-ipv6 IPv6 を有効にする 無効
--with-globus-prefix Globus Toolkit のインストールされているディレクトリ $GLOBUS_LOCATION(環境変数)
--with-globus-flavor Globus Toolkit の"flavor" $GLOBUS_FLAVOR(環境変数)
・例:
$ ./configure --prefix=$GLOBUS_LOCATION --with-globus-flavor=gcc32dbg
次に、"make"、"make install"します。
・例:
$ make
$ su
# make install
RPM (RPM Package Manager) を利用して、ビルド、インストールすることもできます。この場合、$GLOBUS_LOCATION と $GLOBUS_FLAVOR が設定されている必要があります。
・例($GLOBUS_LOCATION は環境変数として設定されているとします)
# GLOBUS_FLAVOR=gcc32dbg rpmbuild -tb gsisfskey-x.x.x.tar.gz
# rpm -Uvh /usr/src/redhat/RPMS/i386/gsisfskey-x.x.x.i386.rpm
# rpm -Uvh /usr/src/redhat/RPMS/i386/gsisfskey-server-x.x.x.i386.rpm
GSI-SFS Key Server を起動するには、gsisfskeydを実行します。現在のバージョンでは、設定ファイルは使用しません。全てのオプションはコマンドラインから指定します。コマンドラインオプションを調べるには、"--help"オプションをつけて実行してください。
・例:
# gsisfskeyd --help
# gsisfskeyd &
もしinitscriptとchkconfigに対応したシステムを使っているのであれば配布ファイル内の起動スクリプトを利用できます。しかし、ハードコーディングされているパスやオプションがあるためカスタマイズして使ってください。
・例:
# cp gsisfskeyd.init /etc/init.d/gsisfskeyd
# cd /etc/init.d
# vi gsisfskeyd (環境に合わせて編集)
# chkconfig --add gsisfskeyd
# service gsisfskeyd start
サーバはTCPポートの2657で接続を受け付けます。リスニングしているか確認してください。
・ 例:
# netstat -lt (Linuxシステムの例)
...
tcp6 0 0 *:2657 *:* LISTEN
...
GSI-SFS Key Client (gsisfskey) の設定は必要ありません。 SFS Client (sfscd) が動作しているか確認してください。
この章では、以下の状況を仮定しています。
  • GSI、NFS、SFS、GSI-SFS Server がサーバコンピュータ上で設定され、 動作している
  • GSI、NFS、SFS、GSI-SFS Client がクライアントコンピュータ上で設定され、 動作している (SFSの仕様により、サーバとクライアントは同一のコンピュータ であってはいけません)
  • ユーザはクライアントにログインしている。
まず、GSIのプロキシを有効にします。
・例:
$ grid-proxy-init (この後、パスフレーズを入力)
SFS鍵を手動で取得するにはgsisfskeyコマンドを使用します。 "--help" オプションでオプション一覧を見ることができます。
・例:
$ gsisfskey --help
以下の例では、ユーザはリモートのSFSサーバでエクスポートされているルートディレクトリを指すシンボリックリンクを作成しています。
・例:
$ gsisfskey --symlink gsisfsserv.myorganization.org
$ cd gsisfsserv.myorganization.org
SFSの鍵登録を自動化するには、"--initiate" オプションを使用して gsisfskeyをSFSの "certprog" (外部認証プログラム) として登録します。
・例:
$ gsisfskey --initiate
$ cd /sfs/gsi-home/gsisfsserv.myorganization.org
-