Top Banner
XMLベースの 分散処理システム 伊藤 貴之 情報学研究科 非常勤講師 学術情報メディアセンター COE研究員(客員助教授) 日本アイ・ビー・エム()東京基礎研究所 主任研究員
66

XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師...

Jan 27, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

XMLベースの分散処理システム

伊藤貴之

情報学研究科非常勤講師学術情報メディアセンター COE研究員(客員助教授)日本アイ・ビー・エム(株)東京基礎研究所主任研究員

Page 2: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

自己紹介

1968年生1997年博士(工学)京大なのに神奈川県在住日本アイ・ビー・エム(株)東京基礎研究所勤務 (1992年より)新幹線で京大に出勤

専門分野CG, CAD, CAE, Visualization 分散処理システム、ネットワークセキュリティ、インターネットプロトコル

音楽?

連絡先: [email protected]

Page 3: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

この講義で習得する知識は…多種多様な計算環境が自在に接続できるための基盤技術

インターネット

企業や大学のイントラネット

プロバイダと家庭用PC

携帯電話会社

並列計算システム

Page 4: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

この基盤技術の実現に必要なものは?

インターネット

企業や大学のイントラネット

プロバイダと家庭用PC

携帯電話会社

並列計算システム

例えば、こんな回答が考えられるプラットフォームや開発言語に依存しないシステムデータ書式やAPIの標準化インターネット上での接続性のよさ計算機資源の有効活用セキュリティの確保

Page 5: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

この講義で学ぶ主な項目

XMLデータ書式の標準化

Webサービスインターネットを介した自在な計算機接続の実現へ

グリッド・コンピューティング

計算機資源の透過的な共有による有効活用へ

セキュリティ(電子署名・暗号化)

データの完全性(改ざんを防ぐ)や機密性(盗聴を防ぐ)

Page 6: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

講義内容

XMLWebサービスグリッド・コンピューティング

セキュリティ

総論

Page 7: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

XMLとは … (HTMLと比較して学ぶ)

HTML = Hyper Text Markup Language以前は Hyper Text Modeling Language とも言われていた主にWebブラウザでの表示を目的とするタグを使って文書の構造を定義する (見栄え目的)構造とは: 見出し、本文、段落、引用、画像挿入…

XML = Extensive Markup Language Webブラウザに限定せず、幅広く計算機アプリケーションに用いられるHTML と同様に、タグを用いて文書に木構造を与える拡張性: タグを自由に定義できる

整形式: 記述したタグは必ず閉じないといけない閉じ方1: <aaa> … </aaa>閉じ方2: <aaa ….. />

Page 8: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

HTMLとXMLの例

<PAGE><BODY>

<H1> 伊藤貴之です。 </H1>よろしくおねがいします。<P>

<A HREF=…> メール… </A><IMG SRC=“takayuki,jpg” />

</P></BODY>

</PAGE>

(2) (1)をXML的に書き換えた例

<HTML><BODY>

<H1> 伊藤貴之です。</H1>よろしくおねがいします。<P><A HREF=“mailto:[email protected]”> メールはこちら </A><IMG SRC=“takayuki.jpg”>

</BODY></HTML>

見出し

本文

段落

引用

画像挿入

(1) HTML の例

HTML

BODY

H1 P

AHREF IMG SRC

(3) (2)の木構造を表現した例

Page 9: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

タグを自由に定義できるといっても…

例えば、こんなXMLを処理するためには、あらかじめ何かを知る必要があるのでは?

<book-list><book>

<name> XML </name><publisher> A出版 </publisher><price> 2000 </price>

</book><book>

<name> Webサービス </name><publisher> B出版 </publisher><price> 2500 </price>

</book></book-list>

それぞれのタグの意味は?

bookの下は name, publisher, price の3個で十分?

Price の下は整数?文字列?

Bookは2個で固定?個数制限なし?

Page 10: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

スキーマ

要素(タグ)の種類、出現(場所や順番)などに関する定義

スキーマを記述する言語DTD (Document Type Definition) 要素の名前、親子関係などを記述できるXMLスキーマ

XMLスキーマ要素によって構成されるデータ構造・データ書式を記述できる

XMLスキーマ自体もXMLの一種である

スキーマのおかげで、XMLは計算機どうしの自動処理に向いた言語として使われる妥当性:スキーマに従ったXML文書は計算機が信用できる自己記述性:スキーマ記述言語が動的にXML文書の構造を定義できる

Page 11: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

DTDの例

<PAGE><BODY>

