6. DataONE メンバーノードサポート

DataONE はデータリポジトリの連合体であり、その目的は、 データリポジトリのソフトウェアシステム間の相互運用性を改善して、 科学的データの将来的利用のための保全を進めることである。 Metacat は DataONE に参加するように設定することができる。 この章では、 DataONE というデータ集合体、そのアーキテクチャ、 そしてMetacat を DataONE システムのノードとして参加させる方法に ついて説明する。

6.1. DataONE とは何か?

DataONE プロジェクトは科学者、技術者、司書、社会科学者の共同事業であり、 国スケール・地球スケールの地球観測データを保全しアクセス可能な状態にする ため、頑強で相互運用性があり安定的なシステムを構築することが目的である。 合衆国の国家科学基金(NSF) からの支援を受けていて、 DataONE の協力者たちは、各リポジトリが異なる基本ソフトウェアを使用して 異なるデータ・メタデータ標準をサポートしている場合でさえも 完全に相互運用可能なデータリポジトリの分散 ネットワークを作り上げるため、技術的・資金的・組織的に安定的な やり方に集中している。 DataONE は共通のウェブサービスプログラミングインタフェイスを定義して DataONE の主なソフトウェア部品が障害無く通信できるようにしている。 DataONE システムの部品には以下のものがある。

  • DataONE Service Interface
  • Member Nodes
  • Coordinating Nodes
  • Investigator Toolkit

Metacat は DataONE Member Node として運用するのに必要なサービスを 実装している(後述)。 そのサービスインタフェイスは、それ以上の特殊化をしなくとも、 他の異なる科学的なソフトウェアツール(データ管理、分析、可視化、その他の 科学的ライフサイクルの部分に用いるもの)がMetacat と直接通信できる ようにする。 これは、サーバにしてもクライアントツールにしても科学的ソフトウェアを書く 過程を能率的にしてくれる。

6.2. DataONE Service Interface

DataONE は相互運用性を、軽量だが協力な REST 式ウェブサービスによって 達成している。それはさまざまなデータ管理ソフトウェアシステムに実装することが でき、それらのシステムが効率的に相互通信し、データ、メタデータや他の 科学的オブジェクトを交換できるようにする。 この DataONE Service Interface は、 DataONE に参加させたいソフトウェア部品のために 通信プロトコルと技術的な期待を定義した公開標準である。 このservice interfaceは 4つの異なる階層 に分割されている。 注意するべきことは、所与のソフトウェアシステムにはそのリポジトリに 関係する階層しか実装できないということである。 たとえば、データをただ集積するだけのシステムは 一般公開されているデータセットに対する匿名アクセスを提供する Tier 1 インタフェイスしか実装できない。 その一方で Metacat のような完全なデータ管理用のシステムは 4階層全部を実装することができる。

  1. Tier 1: 読み取りのみ、匿名のデータアクセス
  2. Tier 2: 読み取りのみ、認証とアクセス制御付き
  3. Tier 3: 完全な書き込みアクセス
  4. Tier 4: 複製(リプリケーション)サービス

6.3. メンバーノード

DataONE において、メンバーノードはネットワークの中核を表現している。 それは個々の科学コミュニティを表現しており、 各コミュニティはそのコミュニティのデータ・メタデータを管理保全し、 コミュニティの人たちにデータ提供・管理、アクセス用のツールを提供している。 DataONE はそのような個々のリポジトリが相互作用するための標準的な方法を 提供しており、また DataONE 連盟においてメンバーノードが協調できるように 手助けしている。 これはメンバーノードが互いにサービスを提供できるようにする。 たとえばバックアップと障害回避のためにデータの複製をすることなど。 メンバーノードになるには、リポジトリはメンバーノードの サービスインタフェイスを実装し、 そしてその後 DataONE に登録しなければならない。 Metacat はこの実装を自動的に提供する。そして Metacat をDataONE のメンバーノードとして登録するための 簡単な設定手段を提供する(後述の「設定」節を見よ)。 Metacat を配置している場合は、メンバーノードになることは 比較的簡単である。しかし気をつけて欲しいのだが、 DataONE は永続性と保全性を目的としているのであり、 従って DataONE のノードになることを選ぶということは DataONE の使命の一部となって長期的なデータ保全を実行するという ことを意味するのだ。

6.4. Coordinating Nodes

DataONE Coordinating Nodes は メンバーノードがお互いに簡単に相互作用できるようにし、 DataONE 連盟全体として統一された見た目になるようにサービスを 提供する。 Coordinating Nodes によって提供される主なサービスは、

  • すべてのメタデータの検索用インデクス、データ発見のためのウェブポータル
  • ユニークな識別子をデータを保有しているメンバーノードに割り当てる 解決サービス
  • CILogonInCommon に基づいた共有アカウント認証
  • メンバーノードのポリシー指定に応じてデータを複製するための リプリケーション管理サービス
  • 保存されているオブジェクトが妥当性を維持しているか確認するための 不変性チェック
  • メンバーノードの登録と管理
  • DataONE 連盟全体 にわたってデータへのアクセスを記録する

