SEの現場2004
SE shop.com SEの現場を購入する
SEの現場2004
   
過去記事
第4回 データベースへの経路を守る
第3回 セキュリティ3要素とデータベース機能をマッピングしてみると……(その2)
第2回 セキュリティ3要素とデータベース機能をマッピングしてみると……(その1)
第1回 セキュリティを強化するって……

誌面記事
マンガでわかる
会社・業界図鑑2004
気になる会社の状況と、業界でのポジションが一目でわかる。転職者・新入社員必見!!
SEの職場を拝見
日本オラクル、サイバードなど、「こんな会社で働きたい」職場を持つ企業に突撃取材。本誌未収録写真もアップ。
データベースのセキュリティを考える
今、重要な課題として挙げられるセキュリティの強化。なかでもデータの保護は最も重要です。データは通常データベースに格納されていますが、データベースの中にあれば大丈夫とは言い切れません。この連載ではデータベースのセキュリティについて皆さんと一緒に考えていきたいと思います。
クイズで実践
成功するSEの交渉術
この連載では、SEが獲得すべき交渉のスキルについて、会話形式の例題にそって解説していきます。現場での交渉は毎日が真剣勝負です。ここでは会話に沿って示される選択肢のなかから「これだ」と思うものを選ぶことにより、あなたの交渉スキルをチェックできます。では、さっそく始めましょう。
矢澤久雄の「プロのコード、アマのコード」
「プロらしいコードとは何か?」って聞かれたら、あなたは、何と答えますか? 『プログラムはなぜ動くのか』の著者矢澤久雄がプロのプログラミングを懇切丁寧に教えます。
新人PMに贈る、53通の手紙
え、今日から、プロジェクトマネージャー?期待と不安に満ちた新人PMに贈る現場感が満ちたエールです。
あなたは「もの作り派?」
「マネジメント派?」
 
あなたはどちらの道を選びますか? 自分のキャリアを、限りなくシンプルに考えるためのガイド。
トム・デマルコ インタビュー
プロジェクトマネジメントの神様 トム・デマルコに聞く「PMに必要なもの」。本誌未収録部分も掲載。
SEのための情報源
〜ユーザーグループ・雑誌・書籍〜
『SEの現場 2002〜2004』に掲載した、SEが読むべき雑誌、書籍、ユーザーグループを一挙紹介!
登録記事  
  第5回

データベースサーバーとクライアント間の暗号化を考える

著者顔写真
株式会社システム・テクノロジー・アイ 取締役
星野真里
2004/09/21

 今、重要な課題として挙げられるセキュリティの強化。なかでもデータの保護は最も重要です。
 データベースは、データを効率的、かつ安全に保護・格納するための機能を備えています。しかし、データベースを利用する側の意識は、パフォーマンスの向上やフェイル・オー
バーなどに偏りがちで、データの安全性については最低限の状態となっている場合も少なくありません。そもそも、セキュリティを重点に考えた場合、データベースはどのような機能
を提供しているのでしょうか。

 ネットワークにおけるセキュリティの進歩は、目覚しいものがあります。
 たとえば、以前は当然のように利用していたtelnet、ftp、rlogin、rshなどのプロトコルやサービスは、今や過去の遺産となっている気がします。
 そして、これらのセキュリティ・リスクの回避をすべく、SSHやVPNなどの普及が驚異的な勢いで進んでいます。
 「で、データベースは?」 と、聞かれれば、データベースそれ自体が高度なセキュリティ機能をサポートしてきたにも関わらず、誰もが当然のように活用しているとはとてもいえな
い状況だと思います。

 では、早速ですが、問題です。

☆ ☆

【問題】
インターネットによって商品の販売を行うショッピングサイトのデータベースに格納されるデータは、以下の手順でデータベースに格納されます。

 この流れの中で、暗号化すべき部分はどこですか?

●暗号化の威力と必要性

 データを守る方法としてもっとも効果的なものの1つが暗号化です。どんなに強固なシステムであっても、そのシステムに格納されるデータを使う以上、データとしては存在するわけ
ですから、そのデータが盗み見られる危険性も存在することになります。
 ここで、もし盗み見られたとしても、意味がわからないように暗号化しておけば、苦労して盗み出して頂いた方には骨折り損のくたびれ儲けもご提供できます。データベースは、ソ
フトウェアを組み合わせて最終的にたどり着く「データの器」です。器に至るまでの経路の中で、データが盗聴される可能性がないとは言えません。
 よって、すべての経路で暗号化すべきです。
 ただし、(3)、(4)については、選択するソフトウェアによっては暗号化できない場合もあります。たとえば、httpサーバーからアプリケーション・サーバーまでの接続にAJP13プロト