<H1> 伊藤貴之です。</H1>よろしくおねがいします。<P><A HREF=mailto:[email protected]> メールはこちら </A><IMG SRC=“takayuki.jpg”>

</BODY></PAGE>

<!ELEMENT PAGE (BODY)><!ELEMENT BODY (H1, P+)><!ELEMENT H1 (#PCDATA)><!ELEMENT P (A | IMG | #PCDATA)><!ELEMENT A (#PCDATA)><!ELEMENT IMG EMPTY><!ELEMENT A HREF CDATA #REQUIRED><!ELEMENT IMG SRC CDATA #REQUIRED>

PAGEの下にはBODYBODYの下にはH1と1個以上のP

BODYの下には文書Pの下にはA,IMG,文書のいずれかAの下には文書IMGの下には何もない

Aには属性HREFが必須

IMGには属性SRCが必須

XML

DTD

Page 12: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

XMLスキーマの例

<book-list><book>

<name> XML </name><publisher> A出版 </publisher><price> 2000 </price>

</book><book>

<name> Webサービス </name><publisher> B出版 </publisher><price> 2500 </price>

</book></book-list>

<schema><element name=“book-list”>

<complexType><sequence>

<element ref=“book”maxOccurs=“unbounded” />

</sequence></complexType>

</element><element name=“book”>

<complexType><sequence>

<element name=“name” /><element name=“publisher” /><element name=“price” />

</sequence></complexType>

</element></schema>

要素名はbook-list複合型

下にはbook要素(個数制限なし)

要素名はbook

複合型

下にはname,publisher,priceの3要素(1個ずつ)

XML XMLスキーマ

Page 13: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

名前空間

個々の要素名がどこで定義されたのかを明記する方法上位要素にて、【接頭尾=“…”】の形で、個々の要素名がどこで定義されたかを明記

当該する下位要素にて、要素名の前に接頭尾をつける

<unified-book-list xmlns:fb=“http://fbook.xsd” xmlns:db=http://dbook.xsd xmlns=“ubook.xsd” >

<description> 国外書籍と国内書籍の総合リスト </description><fb:book>

<fb:title> XML </fb:title><fb:date> Jan/3/2003 </fb:date><fb:price> 2000 </fb:price>

</fb:book><db:book>

<db:name> Webサービス </db:name><db:publisher> B出版 </db:publisher><db:price> 2500 </db:price>

</db:book></unified-book-list>

接頭尾fbがついているのでfbook.xsdに定義された要素名

接頭尾dbがついているのでdbook.xsdに定義された要素名

3つの名前空間の定義 (fb,db,デフォルト)

Page 14: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

XML関係ツール(1) パーサー

XML文書を解析し、開発言語のデータ構造に変換するソフトウェア

DOMパーサー: XML文書の木構造を生成する

SAXパーサー: XML文書の要素を読むたびにイベントを発する

<soap><body>

<req1><req2>

….

Parser

soap

body …

req1 req2

<soap><body>

<req1><req2>

….

Parser

soap

body

req1

req2

Page 15: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

XML関連ツール(2)データバインディング(開発言語との相互変換 )

スキーマ記述言語 (DTD)<xml …><!ELEMENT purchaseOrder

(customer, comment, items)><!ELEMENT customer

(name, customerId, address)>…

開発言語 (Java)public class purchaseOrder() {

private Customer _customer;private String _comment;private String _items;

Customer getCustomer(){ return _customer; }String getComment(){ return _comment; } String getItems(){ return _items; }

private class Customer {private String _name;….

}….

}

Page 16: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

復習をかねて:XMLを用いることの恩恵

文法の要旨は標準化されている

→汎用的なソフトウェアを多方面に使いまわせる

→計算機どうしの自動処理に向いている

要素名を自由に定義できる

→多様なアプリケーションに利用可能

テキスト(=可視)である

→バイナリデータに比べて理解・デバッグ等が容易

→OSやプログラミング言語に依存しないデータ記述

Page 17: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

講義内容

XMLWebサービスグリッド・コンピューティング

セキュリティ

総論

Page 18: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

Web サービス とは・・・インターネットを使ったオープンな分散処理モデル公開されたサービスプログラムをクライアントが自由に呼び出せる仕組み

クライアント

アプリケーション

インターネット(ウェブ)

要求情報

返答情報

ウェブサーバー

サービスプログラム

Page 19: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

Web ページからWeb サービスへ

Phase1: HTML(静的なWebページ)

ブラウザ

Webサーバー

リクエスト HTML

Phase2: CGI(掲示板・チャット等)

ブラウザ

Webサーバー

データ付リクエスト

動的なHTML

Perl

データ更新

Phase3:動的ウェブ(ゲーム・ショップ等)

ブラウザ

Webサーバー

データ付リクエスト

動的な表示

アプリサーバー

プログラム実行

Phase4:Web サービス

アプリ

Webサーバー

パラメータを含むXML

返り値を含むXML

アプリサーバー

プログラム実行

Page 20: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

メッセージ例:CGI掲示板へのカキコミ

POST /Delivery HTTP/1.1Content-Type: text/plain; charset=utf-8Content-Length: nnn

…はじめまして。伊藤です。…

HTTP/1.1 200 OKContent-Type: text/html; charset=utf-8Content-Length: mmm

<html> …はじめまして。伊藤です。… </html>

Web サーバー

リクエストメッセージ:掲示板へのカキコミ内容を含むリクエスト

レスポンスメッセージ:掲示板へのカキコミ内容を含むHTML

掲示板ユーザー

Page 21: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

メッセージ例:Web サービスの要求と回答

POST /Delivery HTTP/1.1Content-Type: text/xml; charset=utf-8Content-Length: nnnSOAPAction: “http://com.com/service/

<soap:Envelope> …はじめまして。伊藤です。… </soap:Envelope>

HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: mmm

<soap:Envelope> …こちらこそはじめまして。サーバーです。… </soap:Envelope>

Web サーバー

リクエストメッセージ:SOAPによる要求情報

レスポンスメッセージ:SOAPによる返信情報

アプリケーションによる呼出し

main() {…call();…

}

Page 22: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

Web サービスを実現するための典型的なアーキテクチャ

クライアント サーバー

ウェブサーバー

HTTPサーバー

SOAPエンジン

SOAPエンジン

サービスプログラム

返答情報

要求情報

要求情報を含むSOAP

返答情報を含むSOAP

アプリケーション

要求情報

返答情報

Page 23: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

SOAP (Simple Object Access Protocol)

Web サービスでデータ等を運ぶために用いられているXMLベースのメッセージ形式Envelope = 封筒、Header = 封筒書き、Body = 便箋SOAP自体は通信プロトコルを選ばない(HTTPでもFTPでもSMTPでも…)が、HTTPを用いる場合が最も多い2種類のインタフェース:SOAP-Messaging と SOAP-RPC

SOAPヘッダー:主に通信上の付加情報を含む

SOAPボディー:主にアプリケーションデータを含む

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv=….>

<soapenv:Header> …

</soapenv:Header> <soapenv:Body …. >

......

</soapenv:Body></soapenv:Envelope>

Page 24: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

SOAP-Messaging:アプリケーションのXML文書をSOAPで運ぶ方法

SOAPボディーの下にXML文書を挿入する挿入するXML文書には名前空間を定義する必要がある

<unified-book-list xmlns:fb=… xmlns:db=… xmlns=… >

<description> 総合リスト </description><fb:book>

<fb:title> XML </fb:title><fb:date> Jan/3/2003 </fb:date><fb:price> 2000 </fb:price>

</fb:book><db:book>

<db:name> Webサービス </db:name><db:publisher> B出版 </db:publisher><db:price> 2500 </db:price>

</db:book></unified-book-list>

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv=….>

<soapenv:Header> …

</soapenv:Header> <soapenv:Body xmlns:ub=…. >

<ub:unified-book-list xmlns:fb=… xmlns:db=… >

<ub:description> …</ub:description><fb:book> … </fb:book><db:book> …</db:book>

</ub:unified-book-list></soapenv:Body>

</soapenv:Envelope>

アプリケーションのXML文書 SOAP文書

Page 25: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

SOAP-RPC: サーバーの関数やメソッドを呼び出すためにSOAPを使う方法リクエスト側のSOAPメッセージには、引数が含まれるレスポンス側のSOAPメッセージには、返り値が含まれる

クライアント サーバー: server.com

SOAPエンジン

中間コード

add(){receive(

“add”, a,b);c=add(a,b);send(c);

}

add(a,b){return a+b;

}

サービスプログラム

main() {a=1;b=2:c=add(a,b)

}

アプリケーション 中間コード

add(){send(

server.com,“add”, a,b);

c=receive();return c;

}

SOAPエンジン

add,a,b

c

Page 26: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

SOAP-RPC におけるSOAPの例

main() {a=1;b=2:c=add(a,b)

}

アプリケーション

<soapenv:Body xmlns:calc=“http://Calc”><calc:add xmlns:xsi=“http://XMLSchema-instance”

xmlns:xs=“http://XMLSchema”><calc:a xsi:type=“xs:int”> 1 </a><calc:b xsi:type=“xs:int”> 2 </b>

</calc:add></soapenv:Body>クライアントからのリクエストSOAPの一部要求名add, 変数名a,b, 変数の型int, 値1,2 が書かれている

<soapenv:Body xmlns:calc=“http://Calc”><calc:addResponse xmlns:xsi=“http://XMLSchema-instance”

xmlns:xs=“http://XMLSchema”><calc:c xsi:type=“xs:int”> 3 </a>

</calc:addResponse></soapenv:Body>

サーバーからのレスポンスSOAPの一部返信名addResponse, 変数名c, 変数の型int, 値3 が書かれている

Page 27: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

Web サービスの普及に必要なもの:サービスレジストリとWSDL,UDDIサービスレジストリサービスプロバイダによって公開されたサービスを登録し、サービスリクエスタが発見できるようにする仕組み

WSDL: サービスを公開するための記述言語UDDI:サービスレジストリのインタフェースの記述言語

サービスプロバイダStep 3. サービス要求&提供

SOAP

サービスリクエスタ

サービスレジストリ

UDDI Step 1.サービス登録依頼

WSDL

Step 2.サービス検索&紹介

WSDL

Page 28: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

上記定義に基づいたサービスのアドレス等

手続きechoのためのSOAPメッセージの定義

入力echoRequestと出力echoResponseを持つ手続きecho

メッセージ型 echoRequest と echoResponse

データ型 MyComplexType

WSDLの例

<definitions … ><types>

<schema><complexType name="MyComplexType">

<sequence><element name="simpleItem" … />

</sequence></complexType><element name="MyElement“

type="MyComplexType" /> </schema>

</types><message name="echoRequest">

<part element="MyElement" /> </message><message name="echoResponse">

<part element=MyElement" /> </message>

<portType name="Echo"><operation name="echo“

parameterOrder="MyElement"><input message="echoRequest" /><output message=echoResponse" />

</operation></portType><binding name=“EchoSoapBinding” ….>

<operation name="echo"><input name="echoRequest">

<body …><input><output name="echoResponse">

<body …></output>

</operation></binding><service name="ComplexEchoService">

<port binding="EchoSoapBinding" …><address location="http://..." />

</port></service>

</definitions>

Page 29: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

WSDLで用いられる代表的な要素名

[types]要素の型に関する宣言の一式を括ったもの[complexType]複数の要素を下にもつ要素の型宣言[message]要素の集合で構成されるXML文書の宣言[operation]手続き(関数やメソッド)の宣言[portType] messageとoperationの一式を括ったもの[binding] プロトコルの詳細を記述するために、messageの詳細を記述した宣言

[service] binding やアドレスなどの集合で表現されるWebサービスの宣言

Page 30: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

WSDLから中間コードを作成するXMLから開発言語(Java等)への変換により、以下の中間コードを自動生成するツールがあるクライアント側:スタブ サーバー側:スケルトン

サーバー: server.com

SOAPエンジン

中間コード(スケルトン)

add(){receive(

“add”, a,b);c=add(a,b);send(c);

}

add(a,b){return a+b;

}

サービスプログラム

クライアント

main() {a=1;b=2:c=add(a,b)

}

アプリケーション 中間コード(スタブ)

add(){send(

server.com,“add”, a,b);

c=receive();return c;

}

SOAPエンジン

add,a,b

c

WSDL

Page 31: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

複数のサービスを動的に接続する~ BtoBtoCの実現へ

サービスプロバイダD

サービスプロバイダC

サービスプロバイダB

サービスプロバイダA

サービスリクエスタ

サービスレジストリ

サービスブローカ

(1) サービス一式の要求

(2) サービスの検索… WSDL一式入手

WSDL C

WSDL D

WSDL A

WSDL B

(4) 個々のサービスの要求・提供

(5) サービス一式の提供

(3) サービスの選択… WSDLからコード生成

Page 32: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

復習をかねて:Web サービスを用いることの恩恵

多くの企業・団体の支持SOAP, WSDL, UDDI などのインタフェースはすべて標準化

インターネットのインフラと相性がよい最初からHTTPを使うことを意識している(注) HTTP以外のプロトコルでも利用可能

XMLの恩恵を継承多様なアプリケーションに利用可能

OSや開発言語に依存しない運用が可能

人間の介在が不要自律的にサービスを検索・要求できる

自律的に複数のサービスを連携できる

Page 33: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

講義内容

XMLWebサービスグリッド・コンピューティング

セキュリティ

総論

Page 34: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

グリッド・コンピューティング

分散した多種多様の情報資源(CPU, 記憶媒体, ソフトウェア, 周辺装置など)を複数の人で透過的に共有できる仕組みを提供する基盤技術

「仮想組織」が情報資源を括る、という考え方に基づく

電気・水道・ガスと同様、接続するだけでいつでも資源にアクセスできる、という環境を目標とする

Grid=電力網、を語源とする

組織A

組織B

組織C

組織D

仮想組織

Page 35: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

Globus ToolkitGlobusプロジェクトによる、Gridのためのデファクト標準(=事実上の標準)ソフトウェアツール群

OS,ハードウェア

高級ミドルウェア

アプリケーション

GSI (セキュリティ)

GridFTP(データ転送)

MDS(情報提供)

GRAM(資源管理)

低級ミドルウェア(Globus Toolkit)

データへのアクセス、データの転送、レプリカの作成や更新、などを実現する機構

資源の状況、有効性、などの情報を統一的に提供する機構

リモートからのジョブの操作や管理、通信、などを実現する資源管理機構

個々の資源の管理体制にあわせながら柔軟なアクセス制御、シングルサインオンなどを実現するセキュリティ管理機構

Page 36: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

Globus Toolkit の貢献と課題貢献:主に科学技術計算の分野において多数の計算機間におけるセキュリティ管理

大規模計算のための資源状況の検索や監視

大規模分散データへの高速アクセス

課題:他の分野にも適用するために…⇒少数の熟達者だけの環境よりも、もっと使いやすい環境へ多数のプロトコルやセキュリティ技術の統一化

高級ミドルウェアの充実システムの仮想化、ワークフローの制御…

Webサービスの考え方を適用

OGSA (Open Grid Services Architecture)

Page 37: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

OGSA (Open Grid Service Architecture)

Grid技術の上にWebサービス技術を結合アプリケーションのみならず、Gridの提供するミドルウェア機能をすべて「サービス」にすることが可能

XMLをベースにして標準化されたインタフェースを適用

Grid

情報提供 資源管理アプリケーションWSDL

SOAP

SOAP

Page 38: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

グリッドからOGSAに移行することで

計算機資源を有効活用するための機能を…Grid: 難解なAPIを勉強しないと利用できないOGSA: サービス化すれば簡単に利用できる

多種多様なセキュリティやプロトコルを…Grid: その都度ユーザーが選択して実装する必要があるOGSA: サービスに隠蔽されているので意識しなくてもよい

異なる計算機や開発言語の接続性は…Grid: その都度考えて実装する必要があるOGSA: XMLベースで標準化されているので容易である

Page 39: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

OGSAのためのWebサービスの拡張(1)サービスインスタンス(実体)の生成・消滅

Webサービスでは、サービスは継続的に稼動するのが原則OGSAでは、動的かつ一時的にサービスを生成・消滅できるファクトリーサービスへの要求で、サービスインスタンスを生成する

サービスインスタンスは明示的に破壊することもできるし、一定期間の寿命をもたせることもできる

資源の最適活用のために、例えば最も手の空いているCPUをそのつど選んでサービスインスタンスを立ち上げる、ということが可能になる

ファクトリーサービス

サービスインスタンス

(1) ファクトリーサービスにインスタンス生成を要求

(2) 指定された計算機上にインスタンスを生成

(3) サービスインスタンスにアクセス

Page 40: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

OGSAのためのWebサービスの拡張(2)ハンドルリゾルバからのWSDL入手

OGSAでは、サービスはGSH(Grid Services Handle)を持つGSH は URI (URL のような固有名詞) として記述するハンドルリゾルバサービスにGSHを送ると、それに対応するサービスの記述言語である GSR(Grid Services Reference)を返すGSRにWSDLのような標準化された言語を採用すると、便利であるGSRに現在稼動しているサービスインスタンスのアドレスを記述できるような機構があると、便利である

ハンドルリゾルバサービス

サービスインスタンス

(1) ハンドルリゾルバサービスにGSHを提示

(3) サービスインスタンスにアクセス

(2) 受信したGSRをもとにコードを生成

Page 41: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

OGSAのためのWebサービスの拡張(3)非同期通知

OGSAでは、リクエストメッセージとは非同期に通知メッセージを送付することができるリクエスタは通知メッセージの依頼、停止、状況照会ができる

例えば、継続的に稼動しているサービスインスタンスから、リクエスタが状況報告を自動受信したいとき、などに便利である

(1) サービスインスタンスに通知メッセージを依頼

(2) リクエストが来なくても通知メッセージを自動送付

Page 42: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

復習をかねて: Grid技術の上にWebサービス技術を結合

Webサービスの恩恵をGrid上で実現計算機資源機能の活用度の向上セキュリティ、プロトコルなどの隠蔽化異なる計算機、開発言語間の接続性の向上

サービスインスタンスの動的な生成サービスを稼動するのに最適な計算機を自在に選択

ハンドルリゾルバによるサービス記述言語の供給サービスインスタンスの状況に応じて動的にサービス記述言語を生成し、クライアント側もそれに応じて動的にコードを生成できる

非同期通知サービスに常時接続していなくても通知を受け取れる

Page 43: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

講義内容

XMLWebサービスグリッド・コンピューティング

セキュリティ

総論

Page 44: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

セキュリティと一言にいっても、いろいろな研究分野がありますが…

暗号化

電子署名

SPAM対策

ウィルス対策

ファイルシステム管理

認証

アカウント管理

不正侵入発見

ファイアウォール

セキュア・シェル

コンテンツ管理

本講義の対象

Page 45: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

本講義が対象とする脅威と対策

脅威なりすまし: 別の計算機のふりをしてメッセージを送る

改ざん:第三者がメッセージを書き換える

盗聴:第三者がメッセージを盗み見る

否認:メッセージ送信者があとになって「送信してない」と言い張る

対策証明書などを用いた認証→なりすまし防止

メッセージ認証コード →改ざん防止

メッセージへの電子署名→改ざん、否認防止

メッセージの暗号化→盗聴防止

Page 46: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

本講義で扱うセキュリティ技術の要旨

電子署名:メッセージの完全性

暗号化:メッセージの機密性

本文

s3De…

本文

本文から算出した署名を添付

メッセージ送付

s3De…

本文

署名検証(受信者による署名の再算出)

本文

検証(再算出)結果が正しければ本文は改ざんされてことを信用できる

本文 Sq7R…

本文を暗号値に差し替える

メッセージ送付

Sq7R…

送信者の用いた鍵に対応する鍵を持っている受信者だけが復号化できる

本文

暗号化により他人には盗聴されない

Page 47: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

前提知識(1) 共有鍵方式暗号…対称鍵方式、秘密鍵方式ともいう同じ鍵を暗号化と復号化の両方に使う

通信相手ごと、通信セッションごとに、対象者だけで鍵を共有し、その外には漏らさないように使う

ストリーム暗号: RC4 (SSLで使われている)ブロック暗号: DES, TripleDES, AES対象者だけで鍵を共有する環境を用意する必要がある

Page 48: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

前提知識(2) 公開鍵方式暗号

送信者の公開鍵で暗号化したら、受信者の私有鍵で復号化

送信者の私有鍵で暗号化したら、受信者の公開鍵で復号化公開鍵: 利用者に無制限に渡せる鍵

私有鍵: 自分だけで利用し、他者に一切渡さない鍵

RSA, DSA, Diffie-Hellmen など機密性が高いかわりに、私有鍵使用時の処理時間が大きい

Page 49: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

前提知識(3) メッセージダイジェスト

ハッシュ関数など、元に戻せない関数を用いる

MD5, SHA1 など電子署名に用いる

Page 50: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

前提知識(4) PKI (Public Key Infrastructure)

信用できる認証機関が、公開鍵証明書と私有鍵のペアを発行する仕組み

私有鍵で電子署名を生成し、公開鍵証明書と一緒に送れば、受信者は公開鍵証明書を用いて電子署名を検証できる

認証機関

文書作成者

公開鍵証明書と私有鍵を発行

s3De…

本文

私有鍵で本文の署名を算出する

s3De…

本文

公開鍵証明書をつけて送信する

文書受信者

公開鍵を使って署名を検証する

Page 51: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

SSL (Secure Socket Layer)

多くのWeb サイトで採用されているセキュリティ技術Web ページだけでなく、Web サービスにも適用可能「なりすまし」「改ざん」「盗聴」を防ぐことができる

サービスリクエスタ サービスプロバイダ

1. 公開鍵証明書の交換

2. 共有鍵の使用合意

3.共有鍵を用いた認証コード算出、暗号化 本文 認証コード

暗号化

Page 52: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

中間サーバー

SSLよりも安全なWebサービスのために:SOAP文書への電子署名や暗号化公開鍵による電子署名で「否認」を防ぐ

中間サーバーによって電子署名や暗号化を解消されないので、中間サーバーによる改ざんや盗聴を防ぐことができる

複数のサービスに対して選択的にセキュリティを適用できる

サービスリクエスタ

s3De…

s3De…

Aの鍵で暗号化 Bの鍵で暗号化

サービスプロバイダA

サービスプロバイダB鍵をもたないので改ざん・盗聴できない

s3De…

s3De…

Aの鍵で復号化

s3De…

s3De…

Bの鍵で復号化

Page 53: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

SOAP文書へのセキュリティの適用方法XML電子署名・XML暗号化のSOAP文書への適用鍵や証明書などをSOAP文書に挿入

受信側送信側

アプリケーションアプリケーション

SOAP構築SOAP構築

署名生成・暗号化署名生成・暗号化

アプリケーションアプリケーション

SOAP解読SOAP解読

署名検証・復号化署名検証・復号化

<SOAP><body>Itoh.T

</body></SOAP>

<SOAP><body>XdRswr..

</body></SOAP>

<SOAP><body>Itoh.T

</body></SOAP>

<SOAP><body>XdRswr..

</body></SOAP>

WebWeb

Page 54: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

署名検証署名生成

署名情報を再生成

XML電子署名の処理手順

….

署名情報を生成

署名対象

ダイジェスト値

署名情報を受取

ダイジェスト値

ダイジェスト値

署名値を受取

復号化ダイジェスト値

暗号化

署名値を生成

ダイジェスト値

算出

算出

署名対象

ダイジェスト値

算出

ダイジェスト値

比較

算出

署名対象

ダイジェスト値比較

算出

署名対象

ダイジェスト値比較

算出

Page 55: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

署名対象の参照 (SHA1でダイジェスト)

署名値算出に用いる署名情報

署名値算出に用いる鍵情報

署名値 (DSA で暗号化)

<Signature … ><SignedInfo>

<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/> <Reference URI=“#SignHere">

<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue>

</Reference> </SignedInfo> <SignatureValue>MC0CFFrVLtRlk=...</SignatureValue> <KeyInfo> … </KeyInfo>

</Signature><Body Id=“SignHere”>

….</Body>

XML電子署名を適用した文書の例

署名対象(ここに対してダイジェスト算出)

Page 56: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

XML電子署名に用いられる主な要素

Signature (署名)SignatureValue (署名値)SignedInfo (署名情報)

CanonicalizationMethod: XML正規化手法SignatureMethod: 署名値算出アルゴリズムReference: 署名対象への参照

Reference (署名対象への参照)Transforms: XML処理手法DigestValue: ダイジェスト値DigestMethod: ダイジェスト値算出アルゴリズム

KeyInfo (署名値算出に用いた鍵の情報)KeyName: 鍵の名前KeyValue: 鍵の実体

Page 57: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

復号化暗号化

共有鍵 S4rGq0sItoh T.

メッセージ暗号化

Itoh T.共有鍵

メッセージ復号化

S4rGq0s

鍵復号化

共有鍵 or私有鍵

共有鍵(自動生成)

メッセージ暗号化

共有鍵(自動生成)

S4rGq0sItoh T.

鍵暗号化

共有鍵 or公開鍵

メッセージ復号化

Itoh T.S4rGq0s

XML暗号化の処理手順

暗号化された鍵も同時に送付

Page 58: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

メッセージの暗号化に用いる鍵の情報

メッセージの暗号化

メッセージ暗号化結果

暗号化アルゴリズム

この鍵によって暗号化されたメッセージの参照

メッセージの暗号化に用いる鍵の暗号化

鍵を暗号化した結果

暗号化アルゴリズム

鍵の暗号化に用いる鍵の情報

<EncryptedData Id='ED' …> <EncryptionMethod Algorithm='http://…/xmlenc#aes128-cbc'/> <ds:KeyInfo …>

<ds:RetrievalMethod URI='#EK' … /> </ds:KeyInfo> <CipherData><CipherValue>DEADBEEF</CipherValue></CipherData>

</EncryptedData>

<EncryptedKey Id='EK' xmlns='http://www.w3.org/2001/04/xmlenc#'> <EncryptionMethod Algorithm="http://.../xmlenc#rsa-1_5"/> <ds:KeyInfo xmlns:ds='http://www.w3.org/2000/09/xmldsig#'>

<ds:KeyName>John Smith</ds:KeyName> </ds:KeyInfo> <CipherData><CipherValue>xyzabc</CipherValue></CipherData> <ReferenceList>

<DataReference URI='#ED'/> </ReferenceList>

</EncryptedKey>

XML暗号化を適用した文書の例

Page 59: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

XML暗号化に用いられる主な要素

EncryptedData (XML文書の暗号化結果)EncryptedKey (鍵の暗号化結果)EncryptionMethod (暗号化アルゴリズム)CipherData (暗号化結果)

CipherValue: 暗号値ds:KeyInfo鍵情報… XML-Signature参照)

