以下は JE2BWM ほかが作成した翻訳 です。 原文は University of California より GFDL で配付されており、 この翻訳も GFDL に従います。
原文: Account management systems   (翻訳対象の更新日付は 10:44 PM UTC, June 14 2006 です)。

アカウントの管理システム

boinc.gif
(英語のみ)

BOINC プロジェクトのアカウントを作成するために参加者は以下のことをしなければなりません。

そして、選んだプロジェクトごとに以下を行います。

参加者が、N 個のプロジェクトを選んだら、N 個のウェブサイトに行って、 それぞれ N 個のウィザードで手続きを完了せねばなりません。 プロジェクトが多ければ、退屈になってきます。

以下の文では、BOINC が支援するアカウント管理システム について記述します。 このシステムは、 BOINC プロジェクトを見つけて参加する過程の無駄を省きます。 典型的なアカウント管理システムは Web サイトとして実装されます。 参加者の経験することは、以下のようになります。

手作業でやっていたの比べると、この方法で手間が 大変少なくなります。

実装

アカウント管理システムは以下のように動作します。

  1. 参加者は、自分のメタ・アカウントを作成し、プロジェクトを選びます。
  2. アカウント・マネージャは create account RPC を選択されたプロジェクトへ発行し、 アカウントを作成します。
  3. 参加者は アカウント・マネージャから BOINC クライアント・ソフトウエアをダウンロードしてインストールします。 ダウンロードしたインストール・パッケージには、 そのアカウント・マネージャの URL を含む(アカウント・マネージャごとに特有の) ファイルが入っています。
  4. BOINC クライアントが走り、参加者に自分のメタ・アカウントの名前とパスワードを入力するように促します。
  5. BOINC クライアントは RPC をアカウント・マネージャに発行し、 アカウントの一覧を獲得します。 次に、これらのアカウントへクライアントを参加させ(attach)、 計算へと進みます。
アカウントの作成、検索、そして変更 をするための RPC 群の説明は、左記のリンクの先にあります。

セキュリティ

もしアカウント・マネージャのサーバへ侵入することに成功した曲者がいたら、 あり得る危険として、アカウント・マネージャを操ることによって、 悪意あるアプリケーションを走らせるための悪意ある BOINC プロジェクトに接続するような指示を、 接続してくるすべてのクライアントへ出させるかもしれません。

このタイプの攻撃を防ぐために、アカウント・マネージャが配付する URL にはデジタル署名がなされます。 それぞれの アカウント・マネージャ(AM)は、署名鍵 ペアを持っています。 ペアのうちの1つである公開鍵は、 AM の 構成定義ファイルとともに配付され、かつまた すべての RPC の応答に含めて送信されます。 もう一方の秘密鍵は、物理的に安全に保たれ、かつネットワークに接続されていない 計算機に保存して置かねばなりません。 この計算機で URL 群に署名を行います。

URL 群に署名をするには、 BOINC の暗号化ユーティリティ・プログラム である crypt_prog をコンパイルして下さい。 (ソースのダウンロードとコンパイルの手引き は ここにあります)。 鍵ペアを生成し、対象とする URL 群に署名を作って下さい。 ある時点で、恒久的に使う鍵ペアをに責任を持つ必要にせまられるでしょう。 その時点で、対象となる秘密鍵は署名用マシン(ネットワークから隔離してあるもの) に移すべきです。 1つまたは 2つの複製を CD-ROM に作るか、 紙の上に鍵ペアを印刷し、 それらを安全な場所にしまいます。 秘密鍵のその他の複製はすべて抹消して下さい。

ファーム・マネージャ

BOINC を使い大きなクラスタの設定と制御をするシステムを実装するためにも、 AM の仕組みを使うことができます。 そのようなシステムを我々は ファーム・マネージャ と呼んでいます。 ファーム・マネージャではクライアントに細粒度の制御をしたいかもしれません。 たとえば、リザルトの計算を一時停止・再開する能力といったものです。 これは、GUI RPC を用いて可能です(ファーム・マネージャがクライアントと GUI RPC ポートを通じて HTTP で接続できるという前提)。 しかし、ファーム・マネージャはそれぞれのクライアントについて、 使っている GUI RPC ポートと、パスワードを学ばねばならなくなります。 これを救うために、AM 設定ファイル(下記参照)では、各クライアントへの AM RPC 要求で用いる GUI RPC ポートとパスワードを指定できるようにしてあります。