地理的に離れた 3カ所のCoordinating Nodes がcoordinating services を 提供している。その場所は カリフォルニア大サンタバーバラ校、 ニューメキシコ大、オークリッジキャンパスである。 Coordinating Nodes は完全に冗長な方法で設置されており、 どれかがオフラインになっても他のノードが中断することなく サービスを提供し続けられる。 DataONE はサービス内容を以下のURL で見えるようにしている。:

https://cn.dataone.org/cn

また DataONE の検索ポータルは以下で利用できる。

6.5. Investigator Toolkit

科学者が DataONE においてデータとメタデータに簡便にアクセスできるように するため、3番目の部品は、サービスインタフェイスを通じて DataONE と恊働するようになっており、DataONE において データを発見して管理して分析して視覚化することができるような ソフトウェアツールのライブラリである。 たとえば、DataONE では、メタデータエディタ(たとえば Morpho)、 データ検索ツール(たとえば Mercury)、データアクセスツール (たとえば ONEDrive )、データ解析ツール(たとえば R)に DataONE のメンバーノードやCoordinating Nodes と相互作用する 機能を組み込んだものを公開する計画である。 その結果として、科学者はどの DataONE メンバーノードからでも、 Metacat ノードと同様に、データにアクセスすることができるし、 R環境の中から直接アクセスすることもできるようになるだろう。 加えて、あるひとつのメンバーノードと恊働するように作られた ソフトウェアツールは他のノードとも恊働するはずであり、 それゆえ研究者にとって有用なソフトウェアのツールキットひと揃いを作成する 効率がとても高くなる。

DataONE サービスは REST ウェブサービスであり、 どの言語で書かれたソフトウェアであっても DataONE と相互作用するように 適応させることができる。 加えて、DataONE と恊働するようにツールを変更する手間を省くために、 一般的なプログラミング言語(Java, Pythonのような)用のライブラリが 提供されており、DataONE のサービスにアクセスするための単純な 関数呼び出しが使えるようになっている。

6.6. Metacat をメンバーノードとして設定する

Metacat を DataONE のメンバーノードとして設定するのは、 標準の Metacat 管理用設定ユーティリティを使用すればよい。 そのユーティリティにアクセスするには、 次のURLを開く。:

http://<yourhost.org>/<context>/admin

ここで <yourhost.org> は metacat が動作しているサーバの名前を 表している。また <context> は Metacat がインストールされた ウェブコンテクストの名前である。 管理ユーティリティを開いたら、DataONE 設定のリンクをクリックする。 すると以下の画面が表示されるはずである。

_images/image068.png

Metacat を DataONE ノードとして設定するための設定画面

Metacat を DataONE ネットワークのノードとして設定するには、 上図に示した設定項目を設定する必要がある。 ノード名は、ユーザインタフェイスにノードリストとして表示される時に 使われる短名である。 たとえば、DataONE のノードのひとつは ‘Knowledge Network for Biocomplexity’ である。 またノードについての説明を、分野や目的を含めて、簡潔に1文か2文で 入力する。

ノード識別子(Node Identifier)は、DataONE によって割り当てられた ユニークな識別子で、時間の経過によってノードの物理的な場所が変わったとしても このノードを同定するためのものである。 Metacat がDataONE Coordinating Nodes に登録されたら (登録はこのフォームの一番下にある’Register’をクリックすると実行される)、 ノード識別子は変更するべきでない。 登録後にノード識別子を変更しないことはきわめて重要である 。その行為は DataONE ネットワークとの接続を破壊してしまう。 この項目を変更することは稀な状況の時のみなされるべきである。 それは、既存のDataONE メンバーノードのためのプロバイダとして動かすために 新しい Metacat が準備された場合である。この場合は、この入力欄に、 既存の妥当なノード識別子を設定することができる。

Node Subject と Node Certificate Path は関連しており、 ノードの正しい運用にとってきわめて重要なものである。 メンバーノードがDataONE において動作するには、 X.509 証明書を入手して、このノードの同定できるようにし、また 他のノードやクライアントアプリケーションと SSL を使った安全な 通信ができるようにしなければならない。 この証明書は DataONE の証明機関から入手できる。 証明書を入手したら、 openssl のようなツールを使って その証明書の subject 欄に記載されている正確な識別名を 調べて、それを Node Subject 欄に入力すること。 Node Certificate Path には証明書ファイルを置いたシステム内の場所を 入力する。 証明書ファイルが保護されているかどうか確認すること。 そのファイルには DataONE 内でそのノードを認証するのに使用する 秘密鍵が格納されているからである。