ReferenceListこの鍵を用いた暗号化結果への参照リストDataReference: XML文書の暗号化結果の参照KeyReference: 鍵の暗号化結果の参照

Page 60: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

SOAP文書へのセキュリティの適用例

署名値算出に用いた鍵は証明書の中にあるので、鍵情報として証明書を参照している

送信者の認証に用いる証明書(この証明書は、署名に用いた鍵を内部に含んでいる)

署名対象の参照

署名対象

暗号化された部分

メッセージの暗号化に用いた鍵 (暗号化された部分への参照を含む)

署名に関する記述

<S:Envelope …><S:Header> <wsse:Security>

<wsse:BinarySecurityToken … Id="X509Token" > MIIEZzCCA9... </wsse:BinarySecurityToken><xenc:EncryptedKey>

…<xenc:ReferenceList><xenc:DataReference URI="#enc1"/></xenc:ReferenceList>

</xenc:EncryptedKey><ds:Signature>

<ds:SignedInfo>…<ds:Reference URI=“dsig1”> … </ds:Reference>

</ds:SignedInfo><ds:SignatureValue> Hp1ZkmFZ/... </ds:SignatureValue><ds:KeyInfo>

<wsse:SecurityTokenReference><wsse:Reference URI="#X509Token"/>

</wsse:SecurityTokenReference></ds:KeyInfo>