ファーム・マネージャが GUI RPC をプロジェクトへの参加と離脱に使うなら、 ファーム・マネージャはこの目的のために、AM の仕組みを使うべきではありません。 つまり、その AM RPC の応答は、プロジェクトの一覧に何も含まないはずだからです*。 この場合 AM の機能は、システム管理者(sysadmins)に、 ファイルを複写して新しいクライアントを準備することができるようにするということになります。 この AM の仕組みは、新しいクライアントを登録する面倒を1箇所から集中的に行います。

コア・クライアントの機能

BOINC のコア・クライアントは、アカウント・マネージャの情報を保持しておくために、 以下のファイルを使います。

acct_mgr_url.xml
このファイルは、アカウント・マネージャを識別します。 典型的には BOINC クラアントと抱き合わせでインストーラに同梱されています。 その形式は以下のとおりです。
<acct_mgr>
    <name>BOINC アカウント管理システムの名前</name>
    <url>http://acctmgr.com/</url>
    [ <send_gui_rpc_info/> ]
    <signing_key>
1024
ae843acebd4c7250b0fa575d14971b17a56a386a6bb1733d98f4b00460c26159
c8b3217e6cdff938ec0454330c70553fbe3d1f0d0184d8c628db2e093121ee98
8ddbda6e8991879317afccab41f84e9de4903a656f4d3f3e4e7dbc0af9362a05
6ece5ff401a380f3a1d1254d477f7bc84fdcebcca6cb035e776452d3d6d21471
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000010001
.
    </signing_key>
</acct_mgr>

上記の URL は 対象アカウント・マネージャのウェブサイトのものです。

もし上記の <send_gui_rpc_info/> タグがあるなら、 アカウント・マネージャ RPC は、対応するクライアントの GUI RPC ポート番号とパスワードハッシュを応答に含めます(後述)。

acct_mgr_login.xml
このファイルには、メタ・アカウント情報が入っています。 その形式は以下のとおり。
<acct_mgr_login>
   <login>名前</login>
   <password_hash>xxx</password_hash>
</acct_mgr_login>

パスワードの値は、MD5(password_lowercase(login)) を計算してそれを password_hash 要素に入れます。

コア・クライアントが acct_mgr_url.xml を見つけられても、acct_mgr_login.xml が見つけられない場合には、名前とパスワードを入力するよう求めて、 acct_mgr_login.xml の中に格納します。 そして、アカウント管理の RPC を発行します。 コア・クライアントは、 アカウント管理 RPC を実行するにあたり、メニュー項目を提示します。 また、名前とパスワードの変更についてもメニューを示します。

アカウント・マネージャ用 RPC

アカウント・マネージャは、自分の名前とパスワード長の最小値を含み、 さらに <account_manager/> タグを含む get_project_config.php ファイルを 提供しなければなりません。 さらに、アカウント・マネージャは HTTP の POST 要求を使う 下記の RPC を受け入れる必要があります。

URL BASE_URL/rpc.php を指定します。 ここで、 BASE_URL は 対象アカウント・マネージャのウェブサイトの URL です。
入力
<acct_mgr_request>
    <name>John</name>
    <password_hash>xxx</password_hash>
    <host_cpid>b11ddc5f36c9a86ff093c96e6930646a</host_cpid>
    <previous_host_cpid>b11ddc5f36c9a86ff093c96e6930646a</previous_host_cpid>
    <domain_name>host.domain</domain_name>
    <client_version>5.3.2</client_version>
    <run_mode>auto</run_mode>
    <global_preferences>
        <source_project>http://a.b.c</source_project>
        <source_scheduler>http://a.b.c</source_scheduler>
        <mod_time>1144105331</mod_time>
        ... [ global preferences ]
    </global_preferences>
    <project>
       <url>http://setiathome.berkeley.edu/</url>
       <project_name>SETI@home</project_name>
       <suspended_via_gui>0</suspended_via_gui>
       <account_key>397d250e02ec02be8141b8d109d5ec73e5</account_key>
       <hostid>NNN</hostid>
    </project>
    [ ... 他のプロジェクト群 ]
    [ <gui_rpc_port>N</gui_rpc_port> ]
    [ <gui_rpc_password>xxxx</gui_rpc_password> ]
    ...
</acct_mgr_request>
出力
<acct_mgr_reply>
    <name>アカウント・マネージャの名前</name>

    <signing_key>