Note

Tier 2 および上記の理由のため、Metacat メンバーノードは クライアント証明書を要求するように設定された Apache を 使わなければならない。詳しい説明はこの章の最後に記す。

Enable DataONE Services チェックボックスは、DataONE ネットワークと 同期するかどうかを決めるものである。 このチェックボックスがチェックされていない時は、 DataONE Coordinating Nodes はまったく同期しようとしない。 しかしチェックされると、DataONE はそのノードに定期的に連絡し、 メタデータの内容をすべて同期する。 DataONE ネットワークに加わるためには、このチェックボックスを チェックして DataONE が この Metacat システム内の個々のオブジェクトに 関するメタデータを受け取ることができるようにしなければならない。 このチェックボックスによる切り替えは、メンテナンスや停電によって ノードをDataONE から切り離す必要がある時のような稀な場合のために 用意されている。 チェックボックスがチェックされると、DataONE は Synchronization Schedule 欄に指定されているスケジュールで ノードに連絡する。 上のダイアログに示した例では、同期は 3分ごとに、秒針が 10秒の時点で発生する。 このスケジュールの書き方は Quartz Crontab Entry の文法に従っており、 柔軟なスケジュール設定が可能である。 管理者がもっと低頻度なスケジュールを望むなら(1日1回のような)、 Hours 欄の * を具体的な時間(たとえば 11 )に、 Minutes 欄を具体的な値に( 15 のように)変更することで、 毎日 11:15 に同期するようにスケジュールを変更することができる。

Replication の部分は、ノード全体、およびMetacat に格納されているオブジェクトに 対するリプリケーションの設定に使用する。 Accept and Store Replicas チェックボックスは、このノードの管理者が、 他のメンバーノードからデータとメタデータを複製してこのノードに格納する ことを許可するかどうかを明示するのに使う。 自分のノードに複製できるようにすることを推奨する。そうすることで ネットワーク全体の拡張性や安定性が増すからである。 3つの”Default” 入力欄は、このノードにあるデータ・メタデータについて 特に指定がない場合の複製方針を設定する。これはシステム用メタデータを 持っていないオブジェクト(たとえば DataONE に準拠していないクライアント から持ち込まれたデータ)に使われる。 Default Number of Replicas は他のメンバーノードにオブジェクトの複製を 何個保管するのかを決める。 0以下の数値は複製を作成しないことを表す。 加えて、複製用ノードを選ぶときに優先的に使用するノードのリストや、 複製用ノードとして使用しないノードのリストを指定することができる。 このことにより、メンバーノードは、 パートナーとなるノードと双方向的な合意のもとで サイト全体を複製することができるようになる。 Default Preferred NodesDefault Blocked Nodes は、 DataONE によって対象ノードに割り当てられている NodeReference 識別子を、カンマ区切りのリストにしたものである。

これらのパラメータが正しく設定したら、 Register ボタンを押して DataONE Coordinating Node に登録依頼を送ること。 ボタンを押すと、このMetacat について説明した登録用文書が生成され、それが Coordinating Node の登録サービスに送信される。 この時点で、あとは DataONE の管理者がノード登録を承認するのを待つのみである。 承認の過程について詳しくは DataONE web site を参照すること。

6.7. アクセス制御の方針

Metacat は当初からシステム内のオブジェクトに対するきめ細かいアクセス制御を サポートしてきた。 DataONE は Metacat で前から使われているシステムと互換性のある単純で効果的な アクセス制御システムを考案した。 DataONE システム内のオブジェクト(データオブジェクト、科学的メタデータ オブジェクト、そしてリソースマップ)ごとに、 SystemMetadata 文書が、オブジェクトをシステム内で管理するのに必要な 決定的メタデータを記述する。 このメタデータは RightsHolder 欄と AuthoritativeMemberNode 欄を持っており、 オブジェクトの取り扱いについて最終的な権限を持っている 人物やノードをリストするのに使われる。 加えて、 SystemMetadata にオブジェクトの AccessPolicy を記述できる。 この AccessPolicy は DataONE 内の他の人物、グルーブ、システムに対して 追加のアクセス権限を与えるルールを含んでいる。 たとえば、ひとつのデータファイルに対して、2人のユーザ(アリスとボブ)は そのオブジェクトを変更することができ、一般の人々はそのオブジェクトを 閲覧することができる、というような。 これらの権限を拡張する明示的なルールが無い場合は、 Metacat は RightsHolderAuthoritativeMemberNode のみがそのオブジェクトに対する 権利があり、また Coordinating Node がそのオブジェクトに対する SystemMetadata を管理することができる、というルールを適用する。 以下に、例として、アリスとボブにオブジェクトに対する読み書き権限がある データセットに適用されるべき AccessPolicy を示す。