</ds:Signature></wsse:Security> </S:Header>

<S:Body Id=“dsig1”><xenc:EncryptedData … Id="enc1"> … </xenc:EncryptedData>

</S:Body></S:Envelope>

Page 61: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

SOAP文書のセキュリティに用いられる主な要素

Security以下の情報を束ねて SOAPヘッダーに格納する

XML電子署名の情報XML暗号化に用いた鍵の暗号化結果送信者の認証などに必要な情報

BinarySecurityToken送信者の認証などに必要な情報のうち、バイナリ形式のもの例えば、X509証明書、Kerberosチケットなど

UsernameToken送信者の認証などに必要な、ユーザーID、パスワードなど

SecurityTokenReferenceBinarySecurityTokenや UsernameTokenへの参照証明書の中に鍵がある場合、KeyInfo要素の中に記述される

Page 62: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

復習をかねて: SOAPメッセージへのセキュリティ適用

電子署名・暗号化・認証技術の適用証明書などを用いた認証→なりすまし防止メッセージへの電子署名→改ざん、否認防止メッセージの暗号化→盗聴防止

セキュリティの主要なアルゴリズム共有鍵方式暗号公開鍵方式暗号メッセージダイジェスト

SOAPメッセージへのセキュリティ適用… SSLよりも安全性の高いセキュリティメカニズム公開鍵による電子署名で「否認」を防ぐ中間サーバーによって電子署名や暗号化を解消されないので、中間サーバーによる改ざんや盗聴を防ぐことができる複数のサービスに対して選択的にセキュリティを適用できる