1024
ae843acebd4c7250b0fa575d14971b17a56a386a6bb1733d98f4b00460c26159
c8b3217e6cdff938ec0454330c70553fbe3d1f0d0184d8c628db2e093121ee98
8ddbda6e8991879317afccab41f84e9de4903a656f4d3f3e4e7dbc0af9362a05
6ece5ff401a380f3a1d1254d477f7bc84fdcebcca6cb035e776452d3d6d21471
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000010001
.
    </signing_key>
    [ <message>ここにメッセージを入れる</message> ]
    [ ... ]
    [ <error>MSG</error> ]
    [ <repeat_sec>xxx</repeat_sec> ]
    <global_preferences>
        [ <source_project>http://a.b.c</source_project> ]
        [ <source_scheduler>http://a.b.c</source_scheduler> ]
        <mod_time>1144105331</mod_time>
        ... [ global preferences ]
    </global_preferences>
    [ 
    <account>
       <url>URL</url>

       <url_signature>
397d250e02ec02be8141b8d196a118d909d5ec73e592ed50f9d0ad1ce5bf87de
e37f48079db76128b20f913a04e911489330a7cab8c346177f1682d236bc7201
42b32665d0d83474bf12aebd97b2bb9a4c4461fa3f0b49bbd40ecfa16715ced7
f72103eb0995be77cac54f253c0ba639a814d3293646ae11894e9d1367a98790
.
       </url_signature>

         <authenticator>KEY</authenticator>
         [ <update/> ]
         [ <detach/> ]
      </account>
        ...
    ]
</acct_mgr_reply>
動作 このメタ・アカウントに結びついているアカウントの一覧を返します。 引数群は以下のとおり。
password_hash
対象のアカウントのパスワードです。 MD5(password_lowercase(name)) を計算した値をここに置きます。
host_cpid
計算機を識別する値です。
previous_host_cpid
前回の RPC で渡された 計算機の識別子。 計算機の識別子は、ときおり変化することがあります。 この引数によって、アカウント・マネージャは計算機の同一性を維持管理できるようになります。
domain_name
この計算機のドメイン形式の名前です。
run mode
現在の走行モードです。 (あり得る値は、always/auto/never のいずれかで、 常時稼働/プレファレンスに従って稼働/停止 を意味します)。
gui_rpc_port, gui_rpc_password
GUI RPC 情報です。 これらが含まれるのは、 <send_gui_rpc_info> 要素が AM URL file にあるときだけです(前出の記事参照)。 gui_rpc_port 要素 の N は GUI RPC に用いるポート番号。 gui_rpc_password 要素のテキスト部分は、GUI RPC に用いるパスワード。
global_preferences
現在のグローバル・プレファレンス。
さらに、プロジェクトの一覧がその一時停止フラグとともに含まれています。

返される値は以下のとおりです。

repeat_sec
次の RPC を発行するまで待つべき時間間隔です。
signing_key
URL 群に署名するときに使う公開鍵です。 この値は符号化した形です。 この値を作るには、BOINC の crypt_prog プログラムを使ってください。
message
参加者に表示するメッセージ。
global_preferences
新しいグローバル・プレファレンス。 要求メッセージに入れたものよりも新しいものがある場合だけ含めます。
各アカウントに対して、以下の項目が返されます。
url
プロジェクトの URL
url_signature
上記 URL の署名。 この値を作るには、BOINC の crypt_prog プログラムを使って下さい。
authenticator
アカウントの認証子。
detach
もしこの要素が存在したら、クライアントはこのプロジェクトから離脱する必要があります。
update
もしこの要素が存在したら、クライアントはこのプロジェクトに接続して、 新しいグローバル・プレファレンスを取り出す必要があります。
ご注意: この XML は上記のとおりの改行がなされている必要があります。 すなわち、<url> 要素と <authenticator> 要素はそれぞれ単一の行でなければならず、 <account> と </account> タグは別々の行に置かねばなりません。

計算機(host) の識別

BOINC では、計算機(host)のために2種類の ID 仕様を使っています。 すなわち、

アカウント・マネージャ RPC の要求には、その計算機の CPID と、 参加しているすべてのプロジェクトにおける DBID (上述)を含みます。

参加者の使っている計算機(host)一覧を保守・維持する方法として以下を提案します。


BOINCの訳のメインページに戻る | (原文のメインページに戻る)
 

最終更新時刻 20:22:14, 2006年10月15日(JST)
Copyright © 2008 University of California. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.
Copyright © 2008 Komori Hitoshi(je2bwm at jarl.com). Japanese translation from English web pages on BOINC. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.