コル*を使用している場合には、秘密鍵には対応していないなどの問題が発生します。一方、この間のプロトコルをhttpsで接続できれば、一貫した秘密鍵による暗号化ができることに
なる訳です。
 つまり、システム設計時には、どこまで暗号化するのかを決定した上で、必要なソフトウェアを選択する必要があります。

*AJP13プロトコル
(http://www.jajakarta.org/tomcat/tomcat-jk2/ja/docs/common/AJPv13.html)

●暗号化の判断基準

  続いて、(4)における暗号化について検証してみましょう。
 まずは、この間を暗号化するか否かの選択から始まります。アプリケーション・サーバーとデータベースサーバーは社内にあるわけですから、このサーバー間は安全な社内LAN上にあ
り、この部分を暗号化する必要はないと考えることもできます。
 また、暗号化と復号はCPUリソースの使用量の増加を伴います。その負荷を十分に検証したうえでなければ、暗号化の本番採用はできないというのも厄介な話です。社内からの情報漏
洩が問題になる昨今、社内LANだから安心とあぐらをかいているわけにはいきません。社内LANであっても暗号化を検討すべき、負荷テストをするべきということになります。

 では実際に、Oracleを題材に暗号化の設定を見ていくことにします。Oracleでは、サーバー・クライアント間の接続はOracleNetを使って行います。まずは、クライアントのSQL*Plus
からOracleNetでデータベースサーバーに接続し、select文を発行した際にネットワークを流れるデータを確認してみます。これは、いたって簡単な作業です。ネットワーク管理ツール
の中には、パケットを監視し、そのデータの中身を見せてくれるものは山とありますからね(シェアウェアでもありますから、誰でも入手できるものとなりますし…)。

暗号化されていないパケットの例(一部抜粋)

73 65 6C 65 63 74 20 2a |select *| (一部抜粋)
20 66 72 6F 6D 20 63 73 | from cu|
70 74 6f 6d 65 72 20 20 |stomer |
77 68 65 72 65 20 75 73 |where us|
65 72 5f 69 64 20 3d 20 |er_id = |

 大変わかりやすいですね……、つまり、データを盗み見られたら、個人情報が盗まれる可能性もあるということです。インターネット・ショッピングでの個人のカード番号がこんな
風に見られたら、大変です。

●暗号化の実際

 では、ここで、Oracleデータベースを例に、Oracle NetのAdvanced Securityの設定をしてみましょう。
 DBサーバー側のsqlnet.oraに以下の記述を行います。

#SQLNET.ORA - SERVER
sqlnet.crypto_seed="fewkpfrepgomrepogmropegjerpogjpejvvmmrpmfewkpfrepgomrepo"
sqlnet.encryption_server = required
sqlnet.encryption_types_server = (RC4_56)

 クライアント側のsqlnet.oraに以下の記述を行います。

#SQLNET.ORA - CLIENT
sqlnet.crypto_seed="dsdfrpdstrpgrmmpbmprthmtpommbmptbmpotpredsdfrpdstrpgrmm"
sqlnet.encryption_client = required
sqlnet.encryption_types_client = (RC4_56)

 暗号化設定したあとで、先ほどと同じように、SELECT文を実行したパケットを見てみましょう。

C1 FF 40 FE 4E 72 83 0D |..@.Nr..|(一部抜粋)
4E 7C 9B 3B A6 70 9C E9 |N|.;.p..|
E0 4E 5B A9 32 62 76 82 |.N[.2bv.|
5E 64 F5 4E DB 19 35 C3 |^d.N..5.|
5D 5B F4 BC 55 F3 68 0E |][..U.h.|
72 18 A2 62 C3 00 00 00 |r..b....|

 これなら、盗み見られたとしても、データ漏洩に歯止めを掛けられます。
 設定にしても、難しいものではありません。この機能を使うか否かは、システムを作る側の人間が決めることです。負荷テストで問題にならなければ、採用を提案したいですね。

冒頭の問題の答え=すべて(1、2、3、4)


星野真里 (ほしのまり)
株式会社システム・テクノロジー・アイ 取締役。Oracleのチューニング・コンサルティングやセミナー講師として活躍する ITエンジニア。Oracle歴は17年。Oracle認定講師およびIBM WebSphere認定講師。 社内的には、「火消し」と呼ばれるスポット・チューニング作業は最も得意。 『DBマガジン』『ITProfessional』『WebSphereMagazine』などにも寄稿中。

トップページ
(c) 2004 Shoeisha Co., Ltd. All rights reserved.