Page 63: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

講義内容

XMLWebサービスグリッド・コンピューティング

セキュリティ

総論

Page 64: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

この講義で習得した知識は…多種多様な計算環境が自在に接続できるための基盤技術

インターネット

企業や大学のイントラネット

プロバイダと家庭用PC

携帯電話会社

並列計算システム

XMLデータ書式の標準化

Webサービスインターネットを介した自在な計算機接続の実現へ

グリッド・コンピューティング計算機資源の透過的な共有による有効活用へ

セキュリティ(電子署名・暗号化)データの完全性(改ざんを防ぐ)や機密性(盗聴を防ぐ)

Page 65: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

今後考えうる研究テーマは、例えば…

XMLのさらなる普及XML以前の計算機技術をどのように吸収するか?

ミドルウェアの処理速度の向上

標準化と引き換えに、データは拡大している

ユビキタス機器も視野に入れた分散計算環境現在の携帯電話は、7年前のPCより高性能

新たなセキュリティ対策

新しいシステムには新しい破壊者がつきもの

Page 66: XMLベースの 分散処理システムitot/paper/ItotLJ6.pdf分散処理システム 伊藤貴之 情報学研究科非常勤講師 学術情報メディアセンターcoe研究員(客員助教授)

本講義の課題

講義終了時にお伝えします。

課題提出は、メールで [email protected]へこの資料ファイルは以下のURLからも入手できます

http://hawk.ise.chuo-u.ac.jp/makino-lab/person/itot/lecuture/Kyoto-Lecture2003.pdf