...
<accessPolicy>
    <allow>
      <subject>/C=US/O=SomeIdP/CN=Alice</subject>
      <subject>/C=US/O=SomeIdP/CN=Bob</subject>
      <permission>read</permission>
      <permission>write</permission>
    </allow>
</accessPolicy>
...

これらの AccessPolicies は SystemMetadata 内に埋め込むことができる。 これは MNStorage.create サービスや MNStorage.update サービスを通して オブジェクトが提出される時に併せて埋め込まれるか、 または CNAuthorization.setAccessPolicy サービスを使って設定することができる。

6.8. 複製対象として設定する

DataONE はデジタルオブジェクトを複数のメンバーノードに複製することで 頑強な保全環境を可能にするように設計されている。 DataONE 内のどのメンバーノードも、Tier 4 インタフェイスを実装していれば、 オブジェクト複製のための対象として動作するように申し出ることができる。 現時点では、Metacat の設定でこの複製機能のオン/オフを切り替えることができる。 ‘Act as a replication target’ チェックボックスをチェックすると、 Metacat は DataONE の Coordinating Nodes に、他のノードのオブジェクトの複製を 収容することができるということを通知する。 そのすぐ後、Coordinating Nodes はMetacat にシステム全体のオブジェクトを 複製するように通知し、そして複製が開始されるだろう。 それらのオブジェクトは Metacat カタログにリストされるようになるだろう。

Note

Metacat の将来のバージョンでは、ノードの複製方針についてより詳細な 指定ができるようになるだろう。複製を希望するオブジェクトを限定したり、 オブジェクトサイズやオブジェクト数、複製元のノード、オブジェクトの フォーマットによって制限する、など。

6.9. オブジェクトの複製方針

アクセス制限に加えて、個々のオブジェクトは ReplicationPolicy も 持つことができる。 これは、DataONE が、障害回避やバックアップの目的でそのオブジェクトを DataONE 内の他のメンバーノードに複製することを試みるべきかどうかを 決定するものである。 オブジェクトの RightsHolder および AuthoritativeMemberNodeReplicationPolicy を設定することができる。 これには、何個の複製を管理するべきか、その複製をどのノードに優先的に収容するか、 またどのノードに複製を収容させないか、を記述する欄が含まれている。

これらの ReplicationPolicies は SystemMetadata 内に埋め込むことができる。 これは MNStorage.create サービスや MNStorage.update サービスを通して オブジェクトが提出される時に併せて埋め込まれるか、 または CNReplication.setReplicationPolicy サービスを使って設定することができる。

6.10. DataONE System Metadata の生成

Metacat をメンバーノードにしたら、既存の内容に対して System Metadata を生成しなければならない。 これは、Metacat 管理用インタフェイスの複製設定画面において呼び出すことができる。 初めは、Metacat はローカルの内容( localhost エントリ)に対してのみ System Metadata を生成する必要がある。 Metacat が他の Metacat サーバとの複製に参加している場合は、同様に、 複製されたレコードに対して System Metadata を生成することは有用であろう。 複製された内容に対する System Metadata を生成する前に、 複製の相手方の管理者と DataONE の管理者の両方と相談するように。

_images/image069.png

System Metadata を生成するための複製設定画面

6.11. Apache の詳細設定

これらの Apache 設定は、Metacat を Tier 2 以上のメンバーノードとして機能させるために きわめて重要である。

...
AllowEncodedSlashes On
AcceptPathInfo      On
JkOptions +ForwardURICompatUnparsed
SSLEngine on
SSLOptions +StrictRequire +StdEnvVars +ExportCertData
SSLVerifyClient optional
SSLVerifyDepth 10
SSLCertificateFile /etc/ssl/certs/<your_server_certificate>
SSLCertificateKeyFile /etc/ssl/private/<your_server_key>
SSLCertificateChainFile /etc/ssl/certs/<CA_chain_file>.crt
SSLCACertificatePath /etc/ssl/certs/
...

ここで <your_server_certificate><your_server_key> は Apache が使用する証明書と鍵の組み合わせであり、クライアントに対して サーバの同一性を証明するためのものである。 また DataONE 認証機関の証明書(DataONE の管理者から入手する)を SSLCACertificatePath で指定したディレクトリに追加して その認証機関によって署名されたクライアント証明書の妥当性検証ができるように する必要がある。 DataONE は CA チェーンファイルも提供しているので、ディレクトリベースの CA 設定の代わりにそれを使うこともできる。 メンバーノードを DataONE の CA チェーン用に設定する時は SSLCACertificateFile 指令を使うべきである。 これらの変更を適用する場合は、Apache を再起動するべきである。

cd /etc/ssl/certs
sudo c_rehash
sudo /etc/init.d/apache2 restart

6.12. DataONE 識別子を使用できるように Tomcat を設定する

/etc/tomcat/catalina.properties を編集して以下を追加する。

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true
org.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH=true